rpc核心

被面试官问过这样一个问题:“假如要你实现一个rpc框架,客户端和服务端你要考虑哪些东西?”

rpc框架负责屏蔽底层的传输方式(tcp或者udp)、序列化方式(xml/json/二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程服务,而不需要关心底层通信细节和调用过程。

rpc的组件一般有服务注册与发现、负载均衡、序列化/反序列化、编解码、网络传输、线程池、动态代理、连接池等。

服务注册与发现,可以采用Eureka或者Nacos。

自定义协议、编解码

所谓协议,就是通信双方事先商量好规则,服务端知道发送过来的数据将如何解析。

网络传输协议

tcp、udp、http、http2.0

 

成熟的rpc框架一般会提供四种调用方式,分别是同步阻塞、异步非阻塞、

rpc一般是长连接。

在回调的时候,需要用到上下文管理器

1、客户端生成请求id

2、客户端生成请求上下文,上下文中包含发送时间、回调函数等信息

3、上下文管理器记录请求id与上下文的映射关系

4、将请求id打在请求包里发给服务端

5、服务端将请求id打在响应包里返回

6、客户端根据响应包中的请求id,通过上下文管理器找到原来的上下文

7、从上下文中拿到回调函数

8、执行回调函数。

 

除了上下文管理器,还有一个超时管理器,用于实现请求包超时的回调处理。

超时管理器会对上下文管理器中的上下文进行扫描,看上下文中请求等待回包是否过长,如果过长,就不再等待回包,直接超时回调,并将上下文从上下文管理器中删掉。

posted on   koushr  阅读(235)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示