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

相关推荐
闲云野鹤在人间6 分钟前
KVM虚拟化实战|CentOS‑Stream8 两种安装方式+模板制作+基础使用
linux·运维·服务器·centos
小张同学a.6 分钟前
Docker 容器实战 2—— docker 仓库
linux·运维·服务器·docker·容器
Chester_19998 分钟前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
艾莉丝努力练剑10 分钟前
【AI大模型接入SDK】WebSocket & SSE 协议
网络·c++·websocket·网络协议·学习·面试
码匠许师傅11 分钟前
【设计模式精讲】6.抽象工厂(Abstract Factory)
c++·设计模式
GKxx13 分钟前
在 HarmonyOS 上从源码构建 GCC 16(gcc/g++ + libstdc++ + libsanitizer):完整记录
c++·华为·harmonyos·鸿蒙·gcc
晴天的雨.99215 分钟前
类和对象下(内部类,匿名对象,对象拷贝时的编译器优化)
开发语言·c++·算法
Android系统攻城狮19 分钟前
Linux PipeWire深度解析之pw_core_get_registry调用流程与实战(九十一)
linux·运维·服务器·音频进阶·pipewire音频实战进阶
小义_23 分钟前
JDK 深度解析
java·linux·开发语言·python·面试
邪修king25 分钟前
Re:Linux 系统编程篇 (十二):进程篇(一)基础与 fork 系统调用全解
linux·运维·服务器