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调用的远程服务

相关推荐
编程小Y5 分钟前
ODB和其他C++ ORM框架相比有什么优势?
开发语言·c++
小龙报5 分钟前
VS2022调试技巧 + 实战案例
android·服务器·c语言·数据库·c++·windows·visual studio
赖small强5 分钟前
【音视频开发】CMOS Sensor图像采集原理及Linux主控ISP处理流程
linux·音视频·cmos·isp·v4l2
津渡7416 分钟前
【技术实战】Linux 服务器网络流量统一配置(TUN模式):解决 Docker/开发环境连接难题
linux
胖咕噜的稞达鸭6 分钟前
基础IO 文件在内核中是怎么被管理的 重定向的含义 在自定义shell中加入重定向
linux·c++·git·腾讯云·visual studio·csdn开发云
程序猿本员6 分钟前
6. 继承与面向对象设计
c++
枫叶丹48 分钟前
【Qt开发】Qt窗口(四) -> QDockWidget浮动窗口
c语言·开发语言·c++·qt·开源
天宁9 分钟前
Ubuntu 一键切换吉林大学镜像源
linux·ubuntu
乌萨奇也要立志学C++14 分钟前
【洛谷】二分答案专题 3 道洛谷经典题(木材 / 砍树 / 跳石头)精讲
c++·算法
de_furina17 分钟前
[C++]string类的使用和模拟实现
开发语言·c++·gitee