
分布式网络通信框架
文章平均质量分 63
集群和分布式概念以及原理;
RPC远程过程调用原理以及实现;
Protobuf数据序列化和反序列化协议;
ZooKeeper分布式一致性协调服务应用以及编程;
muduo网络库编程;
conf配置文件读取;
异步日志;
CMake构建项目集成编译环境;
github管理项目;
_索伦
结束,还是开始?
展开
-
mprpc框架的日志系统的设计实现——异步日志缓冲队列
然后要考虑的问题是:由于我Rpc服务发布方,采用的是muduo网络库,即epoll + 多线程机制,同一时间可能有多个请求,所以要保证该队列的线程安全。一般情况在做项目时,都要有一个日志模块,由于写日志是磁盘I/O,我们不能把这个操作算在业务的执行里,那样效率太低了。所以我们的思路就是,将写日志信息这部操作,放到一个缓冲队列中,然后有一个单独的写日志线程,来做磁盘I/O。设计的比较简单,目前只有普通日志和错误日志,实例化利用单例模式,除了最基本的方法外,还。定义了一个可变参的宏。原创 2022-09-07 15:43:39 · 533 阅读 · 0 评论 -
RpcChannel的调用过程
比如在该示例中服务名称为UserServiceRpc,提供了Login和Register方法,那么在生成proto文件后,会有两个类,UserServiceRpc使用在rpc服务发布端。某个节点发布了rpc服务和方法,那么其他节点想要调用,首先要按照服务发布方的格式要求。RpcChannel在这里不要理解成管道的意思,这里相当于中继作用,UserServiceRpc_Stub 用于服务请求端。CallMethod实现。原创 2022-09-06 23:33:20 · 421 阅读 · 0 评论 -
RpcProvider分发rpc服务:socket连接回调和读写事件回调的实现
对于在网络上接收的字符流,在框架内部,RpcProvider和RpcConsumer协商好之间通信用的protobuf数据类型,定义proto的message类型,进行数据头的序列化和反序列化。不定义类型,传过来的字符流,是没办法识别的。该方法表示已建立连接用户的读写事件操作,如果有一个远程RPC服务的调用请求,那么OnMessage方法就会响应。另外,为了防止粘包,可以在头部的message类型里添加 args_size,即参数的长度。(4个字节)(服务名字、方法名字) +原创 2022-09-06 19:43:52 · 415 阅读 · 0 评论 -
RpcProvider的网络服务,以及怎么发布服务方法
那目前实现的功能除了初始化rpc框架和加载配置文件,还设计一个类RpcProvider,实现了框架的网络模块,RpcProvider还需要有提供服务方法:NotifyService()本地的方法会从中得到请求的参数,执行本地服务,然后把响应response填写好,执行回调操作返回。那么问题就是,当接收到一个rpc调用请求时,如何知道要调用哪个应用程序的哪个rpc方法呢?首先的思路是,我们需要一个表,来记录当前节点的服务对象和服务方法信息。如果有请求从网络上发送过来。原创 2022-09-05 21:09:38 · 310 阅读 · 0 评论 -
Mprpc框架的配置文件
在mprpcApplication类中,初始化函数Init需要加载配置文件,即rpc节点的IP和端口,zookeeper的IP和端口。所以写一个MprpcConfig类。原创 2022-09-02 21:20:13 · 299 阅读 · 0 评论 -
Mprpc框架基础类的设计
使用getopt来读取。原创 2022-09-02 20:45:28 · 231 阅读 · 0 评论 -
分布式网络通信框架:本地服务怎么发布成RPC服务
protobuf为我们提供了该参数done,该类型是Closure。原创 2022-07-25 18:54:52 · 843 阅读 · 0 评论 -
protobuf的基本用法
在protobuf中,默认不生成service服务类型,需要加上一个option选项。//定义该选项,表示生成service服务类和RPC方法描述,默认不生成//在protobuf里怎么定义描述rpc方法的类型-serviceserviceUserServiceRpc{}原创 2022-07-25 11:27:16 · 6169 阅读 · 0 评论 -
RPC通信原理与项目技术选型
由于它是一种二进制的格式,比使用xml(20倍)、json(10倍)进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的。google提供了protobuf多种语言的实现java、c#、c++、go和python,每一种实现都包含了相应语言的编译器以及库文件。protobuf(protocolbuffer)是google的一种数据交换的格式,它独立于平台语言。,可以用于诸如网络传输、配置文件、数据存储等诸多领域。...原创 2022-07-23 21:18:55 · 830 阅读 · 0 评论 -
集群聊天服务器:集群与分布式理论
在聊天服务器项目中实现了集群,在这里根据该项目来讲解一下单机、集群与分布式理论。原创 2022-07-23 20:01:21 · 660 阅读 · 0 评论