本节讲解的Thrift实例,是Thrift开发的“Hello World”示例。整个过程为:先启动Thrift服务端服务,再启动客户端,客户端调用服务端helloVoid方法,实现在服务端打印输出“Hello World”。本节Thrift例子包括服务器代码编写、客户端代码编写、Thrift服务接口描述脚本编写。在7.4节还将讲解Spark Thrift Server应用示例,通过JDBC访问Spark Thrift Server,Spark Thrift Server访问Spark SQL,然后通过Spark SQL操作Hive数据库的数据。
本节Thrift例子中服务器编写的一般步骤如下:
1)创建Handler:消息处理者,负责消息的发送及处理。
2)基于Handler创建Processor。
3)创建Transport。
4)创建Protocol方式。
5)基于Processor,Transport和Protocol创建Server。
6)运行Server。
客户端编写的一般步骤如下:
1)创建Transport。
2)创建Protocol方式。
3)基于Transport和Protocol创建Client。(www.xing528.com)
4)运行Client的方法。
我们将通过这个简单的Thrift实现示例,来让大家直观地了解什么是Thrift以及如何使用Thrift构建服务。
下面将创建一个简单的服务Hello,实现helloString、helloInt、helloBoolean、helloVoid、helloNull等接口功能。可以在集成开发环境如IntelliJ IDEA Community Edition、Eclipse Jee Neon进行开发。Hello业务逻辑的服务端、客户端、Thrift的语法规范文件由用户自己开发编写,Thrift框架的服务器、客户端框架代码由Apache Thrift框架自动编码。
1)首先根据Thrift的语法规范编写脚本文件:Hello.thrift。Hello.thrift可以使用记事本编辑,也可以使用集成开发环境如IntelliJ IDEA Community Edition、Eclipse Jee Neon等开发工具进行编辑,文件后缀名使用.thrift保存。
其中定义了服务Hello的五个方法,每个方法包含一个方法名,参数列表和返回类型。每个参数包括参数序号,参数类型以及参数名。
Thrift是对IDL(Interface Definition Language)描述性语言的一种具体实现。因此,以上的服务描述文件使用IDL语法编写。使用Thrift工具编译Hello.thrift,就会生成相应的Hel-lo.java文件。该文件包含了在Hello.thrift文件中描述的服务Hello的接口定义,即Hel-lo.Iface接口,以及服务调用的底层通信细节,包括客户端的调用逻辑Hello.Client以及服务器端的处理逻辑Hello.Processor,用于构建客户端和服务器端的功能。
2)创建HelloServiceImpl.java文件并实现Hello.java文件中的Hello.Iface接口。
3)创建服务器端实现代码文件:HelloServiceServer.java,将HelloServiceImpl作为具体的处理器传递给Thrift服务器。
4)创建客户端实现代码文件:HelloServiceClient.java,调用Hello.client访问服务端的逻辑实现。
代码编写完后,先运行服务器HelloServiceServer.java,再启动客户端HelloService-Client.java调用服务Hello的方法helloVoid,可在服务器端的控制台窗口输出“Hello World”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。