日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

《Thrift白皮書》小結(jié)

系統(tǒng) 2137 0

一.簡介

??? 定義:Thrift是facebook開發(fā)出的一個(gè) 軟件庫 和一組 代碼生成工具 ,以加快高效率、可擴(kuò)展的后端服務(wù)的開發(fā)與實(shí)現(xiàn)的速度。
??? 使用:先在一個(gè)單獨(dú)的語言無關(guān)的文件中定義數(shù)據(jù)類型和服務(wù)接口,再用生成器生成代碼,最后可以根據(jù)需要添加和修改生成代碼(可能用到Thrift的庫)。

??? 特色:多語言支持、庫和代碼生成器帶來的高效率。

?

二.基礎(chǔ)組件

??? 包括:類型、傳輸、協(xié)議、版本化和處理器

2.類型

??? 2.1.基本類型:bool,byte,i16,i32,i64,double,string

??? 2.2.結(jié)構(gòu)體:使用關(guān)鍵字struct定義

??? 2.3.容器:list<type>,set<type>,Map<type1,type2>

??? 2.4.異常:使用關(guān)鍵字exception定義

??? 2.5.服務(wù):使用關(guān)鍵字service定義

3.傳輸

??? 3.1.接口:TTransport,TServerTransport

??? 3.2.實(shí)現(xiàn):TSocket,TFileTransport,Utilities(TBufferdTransport,TFramedTransport和

????????????????? TMemoryBuffer)

4.協(xié)議:

??? 4.1.接口:雙向有序的消息傳遞

???????????????? 基本類型、容器及結(jié)構(gòu)體的編碼

??? 4.2.結(jié)構(gòu):Thrift協(xié)議是自定界的,沒有任何成幀,且不論編碼格式。

????????????????? 如需成幀可使用TFramedTransport來完成。

??? 4.3.實(shí)現(xiàn):所有數(shù)據(jù)按一種扁平的二進(jìn)制格式來寫的。

5.版本化:

??? 5.1.域標(biāo)識符:在語言無關(guān)文件中的變量前的數(shù)字,自動(dòng)添加的是從-1開始的負(fù)數(shù)

??? 5.2.lsset:用于對待預(yù)料之外的域

??? 5.3.案例分析:主要是客戶端和服務(wù)器新舊不匹配

??? 5.4.協(xié)議/傳輸版本化

6.遠(yuǎn)程過程調(diào)用實(shí)現(xiàn):

??? 6.1.TProcessor:核心接口,有bool process(TProtocol in,TProtocol out)

??? 6.2.生成代碼:特別提示下,內(nèi)部會(huì)生成相應(yīng)的Client類

??? 6.3.TServer:類型有TSimpleServer,TThreadedServer和TThreadPoolServer。

?

三.其他

7.實(shí)現(xiàn)細(xì)節(jié)

??? 7.1.目標(biāo)語言:C++,Java,Python,Ruby和PHP。

??? 7.2.生成的結(jié)構(gòu)體

??? 7.3.RPC方法識別

??? 7.4.服務(wù)器和多線程:Thrift實(shí)現(xiàn)了自己的多線程庫

??? 7.5.線程原語:命名空間facebook::thirft::concurrency中實(shí)現(xiàn)了Thrift線程庫:

?????????????????????? primitives,thread pool manager,timer manager。

????????????????? boost::shared_ptr,Mutex類,Condition類和Monitor類。

????????????????? 借用Java中thread(線程對象)和runnable(線程執(zhí)行邏輯)的區(qū)別的經(jīng)驗(yàn)。

??? 7.6.Thread,Runnable and shared_ptr

??? 7.7.ThreadManager

??? 7.8.TimerManager

??? 7.9.非阻塞操作:Thrift基于libevent和TFramedTransport。

??? 7.10.編譯器

??? 7.11.TFileTransport

8.Facebook的Thrift服務(wù):

??? Facebook中已大量使用Thrift,包括搜索、日志、手機(jī)、廣告和開發(fā)者平臺。

9.總結(jié):

??? 使用Thrift可以讓工程師們分而治之的將功能進(jìn)行劃分并可采用合適的語言類實(shí)現(xiàn),而不用在編寫重復(fù)的代碼。

《Thrift白皮書》小結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 婺源县| 阳城县| 平江县| 固安县| 原平市| 嘉黎县| 黄大仙区| 阳春市| 渝中区| 马龙县| 恩平市| 威海市| 澄江县| 将乐县| 顺平县| 黎城县| 濮阳县| 连南| 珠海市| 新巴尔虎左旗| 城市| 龙川县| 尉犁县| 平顺县| 梁平县| 游戏| 巫山县| 平昌县| 赣榆县| 隆安县| 江孜县| 搜索| 澄城县| 西充县| 钦州市| 七台河市| 东港市| 新巴尔虎左旗| 沛县| 安新县| 原阳县|