公司的一些平臺服務(wù)框架底層封裝了thrift提供服務(wù),最近項(xiàng)目不是很緊,于是研究了一下,剛剛?cè)腴T,理解得不深,寫這篇博文來整理一下思路.
什么是thrift?
簡單來說,是Facebook公布的一款開源跨語言的RPC框架.
那么問題來了.
什么是RPC框架?
RPC全稱為Remote Procedure Call,意為遠(yuǎn)程過程調(diào)用.
假設(shè)有兩臺服務(wù)器A,B.A服務(wù)器上部署著一個應(yīng)用a,B服務(wù)器上部署著一個應(yīng)用b,現(xiàn)在a希望能夠調(diào)用b應(yīng)用的某個函數(shù)(方法),但是二者不在同一個進(jìn)程內(nèi),不能直接調(diào)用,就需要通過網(wǎng)絡(luò)傳輸,在AB服務(wù)器之間建一條網(wǎng)絡(luò)傳輸通道,a把參數(shù)傳過去,b接收到參數(shù)調(diào)用自己的方法,得到結(jié)果,再通過網(wǎng)絡(luò)傳回給a,簡單講就是A通過網(wǎng)絡(luò)來調(diào)用B的過程.這個過程要涉及的東西很多,比如多線程,Socket,序列化反序列化,網(wǎng)絡(luò)I/O,很復(fù)雜,于是牛掰的程序員把這些封裝起來做成一套框架,供大家使用,就是RPC框架.
thrift的跨語言特型
thrift通過一個中間語言IDL(接口定義語言)來定義RPC的數(shù)據(jù)類型和接口,這些內(nèi)容寫在以.thrift結(jié)尾的文件中,然后通過特殊的編譯器來生成不同語言的代碼,以滿足不同需要的開發(fā)者,比如java開發(fā)者,就可以生成java代碼,c++開發(fā)者可以生成c++代碼,生成的代碼中不但包含目標(biāo)語言的接口定義,方法,數(shù)據(jù)類型,還包含有RPC協(xié)議層和傳輸層的實(shí)現(xiàn)代碼.
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26
