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

相关推荐
工控小楠30 分钟前
Profinet从站转EtherNet IP主站协议网关应用于自动化生产线
网络协议·tcp/ip·自动化
cdprinter37 分钟前
信刻光盘数据自动回读系统,多重保障数据安全及调阅便捷性!
网络·安全·自动化
发光小北2 小时前
SG-CAN (FD) NET-210(双通道 CAN (FD) 转以太网网关)特点与功能介绍
开发语言·网络·php
larance2 小时前
kylinv10 设置网卡自启动和固定ip
网络·网络协议
湫一刀2 小时前
WireShark下载说明
网络·测试工具·wireshark
Ha_To2 小时前
2025.12.18 NAT地址转换、PAT
linux·服务器·网络
火山引擎开发者社区3 小时前
火山引擎 Force 大会发布 veRoCE 传输协议!
网络·火山引擎
ShenZhenDingYue3 小时前
吊车近电报警器的配置标准与事故预防策略
网络
yBmZlQzJ3 小时前
财运到免费内网穿透端口转发使用指南:实现TCP_UDP服务高效穿透
网络协议·tcp/ip·udp
爱尔兰极光3 小时前
计算机网络 --物理层
网络·计算机网络