公司的一些平臺服務框架底層封裝了thrift提供服務,最近項目不是很緊,于是研究了一下,剛剛?cè)腴T,理解得不深,寫這篇博文來整理一下思路.
什么是thrift?
簡單來說,是Facebook公布的一款開源跨語言的RPC框架.
那么問題來了.
什么是RPC框架?
RPC全稱為Remote Procedure Call,意為遠程過程調(diào)用.
假設有兩臺服務器A,B.A服務器上部署著一個應用a,B服務器上部署著一個應用b,現(xiàn)在a希望能夠調(diào)用b應用的某個函數(shù)(方法),但是二者不在同一個進程內(nèi),不能直接調(diào)用,就需要通過網(wǎng)絡傳輸,在AB服務器之間建一條網(wǎng)絡傳輸通道,a把參數(shù)傳過去,b接收到參數(shù)調(diào)用自己的方法,得到結果,再通過網(wǎng)絡傳回給a,簡單講就是A通過網(wǎng)絡來調(diào)用B的過程.這個過程要涉及的東西很多,比如多線程,Socket,序列化反序列化,網(wǎng)絡I/O,很復雜,于是牛掰的程序員把這些封裝起來做成一套框架,供大家使用,就是RPC框架.
thrift的跨語言特型
thrift通過一個中間語言IDL(接口定義語言)來定義RPC的數(shù)據(jù)類型和接口,這些內(nèi)容寫在以.thrift結尾的文件中,然后通過特殊的編譯器來生成不同語言的代碼,以滿足不同需要的開發(fā)者,比如java開發(fā)者,就可以生成java代碼,c++開發(fā)者可以生成c++代碼,生成的代碼中不但包含目標語言的接口定義,方法,數(shù)據(jù)類型,還包含有RPC協(xié)議層和傳輸層的實現(xiàn)代碼.