Rpc服务的提供方(Rpcprovider)的调用流程

首先,服务的提供方,会通过rpcprovider向rpc服务方注册rpc服务对象和服务方法,

那么,我们通过protobuf提供的抽象层的service和method,将服务对象和它所对应的服务方法记录在map表中,

当它启动以后,这里面相当于启动了一个epoll+多线程的服务器,

启动以后就可以接收远程的连接,远程如果有新连接过来的话,muduo库会帮我们回调onconnection(如果有客户端断开,服务端收到了,将相应的连接shutdown,释放socket资源)

onmessage等待远程rpc的调用请求,数据过来之后,按我们协商好的数据格式解析,最终解析出service_name、method_name和方法调用参数等数据,从抽象层动态的生成method的请求(request)和响应(response),将参数填到请求中(反序列化)

response由业务来填

再生成一个回调,

然会在框架上调我们业务的方法,

然后业务中login方法就会被调用(从请求中拿数据、做本地业务、给response填响应消息、执行回调)

在这个回调中调用我们绑定的方法,

绑定的方法做的是将响应进行一个序列化,然后通过网络发送回去,发送回去后,我们由rpc的提供者主动关闭这条连接,省资源,给其它rpc客户端再继续提供服务

结合muduo和protobuf,可以用很少的代码将这个框架的一部分,可以借助rpcprovider类来发布一个本地服务,将本地服务发布成一个支持rpc调用的远程服务

相关推荐
剑神一笑3 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux·运维·chrome
剑神一笑4 小时前
Linux killall 命令详解:按进程名批量终止进程的原理与实践
linux·运维·chrome
MC皮蛋侠客6 小时前
C++17 多线程系列(五):C++17 并行算法——从串行到并行的零成本迁移
c++·多线程
日取其半万世不竭8 小时前
iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍
linux·运维·服务器
mounter6258 小时前
Linux 内核资源管理:控制组(cgroup)的演进与“策略组”新提案
linux·运维·服务器·cgroup·kernel
bksczm8 小时前
文件在磁盘中的存储方式
linux·运维·服务器
L1624768 小时前
OpenSSH 半自动升级方案(独立编译 + 手动迁移 + 重建 systemd 服务)
linux·服务器·ssh
半旧夜夏8 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
爱莉希雅&&&9 小时前
zabbix快速搭建和使用
android·linux·数据库·zabbix·监控
z200509309 小时前
【linux学习】深入理解linux文件I/O,从C标准库到内核态
linux·学习·操作系统