RPC框架Thrift架构描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32782059/article/details/74987649

一、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、运行服务和客户端。





猜你喜欢

转载自blog.csdn.net/qq_32782059/article/details/74987649
今日推荐