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中然后再发送到不同的服务端服务中去。 这是客户端的第二层负载。

相关推荐
有代理ip12 分钟前
常见数据采集问题及实操解决方案
爬虫·网络协议·http·golang·ssl
先做个垃圾出来………26 分钟前
HTTP 请求中 Content-Type 常见取值
chrome·网络协议·http
之歆1 小时前
Linux 网络配置与 TCP/IP 协议
linux·网络·tcp/ip
Turboex邮件分享1 小时前
邮件队列堵塞的深度排查与紧急清空/重定向实战
运维·网络
瑞华丽PLM2 小时前
电子通讯行业深度定制的国产PLM选型报告与数字化转型建议
网络·plm·国产plm·瑞华丽plm·瑞华丽
麦德泽特2 小时前
OpenWrt在机器人中的高级网络应用:AP+STA模式、中继与防火墙配置实战
运维·网络·机器人
小同志002 小时前
网络原理-HTTP/HTTPS(四)--认识请求 “正⽂“ (body)
网络·网络协议·http
dozenyaoyida2 小时前
RS预览失败问题分析和解决
网络·经验分享·嵌入式硬件·tcp·wifi6兼容性·视频预览卡顿
德迅云安全_初启2 小时前
2026年十大危险DNS攻击类型及预防措施
linux·服务器·网络
IPDEEP全球代理2 小时前
动态住宅IP与动态数据中心IP有什么不同?
运维·网络