【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 客户端初始化时重要类之间的关联关系
【TARS】TARS-CPP客户端学习一相关推荐
- 【TARS】TARS-CPP客户端学习二
目录 0.测试代码路径与说明 1.helloworld客户端的线程情况 1.0 线程总体分布 1.1线程一(main线程) 1.2 线程二(StatReport线程) 1.3 线程三(TC_TimeP ...
- 开源中国iOS客户端学习
开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客 http://blog.csdn.net/column/details/xfzl-kykhd.html ...
- 开源中国iOS客户端学习——(十二)用户登陆
---------------------------------------------------------------------------------------------------- ...
- 开源中国iOS客户端学习——(八)网络通信AFNetworking类库
AFNetworking是一个轻量级的iOS网络通信类库,继ASI类库不在更新之后开发者们有一套不错选择: AFNetworking类库×××和使用教程: https://github.com/AFN ...
- cpp程序设计学习与实验系统(c语言程序设计软件) 注册码,cpp程序设计学习与实验系统...
cpp程序设计学习与实验系统是一款简单易用的C/C++程序设计教学演示.学习与实验软件,C和c++语言是计算机程序设计语言,这种语言在初学环节非常难懂,学习起来非常费力,尤其是里面的函数,记忆起来难上 ...
- Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout
左右滑动的控件我们使用的也是非常多了,但是基本上都是使用的viewpager 等 android基础的控件,那么我们有么有考虑过查看他的源码进行定制呢?当然,如果你自我感觉非常好的话可以自己定制一个, ...
- 开源中国iOS客户端学习——(一)Prefix.pch文件
2019独角兽企业重金招聘Python工程师标准>>> 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以 -Prefix.pch结尾文件的文件,pch ...
- 开源中国iOS客户端学习——(五)网络通信ASI类库(1)
如今的应用大部分基予网络,在开源中国iOS客户端源码中关于网络通信方面用了三个类库,ASI和AFNetworking,还有一个苹果官方给出的Reachability用于检测当前网络状况,本文介绍当前用 ...
- android新闻客户端实验报告,Android 新闻客户端学习笔记
学习了新闻客户端开发后,有很多是通用的,就把客户端用到的一些做个笔记,已备以后使用,主要用到的知识点有: 1. Android网络编程 2. Android中BaseAdapter的使用 3. ...
最新文章
- Coursera Machine Learning 作业提交问题
- html用div做出一颗树的效果,用Scrapy建造一棵树
- CeneOS中使用Docker安装Gitlab
- simulink中不能改名_《和平精英》没有卡如何解决 改名字方法
- javaweb学习总结(十六)——JSP指令
- 使用React的static方法实现同构以及同构的常见问题
- 5001 boost之bind库函数
- vb net的定时循环_Python3-定时任务的四种实现方式
- C#针对js escape解码
- grafana的前端技术_Grafana开发环境搭建
- 一个软件公司需要多少前端_内幕!软件外包公司开发一个软件需要多少钱?
- NSA的各种***工具
- 服务器虚拟化发展的趋势,2013年服务器虚拟化九大发展趋势
- windows下远程连接Mysql
- 2016 西班牙 国家德比(西甲31轮)
- 管道的故事(一)管道的故事
- 流量、电量、弱网环境怎么测?
- 用Python制作一个文件加密器(支持中文)
- 生鲜配送ERP系统_对商品模块数据模型与界面设计的思考【Java 开源版】杭州生鲜配送系统_升鲜宝_SaaS全链路生鲜供应链管理系统_升鲜宝
- マーケティング用語の英訳一覧(Glossary of marketing terms)