若有收获,请记得分享和转发哦
RPC 框架典型的架构
典型的 RPC 架构大致可以分为三个部分:
(1)服务提供者(RPC Server):运行在服务器端,提供服务接口定义与服务实现类。
(2)注册中心(Registry):运行在服务器端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。
(3)服务消费者(RPC Client):运行在客户端,通过远程代理对象调用远程服务。
通过上面的图可以看出,一次简单的 RPC 调用可以分为以下几个步骤:
(1)服务提供者启动后主动向服务注册中心注册机器ip、端口以及提供的服务列表;
(2)服务消费者启动时向服务注册中心获取服务提供方地址列表,在本地缓存一份;
(3)服务消费者通过本地调用的方式调用服务,调用模块收到请求后通过负载均衡策略选取合适的远程服务地址;
(4)协议模块负责将方法、入参等信息序列化(编码)成能够进行网络传输的消息体,并将消息通过网络发送给服务端;
(5)服务端收到消息后进行解码(反序列化操作)。
(6)根据解码结果调用本地的服务进行相关处理;
(7)服务端将处理返回的结果进行序列化(编码),并将结果通过网络发送至服务消费者;
(8)服务消费者收到消息后进行解码最终得到结果;
敲黑板:在不同的 RPC 框架实现中步骤 1、2、3的顺序可能有些不同。