Thrift框架快速入门

Thrift介绍
1.什么是thrift?
thrift早期由facebook内部团队开发,主要用于实现跨语言间的方法调用,属于远程方法调用的一种,后开源纳入apache中,成为了apache thrift项目。
thrift允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

2.什么是RPC?
RPC (Remote Procedure Call Protocol),远程过程调用协议。

Thrift框架快速入门

简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法并得到返回的结果。
RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯) RPC 是一个请求响应模型。
客户端发起请求,服务器返回响应(类似于Http的工作方式) RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

Thrift栈结构

Thrift框架快速入门

Thrift数据类型
基本类型
bool:布尔值,true 或 false,对应 Java 的 boolean
byte:8 位有符号整数,对应 Java 的 byte
i16:16 位有符号整数,对应 Java 的 short
i32:32 位有符号整数,对应 Java 的 int
i64:64 位有符号整数,对应 Java 的 long
double:64 位浮点数,对应 Java 的 double
string:未知编码文本或二进制字符串,对应 Java 的 String
结构体类型
struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean
容器类型
list:对应 Java 的 ArrayList
set:对应 Java 的 HashSet
map:对应 Java 的 HashMap
异常类型
exception:对应 Java 的 Exception
服务类型
service:对应服务的类

生成thrift的java代码

Thrift框架快速入门

namespace java service.demo

service Hello{       

    string helloString(1:string para)       

    i32 helloInt(1:i32 para)       

    bool helloBoolean(1:bool para)       

    void helloVoid()       

    string helloNull()

}

Thrift框架快速入门

Thrift框架快速入门

Hello.java内容
(1)异步客户端类AsyncClient和异步接口AsyncIface
(2)同步客户端类Client和同步接口Iface,Client类继承自TServiceClient,并实现了同步接口Iface;Iface就是根据thrift文件中所定义的接口函数所生成;Client类是在开发Thrift的客户端程序时使用,Client类是Iface的客户端存根实现, Iface在开发Thrift服务器的时候要使用,Thrift的服务器端程序要实现接口Iface。
 (3)Processor类,该类主要是开发Thrift服务器程序的时候使用,该类内部定义了一个map,它保存了所有函数名到函数对象的映射,一旦Thrift接到一个函数调用请求,就从该map中根据函数名字找到该函数的函数对象,然后执行它;
 (4)参数类,为每个接口函数定义一个参数类,例如:为接口helloInt产生一个参数类:helloInt_args,一般情况下,接口函数参数类的命名方式为:接口函数名_args;
(5)返回值类,每个接口函数定义了一个返回值类,例如:为接口helloInt产生一个返回值类:helloInt_result,一般情况下,接口函数返回值类的命名方式为:接口函数名_result;

参数类和返回值类中有对数据的读写操作,在参数类中,将按照协议类将调用的函数名和参数进行封装,在返回值类中,将按照协议规定读取数据。

 Client

Thrift框架快速入门

 Iface

Thrift框架快速入门

HelloServiceImpl

Thrift框架快速入门

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/88a622ee66d0b720cf77c9631942d36b.html