91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

thrift原理是什么

發布時間:2021-07-20 09:35:59 來源:億速云 閱讀:208 作者:chen 欄目:大數據

本篇內容主要講解“thrift原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“thrift原理是什么”吧!

簡介

  • Thrift是一款Facebook開發的rpc框架( remote procedure call),并且已經加入到Apache項目。

  • Thrift是采用二進制編碼協議,使用TCP/IP傳輸協議的一種RPC實現,而XML-RPC/JSON-RPC/SOAP與WSDL協議棧采用文本協議,WSDL的實現WebService采用HTTP作為傳輸協議,對于網絡數據傳輸,TCP/IP協議的性能要高于HTTP協議,不僅因為HTTP協議是應用層協議,HTTP協議傳輸內容除了應用數據本身之外,還有響應狀態碼、Header信息等。

RPC介紹

可以用一張圖體現:

thrift原理是什么

Thrift工作流程

  1. 設計所需要的服務

  2. 根據設計的服務,編寫Thrift IDL服務描述文件

  3. 根據編寫的Thrift IDL服務描述文件使用Thrift提供的代碼生成工具生成服務端與客戶端的代碼

  4. 實現服務端業務邏輯的編寫,同時實現客戶端調用代碼的編寫

  5. 運行服務端與客戶端

Thrift內部運行

Thrift運行時的網絡堆棧包括Transport、Protocol、Processor、Server四個部分。如下圖所示:

thrift原理是什么

Transport

  • Transport:提供了通過網絡讀寫數據的方法;

  • Thrift 源碼中,則是通過將 socket 包裝成各種 Transport 來使用

  • java實現方式:

    a、TSocket與TIOStreamTransport基于阻塞I/O模型;

    b、TnonblockingTransort、TNonblockingSocket基于非阻塞模型;

    c、TMemoryInputTransport、TMemoryBuffer基于字節數組作為輸入輸出流的封裝;

    d、TFastFramedTransport是內存利用率更高的一個內存讀寫緩存區,它使用自動增長的byte[](長度不夠才新建),而不是每次都新建一個byte[],提高了內存使用率;

Protocol

  • Transport:提供了對網絡傳輸數據進行序列化/反序列化的具體實現

  • java實現方式:

    a、TbinaryProtocol:二進制格式傳輸協議

    b、TCompactProtocol:壓縮二進制格式傳輸協議

    c、TJSONProtocol:JSON格式傳輸協議

    d、TSimpleJSONProtocol:簡單的JSON格式數據傳輸協議

    e、TDebugProtocol:調試時使用的文本傳輸協議

  •  protocol 就是 transport 的上一層。 transport 負責數據傳輸, 但是要使得程序知道傳輸的數據具體是什么, 還得靠 protocol 這個組件來對數據進行解析, 解析成對應的結構代碼供程序直接調用。

Processor

  • Thrift通過使用編寫的Thrift IDL描述文件來自動生成Processor,它從負責輸入的Protocol讀取數據,將其傳遞給處理程序,并將結果發送到負責輸出的Protocol。

  • Processor:通過 transport 和 protocol 這兩層之后, 程序已經可以獲得對應的數據結構,但是數據結構需要被使用才有價值。 在 Thrift 里面,就是被 processor調用。

Server

  • Server將Transport、Protocol、Processor組合在一起,將服務運行起來,在指定的端口等待調用端的請求

  • java實現方式:

    a、TnonblockingServer:基于多線程非阻塞I/O模型實現,適用于連接數較多的高并發環境

    b、TthreadPoolServer:基于多線程阻塞I/O模型實現,比TNonblockingServer需要耗費更多的系統資源

    c、ThsHaServer:半同步、異步服務器

    d、TsimpleServer:基于單線程的阻塞I/O模型實現,主要用于測試,不推薦在生產環境中使用

Client

  • 一個同步調用的客戶端Client,一個異步調用的客戶端AsyncClient

thrift原理是什么

thrift原理是什么thrift原理是什么

thrift原理是什么

Thrift數據類型

thrift原理是什么

thrift原理是什么

thrift原理是什么

thrift原理是什么

thrift原理是什么

thrift原理是什么

Thrift實現方式

  1. IDL描述性語言:當數據結構發生變化時,必須重新編輯IDL文件并生成相應的代碼

  2. 基于注解的方式

  • service <-> @ThriftService注解service類 @ThriftMethod注解該類中的方法

  • struct <-> @ThriftStruct 注解model類 @ThriftField注解該類中的getter方法

  • enum <-> @ThriftEnumValue 注解enum

到此,相信大家對“thrift原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

张掖市| 武邑县| 乐清市| 扶沟县| 会东县| 平阴县| 东至县| 麟游县| 遂宁市| 青浦区| 西宁市| 五原县| 汉源县| 青田县| 大关县| 沙田区| 辉县市| 凉山| 驻马店市| 丹巴县| 涪陵区| 天水市| 常熟市| 南平市| 蓬莱市| 平顶山市| 鲁山县| 万宁市| 新蔡县| 虎林市| 嵊泗县| 东宁县| 三原县| 宝丰县| 苗栗县| 都江堰市| 常熟市| 渭南市| 郎溪县| 酉阳| 鹰潭市|