RPC框架Thrift架构描述
2017-07-11 16:51
369 查看
一、Thritf API的CS架构
Thrift包含创建CS架构程序的完整技术栈。最上层是从IDL生成的代码,你只需要自己实现服务器端的业务代码部分就可以。业务规则的实现类指需要实现生成的Iface接口就可以。Thrif有内建的数据类型,创建的数据结构作为发送、接收的结果。protocol和translate layer是Thrift运行时的一部分,Thrift包括将protocol和translates绑定到一起的基础部件。
二、thrift支持的协议
TBinaryProtocol – 一个简单的二进制格式,简单但没有进行空间优化。比text协议要快但是难于调试。
TCompactProtocol – 一个压缩的二进制格式,通常处理起来也很高效。
TDebugProtocol – 一个便于人阅读的文本格式,用来帮助调试。
TDenseProtocol – 类似于TCompactProtocol, 但传输的内容不包括元数据。
TJSONProtocol – 使用JSON来编码数据。
TSimpleJSONProtocol – 一个剥离了元数据的JSON格式,只写协议且不能有Thritft自己进行解释。适合于脚本语言。
三、thrift支持的传输协议
TFileTransport – 写入文件
TFramedTransport – 使用非阻塞服务时,需要这个传输协议。它以贞的形式发送数据,且每一帧的前面包含长度信息。
TMemoryTransport – 使用内存作为I/O。
TSocket – 使用阻塞的套接字I/O。
TZlibTransport – 用zlib进行压缩,与其他传输工具配合使用。
四、thrift支持的服务
TNonblockingServer – 使用非阻塞I/O的多线程服务(java是使用NIO实现)。这个服务必须使用TFramedTransport
TSimpleServer – 使用阻塞I/O的单线程服务,测试的时候特别有用。
TThreadPoolServer –
使用阻塞I/O多线程服务。
五、使用Thrift的典型工作流程
1、设计你的系统和服务,是接收数据、发送数据还是远程执行一些操作。
2、使用IDL编写接口描述文档,以.thrift为扩展名。服务描述关于函数、参数及返回值、是否抛出异常等信息,这一个文件里面可以提供多个服务的描述。
3、使用thrift命令来生成各种语言的库。
4、实现服务器端和客户端。第一步是实现服务并包装在服务代码中,这些代码依赖于Thrift库和生成的代码,你需要选择合适的processor,transport,和protocol,并且增加实现具体功能的代码。第二步是实现客户端,主要是择合适的processor,transport,和protocol并且实例化由编译器生成的服务类。
5、运行服务和客户端。
Thrift包含创建CS架构程序的完整技术栈。最上层是从IDL生成的代码,你只需要自己实现服务器端的业务代码部分就可以。业务规则的实现类指需要实现生成的Iface接口就可以。Thrif有内建的数据类型,创建的数据结构作为发送、接收的结果。protocol和translate layer是Thrift运行时的一部分,Thrift包括将protocol和translates绑定到一起的基础部件。
二、thrift支持的协议
TBinaryProtocol – 一个简单的二进制格式,简单但没有进行空间优化。比text协议要快但是难于调试。
TCompactProtocol – 一个压缩的二进制格式,通常处理起来也很高效。
TDebugProtocol – 一个便于人阅读的文本格式,用来帮助调试。
TDenseProtocol – 类似于TCompactProtocol, 但传输的内容不包括元数据。
TJSONProtocol – 使用JSON来编码数据。
TSimpleJSONProtocol – 一个剥离了元数据的JSON格式,只写协议且不能有Thritft自己进行解释。适合于脚本语言。
三、thrift支持的传输协议
TFileTransport – 写入文件
TFramedTransport – 使用非阻塞服务时,需要这个传输协议。它以贞的形式发送数据,且每一帧的前面包含长度信息。
TMemoryTransport – 使用内存作为I/O。
TSocket – 使用阻塞的套接字I/O。
TZlibTransport – 用zlib进行压缩,与其他传输工具配合使用。
四、thrift支持的服务
TNonblockingServer – 使用非阻塞I/O的多线程服务(java是使用NIO实现)。这个服务必须使用TFramedTransport
TSimpleServer – 使用阻塞I/O的单线程服务,测试的时候特别有用。
TThreadPoolServer –
使用阻塞I/O多线程服务。
五、使用Thrift的典型工作流程
1、设计你的系统和服务,是接收数据、发送数据还是远程执行一些操作。
2、使用IDL编写接口描述文档,以.thrift为扩展名。服务描述关于函数、参数及返回值、是否抛出异常等信息,这一个文件里面可以提供多个服务的描述。
3、使用thrift命令来生成各种语言的库。
4、实现服务器端和客户端。第一步是实现服务并包装在服务代码中,这些代码依赖于Thrift库和生成的代码,你需要选择合适的processor,transport,和protocol,并且增加实现具体功能的代码。第二步是实现客户端,主要是择合适的processor,transport,和protocol并且实例化由编译器生成的服务类。
5、运行服务和客户端。
相关文章推荐
- thrift rpc框架入门
- 架构设计:系统间通信(12)——RPC实例Apache Thrift 中篇
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
- Linux下配置RPC框架Apache Thrift
- 架构设计:系统间通信(14)——RPC实例Apache Thrift 下篇(2)
- rpc框架之 thrift 学习 1 - 安装 及 hello world
- 架构设计:系统间通信(11)——RPC实例Apache Thrift 上篇
- Thrift 个人实战--Thrift RPC服务框架日志的优化
- 关于RPC架构分布式框架dubbo框架对unchecked类型异常的处理
- dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
- 为什么说要搞定微服务架构,先搞定RPC框架?
- Thrift源码分析(九)-- 扩展Thrift框架来实现Attachable的RPC调用
- 架构设计:系统间通信(14)——RPC实例Apache Thrift 下篇(2)
- RPC框架-Thrift的使用
- 【架构】Twitter高性能RPC框架Finagle介绍
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
- 架构设计:系统间通信(13)——RPC实例Apache Thrift 下篇(1)
- thrift,gRPC,rpcx,motan,dubbox等rpc框架对比
- 架构设计:系统间通信(13)——RPC实例Apache Thrift 下篇(1)
- RPC框架Thrift例子-PHP调用C++后端程序