当前位置: 首页 > article >正文

Tars RPC源码--C++客户端

Communicator:

客户端最重要的一个类,一个客户端只能生成一个Communicator类的实例,CommunicatorPtr& Application::getCommunicator(),获取线程安全的单例。

ServantProxy与ServantProxyFactory

ServantProxy是服务代理,可以由ServantProxyFactoy生成,用户往往通过stringtoProxy()接口间接调用getServantProxy()获取服务代理。 通过服务代理进行rpc调用。

CommunicatorEpoll

这是客户端的网络模块,里面有IO复用,能够处理不同的主调线程的 不同请求,里面包含服务工厂类,ObjectProxyFactory,在同一网络线程中可以生成不同的服务实例,发起不同的rpc调用。同时还有异步调用处理线程,接收到异步响应包时,将包传给相应的线程处理。

Tars客户端最重要的类是Communicator,聚合了两个重要的类,分别是CommunicatiorEpoll和ServantproxyFactory。

1.Communicator可以有n个网络线程,即n个CommunicatiorEpoll,每个CommunicatiorEpoll可以有不同的服务对象即ObjectProxy,这是第一层的负载均衡。

2.ServantProxyFactory是另一个重要的类,这个类可以生成相应的ServantProxy句柄,Communicator实例通过ServantProxyFactory成员变量的getServantProxyFactory接口构造foo服务的句柄时,会获取CommunicatiorEpoll下所有的foo的服务。

 

同时每个服务都有一个EndpointManager,分配到不同的adapterproxy中然后再发送到不同的服务端服务中去。 这是客户端的第二层负载。


http://www.kler.cn/news/358305.html

相关文章:

  • jmeter中发送post请求遇到的问题
  • 【优选算法】(第四十四篇)
  • 深入理解程序的编译(预处理操作)和链接
  • python 函数式编程
  • 【【自动驾驶】车辆运动学模型】
  • 表的约束
  • 将任意图像增强模型与ultralytics中任意模型进行结合 (二)| yolo11与gdip模块、ipam的融合实践
  • 5规则中的命令
  • Dubbo的负载均衡与故障服务规避机制详解
  • [Bert模型微调]
  • TOMCAT Using CATALINA——OPTS,闪退解决方法(两种)
  • oracle ORA-24920:列大小对于客户机过大
  • 【AIGC】智能创作的革新与未来展望
  • PMOS和NMOS管
  • iOS 大数相乘
  • 【Bug】STM32串口空闲中断接收不定长数据异常
  • PyTorch:强大灵活的深度学习框架
  • 多IP访问浏览器
  • Mybatis 直接传入sql执行, 并且传入参数List<Object> params
  • Ubuntu设置静态IP地址