国内最好的网站服务器,中国铁路总公司建设管理部网站,推广型网站免费建设,修改网站logoRPC 框架项目剖析
说明 本文用于梳理一个 rpc项目的实现细节#xff0c;此项目基于cpp语言 大概三千行左右#xff0c;用于学习目的。 项目链接#xff1a;rpc项目 项目底层类
1.抽象消息类 描述#xff1a; 各种消息的基类 属性#xff1a; 消息id#xff0c;消息类型…RPC 框架项目剖析
说明 本文用于梳理一个 rpc项目的实现细节此项目基于cpp语言 大概三千行左右用于学习目的。 项目链接rpc项目 项目底层类
1.抽象消息类 描述 各种消息的基类 属性 消息id消息类型序列化返序列化方法。 派生类 JsonMessage再派生出请求应答等。 2.抽象缓冲区类型 描述 消息缓冲区方便扩展本项目使用的 moduo 库的缓冲区 属性 读缓冲区数据方法判断缓冲区是否有数据等。 派生类 MuduoBuffer 3.抽象协议类型 描述 负责协议组织协议解析等 派生类 LVProtocol |–Len–|–VALUE–| |–Len–|–mtype–|–idlen–|–id–|–body–| 4.抽象连接类 描述 网络连接的基类 派生类 MuduoConnection 5.抽象服务类 描述 服务器基类 派生类 MuduoServer 6.抽象客户端类 描述 客户端基类 派生类 MuduoClient rpc_client模块 描述 rpc请求客户端有两种模式1 直接连接某个提供rpc服务的服务器。2连接服务发现客户端进行服务发现 组合关系 RpcCaller 负责进行服务请求内部提供同步异步回调三种方式供上层调用管理所有的请求。DiscoveryClient对指定方法进行服务发现并返回rpc服务器host供客户端连接内部通过回调方式管理上线下线的服务_rpc_clients管理rpc服务连接注册回调至DiscoveryClient服务下线时删除连接保证一致性。 rpc_server模块 描述提供rpc服务的服务器。 组合关系 RegistryClient 服务注册客户端用于向服务注册中心注册服务表示该服务上线。RpcRouter管理服务器提供的服务根据不同请求执行不同的服务并返回。 register_client模块 描述向服务注册中心发起服务注册请求。 rpc_server中会有一个register_client用于服务注册 register_server模块 描述服务注册中心负责转发服务上线的消息给注册过该服务的客户端转发服务下线的消息给注册过该服务的客户端。 discover_client模块 描述服务发现客户端用于服务发现。存在于rpc_client中。 其他 本项目的网络通信是基于Muduo库的所有的上层服务器继承于MuduoServer而MuduoServer继承于BaseServer与muduo::net::TcpServer是组合关系。MuduoConnection与muduo::net::TcpConnectionPtr 是组合关系。