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

相关推荐
很透彻4 分钟前
【网络】传输层协议UDP
网络·网络协议·udp
黑龙江亿林等级保护测评1 小时前
等保行业如何选择核实的安全防御技术
网络·人工智能·python·安全·web安全·智能路由器·ddos
晓翔仔1 小时前
SSL/TLS 密码套件漏洞分析以及修复方法
服务器·网络·nginx·安全·tomcat·ssl·密码套件
shimly1234561 小时前
(done) 什么 RPC 协议? remote procedure call 远程调用协议
网络·网络协议·rpc
余~185381628002 小时前
矩阵系统源码搭建,OEM贴牌技术
网络·人工智能·线性代数·算法·矩阵
小麦黑客笔记3 小时前
2024年最新自学手册 -网络安全(黑客技术)
开发语言·网络·安全·web安全·网络安全
沫夕残雪3 小时前
网络编程及回显服务器
网络·tcp/ip·java-ee·intellij-idea·信息与通信
ZVAyIVqt0UFji4 小时前
云舟观测:基于eBPF监控主机的TCP网络连接
网络·网络协议·tcp/ip·web安全·php
熊的猫5 小时前
如何封装一个可取消的 HTTP 请求?
前端·javascript·vue.js·网络协议·http·webpack·node.js