RPC框架之Thrift分析
一、简介 1、Thrift是Facebook开发的跨语言的RPC服务框架。随后贡献给Apache开源组织。成为RPC服务的主流框架。 2、特点: 优点: 跨语言,支持java、c/c++、python等多种编程语言 IDL定义接口函数和数据类型 支持二进制传输,效率高 支持多种工作模型,单线程模型、线程池模型、非阻塞模型 缺点: 文档不多 各版本不兼容,升级不方便 二、分析 Thrift分为服务端(server)和客户端(Client)两个对应的部分。代码分层设计,分为Transport(传输层)、Protocol(协议层)、Processor(处理层)和Server(服务层)。 1、主要的处理流程: 各部分类图: 传输层 TTransport: 客户端传输层抽象基础类,主要方法:read、write、flush、open、close。read、write方法为核心 TSocket 与 TNonBlockingSocket: 分别是基于BIO和NIO客户端传输类。 TSocket 持有Socket,设置输入输出流使用1K的BufferedStream, TNonBlockingSocket 持有SocketChannel,read和write方法里的byte会每次被wrap成一个ByteBuffer。 TServerSocket 与 TNonBlockingServerSocket