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