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

相关推荐
CS创新实验室16 分钟前
《计算机网络》深入学:TCP协议的设计与演进
网络协议·tcp/ip·计算机网络
Jinkxs40 分钟前
【Linux】零基础入门:一篇吃透操作系统核心概念
linux·运维·服务器·网络·操作系统
l1t1 小时前
DeepSeek总结的数据库性能教学文章
网络·数据库·oracle
3GPP仿真实验室1 小时前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 GIM、MM、IQ
开发语言·网络·matlab
乾元1 小时前
加密流量: 不解密情况下通过流特征识别恶意载荷
网络·人工智能·安全·web安全·机器学习·架构·安全架构
阿乐艾官1 小时前
【磁盘与文件系统】
网络
久绊A2 小时前
警惕高危漏洞!Pulse Secure Pulse Connect Secure 安全危机解析与防御指南
网络·安全
实时数据2 小时前
渗透测试通过模拟真实黑客的攻击行为,帮助识别系统、网络或应用程序中的潜在漏洞
网络·安全·web安全
网云工程师手记2 小时前
企业防火墙端口映射完整配置与安全收敛实操手册
运维·服务器·网络·安全·网络安全
气体传感器专家3 小时前
数据中心安全警报:为何“免维护”气体传感器可能正在制造危险盲区?
网络·安全·制造