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

相关推荐
康康的AI博客11 分钟前
工业数据中台:PLC、SCADA、MES的实时协同架构
java·服务器·网络
优宁维生物20 分钟前
Co-IP 抗体科普从选择到避坑
网络·网络协议·tcp/ip
市安29 分钟前
基于 LVS+Keepalived+NFS 的高可用 Web 集群构建与验证
运维·服务器·网络·lvs·keepalived·ipvsadm
鹿角片ljp1 小时前
Java网络编程入门:从Socket到多线程服务器
java·服务器·网络
无名的小三轮1 小时前
FTP协议详解
网络·tcp/ip·安全
汽车仪器仪表相关领域1 小时前
全程高温伴热,NOx瞬态精准捕捉:MEXA-1170HCLD加热型NOx测定装置项目实战全解
大数据·服务器·网络·人工智能·功能测试·单元测试·可用性测试
Hoxy.R1 小时前
海量数据库安装部署初体验
服务器·网络·数据库
西红市杰出青年1 小时前
asyncio.gather 内部原理与运行机制(详解)
网络·python·异步
天荒地老笑话么2 小时前
TCP vs UDP 最核心区别(可靠性 vs 速度)
网络协议·tcp/ip·udp
运维行者_2 小时前
OpManager 对接 ERP 避坑指南,网络自动化提升数据同步效率
运维·服务器·开发语言·网络·microsoft·网络安全·php