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

相关推荐
REDcker4 分钟前
Socket 带宽上限详解
网络
遇见火星36 分钟前
在Linux中使用parted对大容量磁盘进行分区详细过程
linux·运维·网络·分区·parted
Ar呐38 分钟前
软考网规篇之局域网——VLAN技术、城域以太网和以太环网
网络·计算机网络
qhqh3101 小时前
OPENSTACK基础的网络实验
网络·php·openstack
EmbedLinX2 小时前
一文理解后端核心概念:同步/异步、阻塞/非阻塞、进程/线程/协程
linux·服务器·c语言·网络
云服务器租用费用2 小时前
京东云主机企业用户能参与的优惠活动汇总
服务器·网络·京东云
abcy0712133 小时前
请简述OSI七层网络模型,并分别列举每一层的主要功能及对应的主要协议。
网络
郝学胜-神的一滴3 小时前
深入理解TCP协议:数据格式与核心机制解析
linux·服务器·网络·c++·网络协议·tcp/ip
梁辰兴3 小时前
计算机网络基础:传输层的两个主要协议
网络·计算机网络·计算机·协议·传输层·计算机网络基础·梁辰兴
Serendipity-Solitude4 小时前
TCP/IP协议栈深度解析技术文章大纲
网络·网络协议·tcp/ip