Apache Thrift是一种RPC框架。
RPC(Remote Procedure Call)即远程过程调用。其调用协议通常包含传输协议和序列化协议。传输协议包含: 如著名的gRPC(grpc / grpc.io) 使用的 http2 协议,也有如dubbo一类的自定义报文的tcp协议。序列化协议包含: 如基于文本编码的 xml json,也有二进制编码的 protobuf hessian等。
我们现在假设一个场景:服务器1应用程序A
里有方法a
,服务器2应用程序B
里有方法b
。如果应用程序A
需要调用方法a
,直接在本地内存调用即可。那么如果应用程序A
想要调用方法b
呢?
这种跨进程甚至跨服务器的调用即需要用到RPC(远程过程调用)
。需要通过网络传输来表达调用的语义和传达调用的数据。
Figure 1. Steps in executing a remote procedure call(图片来源:https://www.cs.rutgers.edu/~pxk/417/notes/03-rpc.html)
Thrift是Facebook于2007年开发的跨语言的rpc服务框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。
参考: