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

相关推荐
源远流长jerry12 分钟前
DPDK 19.08(Ubuntu 16.04)环境搭建
linux·运维·网络·ubuntu
王闯写bug20 分钟前
【openEuler】修改ssh端口号
服务器·网络·ssh·openeuler
咒法师无翅鱼31 分钟前
【西电计网学习笔记】数据链路层【CSMA/CD&CA;以太网】
网络
dustcell.32 分钟前
Linux实验环境搭建
网络
Python_Study202537 分钟前
制造业企业如何构建高效数据采集系统:从挑战到实践
大数据·网络·数据结构·人工智能·架构
YYYing.44 分钟前
【计算机网络 | 第四篇】路由与NAT技术
运维·服务器·网络·网络协议·计算机网络
科技块儿1 小时前
【游戏防外挂】同一IP多账号登录?IP地址查询定位快速识别工作室
网络协议·tcp/ip·游戏
Xの哲學1 小时前
Linux Worklet 深入剖析: 轻量级延迟执行机制
linux·服务器·网络·数据结构·算法
前端达人1 小时前
WebSocket vs SSE深度对比分析
网络·websocket·网络协议
电子_咸鱼1 小时前
Linux IPC 实战:管道与共享内存的使用场景 + 底层原理全剖析
linux·运维·服务器·开发语言·网络·vscode·qt