欢迎来到天天文库
浏览记录
ID:42605440
大小:183.25 KB
页数:26页
时间:2019-09-18
《Apache Thrift - 跨语言远程服务调用框架》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ApacheThrift-跨语言远程服务调用框架简介: ApacheThrift是Facebook实现的一种高效的、支持多种编程语言的远程服务调用的框架。本文将从Java开发人员角度详细介绍ApacheThrift的架构、开发和部署,并且针对不同的传输协议和服务类型给出相应的Java实例,同时详细介绍Thrift异步客户端的实现,最后提出使用Thrift需要注意的事项。前言:目前流行的服务调用方式有很多种,例如基于SOAP消息格式的WebService,基于JSON消息格式的RESTful服务等。其中所用到的数据
2、传输方式包括XML,JSON等,然而XML相对体积太大,传输效率低,JSON体积较小,新颖,但还不够完善。本文将介绍由Facebook开发的远程服务调用框架ApacheThrift,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中,如C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,Smalltalk等创建高效的、无缝的服务,其传输数据采用二进制格式,相对XML和JSON体积更小,对于高并发、大数据量和多语
3、言的环境更有优势。本文将详细介绍Thrift的使用,并且提供丰富的实例代码加以解释说明,帮助使用者快速构建服务。 回页首一个简单的Thrift实例本文首先介绍一个简单的Thrift实现实例,使读者能够快速直观地了解什么是Thrift以及如何使用Thrift构建服务。创建一个简单的服务Hello。首先根据Thrift的语法规范编写脚本文件Hello.thrift,代码如下:清单1.Hello.thriftnamespacejavaservice.demoserviceHello{stringhelloString(
4、1:stringpara)i32helloInt(1:i32para)boolhelloBoolean(1:boolpara)voidhelloVoid()stringhelloNull()} 其中定义了服务Hello的五个方法,每个方法包含一个方法名,参数列表和返回类型。每个参数包括参数序号,参数类型以及参数名。Thrift是对IDL(InterfaceDefinitionLanguage)描述性语言的一种具体实现。因此,以上的服务描述文件使用IDL语法编写。使用Thrift工具编译Hello.thrift,就
5、会生成相应的Hello.java文件。该文件包含了在Hello.thrift文件中描述的服务Hello的接口定义,即Hello.Iface接口,以及服务调用的底层通信细节,包括客户端的调用逻辑Hello.Client以及服务器端的处理逻辑Hello.Processor,用于构建客户端和服务器端的功能。创建HelloServiceImpl.java文件并实现Hello.java文件中的Hello.Iface接口,代码如下:清单2.HelloServiceImpl.javapackageservice.demo;im
6、portorg.apache.thrift.TException;publicclassHelloServiceImplimplementsHello.Iface{@OverridepublicbooleanhelloBoolean(booleanpara)throwsTException{returnpara;}@OverridepublicinthelloInt(intpara)throwsTException{try{Thread.sleep(20000);}catch(InterruptedExcepti
7、one){e.printStackTrace();}returnpara;}@OverridepublicStringhelloNull()throwsTException{returnnull;}@OverridepublicStringhelloString(Stringpara)throwsTException{returnpara;}@OverridepublicvoidhelloVoid()throwsTException{System.out.println("HelloWorld");}} 创建服务
8、器端实现代码,将HelloServiceImpl作为具体的处理器传递给Thrift服务器,代码如下:清单3.HelloServiceServer.javapackageservice.server;importorg.apache.thrift.TProcessor;importorg.apache.thrift.protocol.TBinaryProtocol;impo
此文档下载收益归作者所有