RPC通信原理实战

RPC概念及RPC请求响应流程

RPC概念引入

假设有两个模块,用户和订单

在单体项目中,两个模块被打包到一个包,都处在一个tomcat进程中,用户模块调用订单模块属于同一进程内的本地调用

在微服务项目中,用户模块和订单模块会分别被打成一个包,部署后会运行在两个tomcat进程中,当用户模块调用订单模块方法时,首先将订单服务的maven依赖到两个模块中,然后注入到用户模块中,当调用订单方法时,由于不在同一进程中,需要通过网络调用另一台主机的进程方法,获取到结果后,再通过网络将结果传输回来。

RPC的概念及特点

RPC的作用

1.屏蔽远程调用跟本地调用的区别,调用远程就像是在调用本地

2.屏蔽跨进程跨网络调用底层复杂性,让我们更专注于业务逻辑

常见的RPC实现框架

RPC应用场景

RPC核心技术点和高级特性

RPC核心技术点

序列化技术与通信协议

动态代理

RPC请求调用具体流程

上层开发工作:定义接口,在服务端实现接口,在客户端注入接口并调用接口方法

RPC框架工作:初始化时,为接口生成代理注入到客户端;调用接口时,进行代理实现;然后将数据参数封装到请求中,对请求数据进行序列化,得到二进制数据;然后进行协议编码,把数据填充到协议的某个位置;然后通过客户端网络模块IO将数据发出去;服务端网络模块接收到数据;通过对应协议解码;将得到的二进制数据反序列化;然后调用模块基于传输过来的数据调用具体的接口实现,得到响应数据;响应数据以同样的方式返回客户端。

RPC中的高级特性

服务注册与发现

其他高级特性

RPC的优势

1、让构建分布式应用更容易,解耦服务,容易扩展

2、RPC框架一般使用长链接,不必每次通信都要建立连接,减少网络开销(客户端与服务端建立TCP链接的信道可以不关闭,减少链接时带来的网络开销)

3、RPC框架需要有注册中心,可以动态感知服务变化并可视化

4、丰富的后台管理功能,可统一管理接口服务,对调用方来说是无感知、统一化的操作

5、RPC能做到协议精简,效率更高,私密安全性高(可以不用Http协议进行协议编码解码,用一些精简的二进制协议)

6、RPC的服务治理功能可以让我们很方便的调控流量,参数等

7、RPC是面向服务的更高级的抽象,支持服务注册发现,负载均衡,容错,流量管理等高级特性

RPC实现要点分析

注册中心核心原理

持久节点如果不主动删除就一直在,临时节点如果服务下线就会被删除

JDK动态代理原理

序列化本质及常见序列化方式

通信协议和IO模型

传输层数据传到应用层时是二进制数据,如果用http协议,需要对二进制数据进行协议解码成文本数据。

http协议优缺点

  • 公有协议,通用,利于跨系统通讯
  • 各语言解析库成熟,易于构建异构系统
  • HTTP/1.1协议偏重,体积偏大,性能相对低

自定义通信协议优缺点

  • 协议私有,通信两端要一致
  • 需要自研协议解析库
  • 可以做到协议精简,性能和安全性更高

总结:对于一些开源的RPC框架,大都会自研RPC通信协议,同时也支持HTTP/1.1

IO模型

容错策略

超时重试

调用者调用提供者服务,可能由于提供者出问题出现超时错误,底层会选择尝试调用其他没有出现问题的提供者服务获取返回结果

方案一

时间轮算法

服务熔断降级

消费者调用提供者的接口,提供者的业务代码调用过程中可能会出错,此时可以:

1.不做处理:将错误结果直接返回给消费者

2.降级:对返回结果降级,采用备选的正常结果,但不一定正确

3.熔断:对调用目标设置冷静期,冷静期内到达RPC框架后不对目标发起调用,直接返回降级结果

当服务的失败率到达阈值时,启用服务熔断,进入冷静期,熔断时长过后进入半打开状态,尝试调用服务,若结果返回成功,关闭服务熔断

熔断限流

常见限流算法

令牌桶算法

对突发流量不友好:突发流量大于令牌桶的最大容量时会直接拿满令牌,使得同一时间有大量请求访问资源,服务可能会扛不住。

漏斗算法

以固定的速率放出流量,不管流量来的是否慢/快。可以有效解决突发流量问题。

滑动窗口算法

设置一段时间的流量阈值,在这段时间内,流量不大于阈值时,都会被放行。超过阈值的请求不会被放行。

相关推荐
追寻向上14 分钟前
SQL注入:安全威胁的幽灵与防御体系的构建——从经典攻击到智能防护的演进
网络·sql·安全
Zz_waiting.1 小时前
网络原理 - 6
运维·服务器·网络·tcp
长流小哥1 小时前
Linux网络编程 从集线器到交换机的网络通信全流程——基于Packet Tracer的深度实验
linux·c语言·网络
数字供应链安全产品选型2 小时前
“多模态SCA+DevSecOps+SBOM风险情报预警 “数字供应链安全最佳管理体系!悬镜安全如何用AI守护万亿数字中国?
网络·人工智能·安全
Oliverro2 小时前
嵌入式WebRTC音视频实时通话EasyRTC助力打造AIOT智能硬件实时通信新生态
网络·人工智能·音视频
满怀10152 小时前
【计算机网络】现代网络技术核心架构与实战解析
网络协议·tcp/ip·计算机网络·架构·云计算·网络工程
Web极客码3 小时前
利用 SSH 实现 WordPress 网站的全面安全管理
网络·安全·ssh
Sunlight_7773 小时前
第六章 QT基础:4、QT的TCP网络编程
网络·qt·tcp/ip
一只蒟蒻ovo3 小时前
计算机网络 第二章:应用层(四)
网络·计算机网络