Apache Thrift包含一个完整的堆栈结构用于构建客户端和服务器端,Thrift的体系架构如下图7-2所示:
Thrift体系架构分析说明如下:
(1)用户开发者编写的脚本及代码
1)用户定义编写Thrift服务接口描述脚本,如Hello.thrift。
2)用户编写服务器端业务代码:实现用户自己服务端的业务逻辑代码。
3)用户编写客户端业务代码:实现用户自己客户端的业务逻辑代码。
(2)Apache Thrift框架自动编码
1)Apache Thrift自动生成客户端框架代码。客户端框架代码按照服务接口描述文件生成。
2)Apache Thrift根据用户定义的Thrift定义的服务接口描述文件(如Hello.thrift)自动生成服务器端框架代码。
3)Apache Thrift同时也生成数据的读写操作方法。
(3)使用Thrift选择不同的传输协议
例如:
使用TCompactProtocol协议构建的HelloServiceServer.java;
图7-2 Thrift体系架构图
使用TCompactProtocol协议的HelloServiceClient.java;
TCompactProtocol protocol=new TCompactProtocol(transport);(www.xing528.com)
(4)使用Thrift选择不同的传输层
例如:
使用TFramedTransport传输层构建的HelloServiceServer.java;
使用TFramedTransport传输层的HelloServiceClient.java;
TTransport transport=new TFramedTransport(new TSocket("localhost",10005));
(5)Thrift支持的服务模型:
●TSimpleServer—简单的单线程服务模型,常用于测试。
●TThreadedServer—多线程服务模型,使用阻塞式IO,每个请求创建一个线程。
●TThreadPoolServer—线程池服务模型,使用标准的阻塞式IO,预先创建一组线程处理请求。
●TNonblockingServer—多线程服务模型,使用非阻塞式IO(需使用TFramedTransport数据传输方式)。
使用TSimpleServer服务端构建的HelloServiceServer.java
TServerSocket serverTransport=new TServerSocket(7911);
TProcessor processor=new Hello.Processor(new HelloServiceImpl());
TServer server=new TSimpleServer(processor,serverTransport);
System.out.println("Start server on port 7911...");
server.serve();
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。