RPC 框架项目剖析

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连接服务发现客户端,进行服务发现

组合关系:

  1. RpcCaller :负责进行服务请求,内部提供同步,异步,回调三种方式供上层调用,管理所有的请求。
  2. DiscoveryClient:对指定方法进行服务发现并返回rpc服务器host供客户端连接,内部通过回调方式管理上线,下线的服务
  3. _rpc_clients:管理rpc服务连接,注册回调至DiscoveryClient,服务下线时删除连接,保证一致性

rpc_server模块

描述:提供rpc服务的服务器。

组合关系:

  1. RegistryClient: 服务注册客户端,用于向服务注册中心注册服务,表示该服务上线。
  2. RpcRouter:管理服务器提供的服务,根据不同请求执行不同的服务并返回。

register_client模块

描述:向服务注册中心发起服务注册请求。

rpc_server中会有一个register_client用于服务注册;

register_server模块

描述:服务注册中心,负责转发服务上线的消息给注册过该服务的客户端,转发服务下线的消息给注册过该服务的客户端。

discover_client模块

描述:服务发现客户端,用于服务发现。存在于rpc_client中。

其他

本项目的网络通信是基于Muduo库的,所有的上层服务器继承于MuduoServer而MuduoServer继承于BaseServer与muduo::net::TcpServer是组合关系。MuduoConnection与muduo::net::TcpConnectionPtr 是组合关系。

相关推荐
萌新小码农‍6 小时前
Spring框架学习day7--SpringWeb学习(概念与搭建配置)
学习·spring·状态模式
蓝婷儿6 小时前
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
开发语言·python·学习
行云流水剑6 小时前
【学习记录】深入解析 AI 交互中的五大核心概念:Prompt、Agent、MCP、Function Calling 与 Tools
人工智能·学习·交互
一弓虽6 小时前
zookeeper 学习
分布式·学习·zookeeper
苗老大6 小时前
MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
人工智能·学习·语言模型
南郁6 小时前
007-nlohmann/json 项目应用-C++开源库108杰
c++·开源·json·nlohmann·现代c++·d2school·108杰
xhyu617 小时前
【学习笔记】On the Biology of a Large Language Model
笔记·学习·语言模型
小白杨树树7 小时前
【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理
笔记·学习
浩浩测试一下8 小时前
Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
网络·网络协议·tcp/ip·安全·网络安全·php