轻量级、跨语言的RPC框架数组
功能特色:服务器
在介绍Thrift架构前,先了解下通常RPC框架的组成结构网络
包括服务器端发布和调用处理组件,网络IO组件,协议编解码组件,客户端调用组件,客户端代理组件等等架构
各部分解释可看图中英文,释义补充:
一、用户自定义类型序列化方式将在经过IDL生成的代码中实现,实际也是根据struct中的各个field调用TProtocol的基础类型序列化实现
二、RPC stub中已经提供了Service Client,其做用是构造Thrift调用参数,发起调用,解析结果;而白色部分需用户本身写的Client是实例化TProtocol、TTransport组件,设置业务参数,经过调用Service Client发起请求框架
TProtocol 协议和编解码组件
TTransport IO传输组件
TProcessor 服务调用处理组件
TServer,服务器网络IO
IDL 服务描述组件,负责生产跨平台客户端异步
namespace 定义包名
struct 定义服务接口的参数,返回值使用到的类结构。若是接口的参数都是基本类型,则不须要定义struct
service 定义接口性能
bool 布尔型 byte 8位整数 i16 16位整数 i32 32位整数 i64 64位整数 double 双精度浮点数 string 字符串 binary 字节数组 list<i16> List集合,必须指明泛型 map<string, string> Map类型,必须指明泛型 set<i32> Set集合,必须指明泛型
生成的类包括5部分spa
接口类型,默认名称都是Iface。这个接口类型被服务器和客户端共同使用。服务器端使用它来作顶层接口,编写实现类。客户端代码使用它做为生成代理的服务接口。会自动生成同步调用和异步调用的两个接口。
客户端类型,一个同步调用的客户端Client,一个异步调用的客户端AsyncClient
Processor,用来支持方法调用,每一个服务的实现类都要使用Processor来注册,这样最后服务器端调用接口实现时能定位到具体的实现类。
方法参数的封装类,以"方法名_args"命名
方法返回值的封装类,以"方法名_result"命名.net