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

相关推荐
taxunjishu12 分钟前
TCP/IP转EtherNet/IP 协议转换 罗克韦尔PLC与视觉设备交互
网络·网络协议·tcp/ip
The Shio1 小时前
OptiByte:一个可视化协议设计与多语言代码生成工具
网络·物联网·c#·.net·业界资讯
Yeats_Liao2 小时前
OpenClaw(二):配置教程
大数据·网络·人工智能·深度学习·机器学习
爱丽_2 小时前
TCP 三次握手与四次挥手
服务器·网络·tcp/ip
数据知道2 小时前
《深入掌握MongoDB数据库》 - 专栏介绍和目录
网络·数据库·mongodb
cheems95272 小时前
[网络原理] HTTPS 加密演进与中间人攻击
网络·网络协议·http·https
物联网全栈工程猪2 小时前
CAN 总线传输策略设计:基于 CAN ID 优先级竞争与本节点低优先级事件让步
运维·服务器·网络
qq_570398573 小时前
websocket
网络·websocket·网络协议
坚定的共产主义生产设备永不宕机3 小时前
缺省路由实操讲解
网络·智能路由器
爱丽_3 小时前
HTTPS 与 TLS 握手
网络协议·http·https