【TARS】TARS-CPP客户端学习一

目录

 

0.入门学习链接

1.客户端中涉及的类的介绍

1.1 TarsClient(客户端类)

1.2 Communicator(通信器类)

1.3 ServantProxyFactory&ServantProxy(服务代理工厂类和服务代理类)

1.4 CommunicatorEpoll(客户端网络处理的线程类)

1.5 ObjectProxyFactory&ObjectProxy(服务实体工厂类和服务实体类) 

1.6 TC_Epoller(epoller操作类)

1.7 EndpointManager(框架内部的路由管理的实现类)

1.8 QueryEpBase(路由请求与回调的实现类)

1.9 AdapterProxy类

1.10 Transceiver(网络传输基类, 主要提供send/recv接口)

1.11 AsyncProcThread(异步回调后的处理线程)

1.12  TC_CasQueue(线程安全队列,是类模板)

1.13 ReqMessage(请求队列类)

2. 初识客户端

2.1 总览

2.2 Communicator

2.3 ServantProxy与ServantProxyFactory

2.4 CommunicatorEpoll

2.5 ObjectProxy与ObjectProxyFactory

2.6 客户端初始化时重要类之间的关联关系


0.入门学习链接

TARS基金会-微服务开源框架TARS的RPC源码解析之初识TARS-C++客户端

tars客户端(一):一次rpc的调用过程--写的很好

1.客户端中涉及的类的介绍

1.1 TarsClient(客户端类)

 

1.2 Communicator(通信器类)

1.3 ServantProxyFactory&ServantProxy(服务代理工厂类和服务代理类)

1.4 CommunicatorEpoll(客户端网络处理的线程类)

1.5 ObjectProxyFactory&ObjectProxy(服务实体工厂类和服务实体类) 

1.6 TC_Epoller(epoller操作类)

1.7 EndpointManager(框架内部的路由管理的实现类)

1.8 QueryEpBase(路由请求与回调的实现类)

1.9 AdapterProxy类

1.10 Transceiver(网络传输基类, 主要提供send/recv接口)

1.11 AsyncProcThread(异步回调后的处理线程)

1.12  TC_CasQueue(线程安全队列,是类模板)

1.13 ReqMessage(请求队列类)

2. 初识客户端

2.1 总览

TARS的客户端最重要的类是Communicator,一个客户端只能声明出一个Communicator类实例,用户可以通过
CommunicatorPtr& Application::getCommunicator()获取线程安全的Communicator类单例。Communicator
类聚合了两个比较重要的类,一个是CommunicatorEpoll,负责网络线程的建立与通过ObjectProxyFactory生
成ObjectProxy;另一个是ServantProxyFactory,生成不同的RPC服务句柄,即ServantProxy,用户通过
ServantProxy调用RPC服务。下面简单介绍几个类的作用。

2.2 Communicator

一个Communicator实例就是一个客户端,负责与服务端建立连接,生成RPC服务句柄,可以通过
CommunicatorPtr& Application::getCommunicator()获取Communicator实例,用户最后不
要自己声明定义新的Communicator实例.

2.3 ServantProxy与ServantProxyFactory

ServantProxy就是一个服务代理,ServantProxy可以通过ServantProxyFactory工厂类生成,用户往往通过
Communicator的template void stringToProxy()接口间接调用ServantProxyFactory的
ServantPrx::element_type* getServantProxy()接口以获取服务代理,通过服务代理ServantProxy,用户
就可以进行RPC调用了. ServantProxy内含多个服务实体ObjectProxy(详见下文第4小点), 能够帮助用户在
同一个服务代理内进行负载均衡.

2.4 CommunicatorEpoll

CommunicatorEpoll类代表客户端的网络模块,内含TC_Epoller作为IO复用,能够同时处理不同主调线程
(caller线程)的多个请求。CommunicatorEpoll内含服务实体工厂类ObjectProxyFactory(详见下文),
意味着在同一网络线程中,能够产生不同服务的实体,能够完成不同的RPC服务调用。CommunicatorEpoll还聚
合了异步调用处理线程AsyncProcThread,负责接收到异步的响应包之后,将响应包交给该线程处理.

2.5 ObjectProxy与ObjectProxyFactory

ObjectProxy类是一个服务实体,注意与ServantProxy类是一个服务代理相区别,前者表示一个网络线程上的某
个服务实体A,后者表示对所有网络线程上的某服务实体A的总代理,更详细的介绍可见下文。ObjectProxy通过
ObjectProxyFactory生成,而ObjectProxyFactory类的实例是CommunicatorEpoll的成员变量,意味着一个
网络线程CommunicatorEpoll能够产生各种各样的服务实体ObjectProxy,发起不同的RPC服务. ObjectProxy
通过AdapterProxy来管理对服务端的连接。

2.6 客户端初始化时重要类之间的关联关系

猜你喜欢

转载自blog.csdn.net/Edidaughter/article/details/114014870
今日推荐