首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
RPC的介绍和架构发展
返回列表
发新帖
RPC的介绍和架构发展
[复制链接]
发表于 2024-9-14 06:45:34
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
RPC概念:
RPC是远程过程调用协议,是一种不必要了解底层网络技能,调用远程计算机服务。
RPC框架的组成:
图1
当总项目的数据量、访问量不断进步,就把他分成多个服务,减轻单体机器的压力。分开的ABC服务之间要相互依靠,要数据,要数据的过程就是rpc。
如果使用常见的http协议,会带上很多不必要的数据,会降低通报数据的效率,我们只想要调用B服务的数据,因此,我们可以自定义一种通报格式。
RPC和http的区别?(口试)
1、RPC服务基于TCP/IP协议;HTTP服务基于HTTP协议。由于HTTP协议是位于TCP协议之上的,以是相比之下,RPC效率更高。
2、虽然RPC效率更高,但HTTP服务开发迭代会更快。
3、HTTP服务的缺点是消息封装痴肥,优势是对服务的提供和调用方没有任何技能限定,自由灵活,更符合
微服务
理念。
RPC架构的演变
最开始的调用:
图2
在调用方直接把提供方写死,然后只能调用这一个提供方。
也就是说,如果提供方出现标题,那么调用方也就找不到调用数据了。
出现的标题就是:调用方不知道自己在调用什么
+注册中心:
图3
这样就可以灵活的去找提供方了。
服务方找注册中心注册,调用方发现注册的提供方,然后调用方就可以调用提供方了。
出现的标题:如果提供方太多了怎么办,怎样选择提供方?
+路由层(
负载
均衡):
图4
负载
均衡可以把哀求分布到多个提供方,以此进步系统的处理
性能
。
故障转移和
负载
均衡是解决
服务器
高可用性和
性能
标题的关键。
如果提供方A出现了标题,那么,就通过路由层调用提供方B,实现提供方的高可用性。
如果路由层出现标题了怎么办呢:
可以调用默认的提供方。
标题:哀求中的数据应该怎么去表现呢,怎样举行序列化和定义数据格式。
增加编码、序列化
图5
这样通过自己写的序列化和编码,可以使数据同一。
但是数据的调用肯定不是人人都能调用的,以是他还必要一个拦截器。这里使用token作为拦截器。调用方写一个token,提供方写一个token,双方的token同等就放行,不同等就不给过。
图6
但是像图6这种注册中心,
负载均衡
算法都是写好的,如果在开发过程中我想添加一个新的
负载均衡
算法大概注册中心,该怎么办呢?
图7
我们可以通过一个SPI来动态的加载注册中心,路由层,编码和拦截器,而且举行同一管理。像springboot的自动装配也是使用SPI。SPI像spring里的IOC的注入。
如果出现了标题,不能直接抛出异常吧,以是如果A挂了,那就调用其他服务,但是如果都挂了,就只能抛出异常了。
图8
这里出现异常之后,展示给调用方看,调用方根据环境,选择对应的容错机制,是故障转移还是忽略。
但是如果调用方发送多个数据,总不能全让提供方A担当了,然后让其他提供方同步等待,这样不可。可以弄一个线程池,吸收之后调用合适的方法。
图9
这样可以进步程序的吞吐环境。
常见的RPC(Remote Procedure Call)框架包罗:
Spring Cloud。由Pivotal公司开源,支持Java语言,提供了一套构建分布式系统的开源框架。
RMI。Java原生的RPC框架,限于Java语言,适用于Java跨
版本
或
防火墙
受限的环境。
Dubbo。由阿里巴巴开发,适用于Java语言,是一款高
性能
、轻量级的RPC框架,适用于大规模分布式系统。
Motan。微博内部使用的RPC框架,开源于2016年,仅支持Java语言。
gRPC。由Google开发,支持多种语言,使用Protocol Buffers(protobuf)作为接口定义语言(IDL),基于HTTP/2协议。
Tars。腾讯内部使用的RPC框架,开源于2017年,仅支持C++语言。
gRPC over HTTP/2。Google开发的RPC框架,支持多种传输协议和
负载均衡
策略。
RPC架构能经久不衰的原因:
1、分布式系统的需求
随着时代的发展,单体无法满足业务需求,RPC作为一种紧张的通讯协议,能够满足分布式系统的需求
2、RPC相关技能的演进
3、多语言的支持
RPC框架支持多种语言,是差异语言编写的程序能举行跨语言远程调用
4、差异场景的需求
差异的应用场景对RPC架构提出了各种需求,如:高并发,低延迟,可拓展性,
安全
性等,RPC就可以根据需求举行针对性的优化和
功能
拓展。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
返回列表
浏览过的版块
Mysql
网络安全
Java
Oracle
DevOps与敏捷开发
移动端开发
分布式数据库
水军大提督
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表