框架的重要组成

mprpcapplication

框架的初始化做了什么

  通过 -i 传的文件进行判断文件中的服务的ip与port和zk的ip和port。将对应的ip和port通过哈希map进行储存,为了后续调用做准备。

rpcprovider

  rpcprovider内通过使用哈希map存储服务名与方法。在run之后将服务通过muduo库挂起,在muduo的epoll_wait启动之前在zk服务端上创建相应节点。
  设置相应的回调事件,对接收的数据进行分析判断,筛选出来。为了防止粘包等需要制定一个双方的协议:
在这里插入图片描述
  通过相应的头数据来解析后续要读取的大小,这个需要双方来规定,项目中规定字符串前面四个字节用来描述后面这个RpcHeader数据的大小,再根据这个类中成员变量args_size来获得后续参数。再根据方法名字找到方法,通过服务类提供的GetRequestPrototype()方法获得定义的request类和response类,再进行参数的ParseFromString就可以得到具体的参数了。最后通过protobuf的service类调用CallMethod来帮我们调用我们重写的远程调用。

MprpcChannel

  因为stub桩类的方法具体实现就是内部的成员变量调用自己的成员方法,成员方法CallMethod是一个纯虚函数,需要多态的方法继承下来之后重写所以有了MprpcChannel。
  具体重写就是根据用户填进来的数据进行数据组装,然后连接服务注册中心进行查询,如果查询到了ip和端口就调用tcp传输。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值