從零開始學(xué)習(xí)Thrift之一——了解Thrift
1. What is Thrift
Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation.
Thrift provides clean abstractions and implementations for data transport, data serialization, and
application level processing. The code generation system takes a simple definition language as input
and generates code across programming languages that uses the abstracted stack to build interoperable RPC clients and servers.
上面是官方給出的介紹凛澎,簡單的說就是:
Thrift是一種輕量級、獨(dú)立于語言的點(diǎn)對點(diǎn)的RPC實(shí)現(xiàn)框架适掰,且其為數(shù)據(jù)傳輸颂碧,數(shù)據(jù)序列化和應(yīng)用程序級處理提供了干凈的抽象和實(shí)現(xiàn),生成的代碼可以跨語言跨平臺的調(diào)用类浪。
那什么是RPC框架呢载城?
一般的HTTP接口請求是在應(yīng)用層完成的,而RPC可以不依賴于應(yīng)用層協(xié)議费就,可以直接基于TCP進(jìn)行遠(yuǎn)程調(diào)用诉瓦,在傳輸層中即可完成通信,因此更適于某些對效率要求更高的場景力细。由于RPC調(diào)用方式依賴于客戶端與服務(wù)端之間建立Socket連接來實(shí)現(xiàn)二進(jìn)制數(shù)據(jù)通信睬澡,底層會比較復(fù)雜,所以一些RPC框架應(yīng)運(yùn)而生來封裝這種復(fù)雜性眠蚂,讓開發(fā)者將精力聚焦于業(yè)務(wù)之上猴贰。常見的RPC框架包括:Thrift、gRPC河狐、Finagle米绕、Dubbo等等。
2. Thrift文件的定義與編寫
使用IDL對接口進(jìn)行描述的thrift文件命名一般都是以“.thrift”作為后綴:XXX.thrift馋艺,可以在該文件的開頭為該文件加上命名空間限制栅干,格式為:namespace語言 命名空間的名字;
編寫IDL文件時(shí)需要注意的問題
函數(shù)的參數(shù)要用數(shù)字依序標(biāo)好捐祠,序號從1開始碱鳞,形式為:“序號:參數(shù)名”;
每個(gè)函數(shù)的最后要加上“,”,最后一個(gè)函數(shù)不加踱蛀;
在IDL中可以使用/……/添加注釋
變量名不可以數(shù)字開頭
Thrift支持的數(shù)據(jù)類型
基本類型:
bool:布爾值窿给,true 或 false,對應(yīng) Java 的 boolean
byte:8 位有符號整數(shù)率拒,對應(yīng) Java 的 byte
i16:16 位有符號整數(shù)崩泡,對應(yīng) Java 的 short
i32:32 位有符號整數(shù),對應(yīng) Java 的 int
i64:64 位有符號整數(shù)猬膨,對應(yīng) Java 的 long
double:64 位浮點(diǎn)數(shù)角撞,對應(yīng) Java 的 double
string:未知編碼文本或二進(jìn)制字符串,對應(yīng) Java 的 String
結(jié)構(gòu)體類型:
struct:定義公共的對象,類似于 C 語言中的結(jié)構(gòu)體定義谒所,在 Java 中是一個(gè) JavaBean
容器類型:
list:對應(yīng) Java 的 ArrayList
set:對應(yīng) Java 的 HashSet
map:對應(yīng) Java 的 HashMap
異常類型:
exception:對應(yīng) Java 的 Exception
服務(wù)類型:
service:對應(yīng)服務(wù)的類
3. 生成接口文件
搭建Thrift編譯環(huán)境之后热康,使用下面命令即可將IDL文件編譯成對應(yīng)語言的接口文件:
thrift --gen <language> <Thrift filename>
生成接口文件之后就可以繼續(xù)接下來的服務(wù)端和客服端代碼開發(fā)了,下次繼續(xù)學(xué)習(xí)劣领。
4. Thrift的相關(guān)網(wǎng)址和資料:
- Thrift的官方網(wǎng)站:http://thrift.apache.org/
- Thrift官方下載地址:http://thrift.apache.org/download
- Thrift官方的IDL示例文件(自己寫IDL文件時(shí)可以此為參考):
https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=test/ThriftTest.thrift;hb=HEAD
- 各種環(huán)境下搭建Thrift的方法:http://thrift.apache.org/docs/install/
該頁面中共提供了CentOS\Ubuntu\OS X\Windows幾種環(huán)境下的搭建Thrift環(huán)境的方法姐军。
參考:
https://blog.csdn.net/houjixin/article/details/42778335
https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/index.html