也許大多數(shù)人接觸 Thrift 是從序列化開始的。每次搜索 “java序列化” + “方式”、“對比” 或 “性能” 等關(guān)鍵字時,搜索引擎總是會返回一大堆有關(guān)各種序列化方式的使用方法或者性能對比的結(jié)果給你,而其中必定少不了 Thrift,并且其性能還不錯嘞,至少比那戰(zhàn)斗力只有1的渣渣 java 原生序列化要強(qiáng)很多(好吧原諒我的小情緒……)。
然而,我最初接觸 Thrift 卻是從公司的一個項目開始。
也就在去年的這個時候,我所在事業(yè)部發(fā)現(xiàn)幾個 UGC 社區(qū)的小廣告特別嚴(yán)重,Boss 要求所有社區(qū)必須接入公司的富媒體監(jiān)控系統(tǒng)(負(fù)責(zé)公司所有業(yè)務(wù)的內(nèi)容審核、處罰工作,以下簡稱監(jiān)控系統(tǒng)),以實現(xiàn) UGC 內(nèi)容(包括文本、圖片、音視頻以及用戶頭像、昵稱等UserInfo)的準(zhǔn)實時上報與垃圾信息的自動處理(如清理現(xiàn)場、賬號封禁等)。出于對業(yè)務(wù)服務(wù)的最小侵入、功能復(fù)用和流程統(tǒng)一等原則的考慮,抽象出介于業(yè)務(wù)系統(tǒng)和監(jiān)控系統(tǒng)之間的接入系統(tǒng),統(tǒng)一負(fù)責(zé)對數(shù)據(jù)的接收、上報、重推、搜索、結(jié)果查詢以及對監(jiān)控系統(tǒng)處罰指令的轉(zhuǎn)發(fā)。該業(yè)務(wù)可簡單抽象成圖 1.1:
圖 1.1
由于監(jiān)控系統(tǒng)使用 Thrift 提供服務(wù),因此接入系統(tǒng)與監(jiān)控系統(tǒng)之間的交互都使用 Thrift 協(xié)議??紤]到接入的便捷性,業(yè)務(wù)系統(tǒng)可以使用 Thrift 和 Http 兩種協(xié)議與接入系統(tǒng)交互。
當(dāng)時是我一個人負(fù)責(zé)這個項目,由于對 Thrift 的認(rèn)識還是0,且項目時間短,所以總體上項目是非常趕的,一開始以為自己難以在規(guī)定時間內(nèi)完成,但想不到 Thrift 開發(fā)起來還真的是相當(dāng)?shù)谋憬?。系統(tǒng)按時上線了,至今也沒出什么幺蛾子。后來又通過學(xué)習(xí)進(jìn)一步了解了 Thrift,深以為是個必須入手的技能。
好吧,至此算是和 Thrift 正式結(jié)緣了。
二. 所謂的 RPC
在了解 Thrift 之前,先來簡單科普一下什么是 RPC(遠(yuǎn)程過程調(diào)用)。
先看下面這個栗子:
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列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實現(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