RPC整体设计

89 阅读1分钟

整体结构图

image.png

层次介绍

  • 代理层
提供给客户端一个统一的代理组件,屏蔽内部的实现细节,可以让调用方像调用本地方法一样调用远程方法
类似提供中介的作用
  • 路由层
当存在多个服务时,由路由层来匹配对应的provider服务
1. 可以获取服务地址
2. 从集群服务中筛选
3. 感知provider服务的下线
  • 协议层
1. 数据的序列化/反序列化
2. 协议的组装
  • 注册中心层
对provider的管理,管理其地址、接口、分组等;服务调用方直接订阅注册中心即可;
比如市面上主流的zookeeper、nacos等
  • 容错层
说的直白点就是一些异常情况的兜底处理,比如常写的fallback等
-   超时重试;
-   快速失败;
-   无限重试;
-   出现异常后回调指定方法;
-   无视失败;
  • 服务提供者的线程池
-   io线程和worker线程的拆分;
-   调用结果和客户端请求的唯一匹配;
-   客户端请求后的同步转异步处理;
-   单一请求队列和多请求队列的设计差异性;
  • 接入层
与市面上主流的框架,比如springboot如何整合,提供一个starter