thrift源码学习
通过对thrift源码的学习,理解rpc的实现原理
毅本无言
这是个bug
展开
-
6. thrift服务层
文章目录1.服务端1.1 TSimpleServer1.2 TThreadPoolServer1.3 AbstractNonblockingServer1.4 TNonBlockingServer1.5 THsHaServer1.6 TThreadedSelectorServer2. 客户端3. 总结服务层是我们介绍thrift的最后一层,之前也介绍过,服务层的功能是将其他几个层进行聚合,以实现几层之间的功能上的耦合。我们从客户端和服务端两个方面来介绍服务层,二者都有一个核心的类:客户端:TServi原创 2020-06-15 00:04:31 · 469 阅读 · 0 评论 -
5. thrift传输层
文章目录1. TTransport结构2. TTransport子类3. TTransport实现原理4. 总结在前面的文章中,我们按照thrfit的调用顺序介绍了处理层和协议层,这篇文章我们接着介绍。我们回到TPotocol的源码: /** * Prevent direct instantiation */ @SuppressWarnings("unused") private TProtocol() {} /** * Transport */ protect原创 2020-06-07 21:59:11 · 1279 阅读 · 0 评论 -
4.协议层
上一篇我们介绍到,服务端在调用处理层时,会调用处理层中Processor的process方法,该方法的请求参数中包含TProtocol对象,同时,客户端的client对象在构造方法中也需要传入TProtocol参数,在处理层中,客户端写入rpc接口的请求参数、获取返回结果、服务端获取请求参数、返回方法结果,最终都交给了TProtocol来进行。之前我们介绍过,thrift的协议层负责的任务就是根据用户指定的协议,将请求参数和返回结果进行序列化/反序列化,实现不同系统之间无障碍识别数据的目的。本篇我们来深入T原创 2020-06-01 23:30:55 · 370 阅读 · 0 评论 -
3.处理层
从本篇开始,我们一层一层对thrift源码进行解读。从前文可知,Processor层是由idl编译而来,主要是进行数据流转,将协议层解析好的数据交由真正的服务去做,并将服务返回的数据交给协议层进行序列化处理。为了保证约定的一致性,处理层的代码会在客户端和服务端被同时引入,为客户端提供代理类,为服务端提供接口供其实现。我们先看下上一篇生成的HelloService的结构:根据功能我们可以将其大致分为三个部分: 接口功能部分:Iface/AsyncIface/Client/As..原创 2020-05-19 22:35:00 · 471 阅读 · 0 评论 -
2.thrift使用
我们使用thrift,写一个helloservice,它有一个方法sayHello,这个方法有一个参数word,它的功能就是在word后面添加一个hello然后返回,这也是服务端要做的事情;客户端拿到返回结果后打印出来。我们一步一步写一下: 编写idl service HelloService{ string sayHello(1: string word);} 我们用thrift编译器编译一下,这里有两种选择,我们可以使用thrift官方提供的编译器:http:原创 2020-05-19 22:29:32 · 355 阅读 · 0 评论 -
1.thrift概述
目录1.thrift简介2.thrift特性3.thrift架构1.thrift简介thrift是一款轻量级的跨语言RPC框架,其最初由Facebook开发并开源,后来上升至apach顶级项目,MTthrift就是基于thrift开发而来2.thrift特性thrift主要有以下特性: 接口描述语言:在thrift中,所有接口及相关参数都需要通过接口描述语言(IDL)在.idl文件中描述,该idl文件可以被生成器转化为不同语言,从而实现跨语言且具有强可读性,且可以十分清晰地原创 2020-05-19 22:24:11 · 528 阅读 · 0 评论 -
0.RPC简述
概念RPC(Remote Procedure Calls,远程过程调用),是一种进程间的通信方式,其强调的点在于“远程”,即通过该种方式,能够让我们像本地调用一样实现与远程进程的通讯。通俗一点来说,同样一个方法A,在没有使用RPC的时候,我们只能在本机器上调用该方法;使用RPC之后,A方法的代码在另一台机器上运行,但是我们也可以使用本机通过RPC对A方法进行调用意义业务规模的不断增大,给技术团队带来的影响主要有以下几个: 团队成员规模不断扩大 技术栈(尤其是语言栈)不断复杂并原创 2020-05-19 22:21:56 · 239 阅读 · 0 评论