當前位置:首頁 » 密碼管理 » thrift加密

thrift加密

發布時間: 2025-10-02 03:27:15

⑴ 【網路】一文帶你了解什麼是RPC

一文帶你了解什麼是RPC

RPC(Remote Procere Call Protocol)遠程過程調用協議,是一種通過網路從遠程計算機程序上請求服務,而不需要了解底層網路技術的協議。簡言之,RPC使得程序能夠像訪問本地系統資源一樣,去訪問遠端系統資源。

一、RPC的關鍵方面

RPC涉及的關鍵方麵包括:通訊協議、序列化、資源(介面)描述、服務框架、性能、語言支持等。簡單來說,RPC就是從一台機器(客戶端)上通過參數傳遞的方式調用另一台機器(伺服器)上的一個函數或方法(可以統稱為服務)並得到返回的結果。

二、RPC架構組件

一個基本的RPC架構應該至少包含以下四個組件:

  • 客戶端(Client):服務調用方,即服務消費者。
  • 客戶端存根(Client Stub):存放服務端地址信息,將客戶端的請求參數數據信息打包成網路消息,再通過網路傳輸發送給服務端。
  • 服務端存根(Server Stub):接收客戶端發送過來的請求消息並進行解包,然後再調用本地服務進行處理。
  • 服務端(Server):服務的真正提供者。

三、RPC的具體調用過程

  1. 服務消費者(Client客戶端)通過調用本地服務的方式調用需要消費的服務。
  2. 客戶端存根(Client Stub)接收到調用請求後,負責將方法、入參等信息序列化(組裝)成能夠進行網路傳輸的消息體。
  3. 客戶端存根(Client Stub)找到遠程的服務地址,並將消息通過網路發送給服務端。
  4. 服務端存根(Server Stub)收到消息後進行解碼(反序列化操作)。
  5. 服務端存根(Server Stub)根據解碼結果調用本地的服務進行相關處理。
  6. 本地服務執行具體業務邏輯,並將處理結果返回給服務端存根(Server Stub)。
  7. 服務端存根(Server Stub)將返回結果重新打包成消息(序列化)並通過網路發送至消費方。
  8. 客戶端存根(Client Stub)接收到消息,並進行解碼(反序列化)。
  9. 服務消費方得到最終結果。

RPC框架的實現目標是將上述過程完好地封裝起來,讓用戶感覺上像調用本地服務一樣調用遠程服務。

四、RPC與相關技術或概念的區別

  • REST:可以看作是HTTP協議的一種直接應用,默認基於JSON作為傳輸格式,使用簡單,學習成本低效率高,但安全性較低。
  • SOAP:是一種數據交換協議規范,是一種輕量的、簡單的、基於XML的協議的規范。SOAP在安全方面是通過使用XML-Security和XML-Signature兩個規范組成了WS-Security來實現安全控制的。
  • SOA:面向服務架構,它可以根據需求通過網路對鬆散耦合的粗粒度應用組件進行分布式部署、組合和使用。SOA是一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義介面進行通訊,不涉及底層編程介面和通訊模型。

五、RPC框架需要解決的問題

  1. 如何確定客戶端和服務端之間的通信協議?
  2. 如何更高效地進行網路通信?
  3. 服務端提供的服務如何暴露給客戶端?
  4. 客戶端如何發現這些暴露的服務?
  5. 如何更高效地對請求對象和響應結果進行序列化和反序列化操作?

六、RPC的實現基礎

  1. 需要有非常高效的網路通信,比如一般選擇Netty作為網路通信框架。
  2. 需要有比較高效的序列化框架,比如谷歌的Protobuf序列化框架。
  3. 可靠的定址方式(主要是提供服務的發現),比如可以使用Zookeeper來注冊服務等等。
  4. 如果是帶會話(狀態)的RPC調用,還需要有會話和狀態保持的功能。

七、RPC使用的關鍵技術

  1. 動態代理:生成Client Stub和Server Stub時需要用到java動態代理技術,可以使用JDK提供的原生的動態代理機制,也可以使用開源的CGLib代理、Javassist位元組碼生成技術。
  2. 序列化和反序列化:在網路中,所有的數據都將會被轉化為位元組進行傳送。為了能夠使參數對象在網路中進行傳輸,需要對這些參數進行序列化和反序列化操作。目前比較高效的開源序列化框架有Kryo、FastJson和Protobuf等。
  3. NIO通信:出於並發性能的考慮,傳統的阻塞式IO顯然不太合適,因此我們需要非同步的IO,即NIO。Java提供了NIO的解決方案,Java 7也提供了更優秀的NIO.2支持。可以選擇Netty或者MINA來解決NIO數據傳輸的問題。
  4. 服務注冊中心:可選Redis、Zookeeper、Consul、Etcd等。一般使用ZooKeeper提供服務注冊與發現功能,解決單點故障以及分布式部署的問題。

八、主流RPC框架

  1. RMI:利用java.rmi包實現,基於Java遠程方法協議(Java Remote Method Protocol)和Java的原生序列化。
  2. Hessian:一個輕量級的remoting on http工具,使用簡單的方法提供了RMI的功能。基於HTTP協議,採用二進制編解碼。
  3. protobuf-rpc-pro:一個Java類庫,提供了基於Google的Protocol Buffers協議的遠程方法調用的框架。基於Netty底層的NIO技術,支持TCP重用/keep-alive、SSL加密、RPC調用取消操作、嵌入式日誌等功能。
  4. Thrift:一種可伸縮的跨語言服務的軟體框架。它擁有功能強大的代碼生成引擎,無縫地支持C++、C#、Java、Python、PHP和Ruby等多種語言。Thrift允許定義一個描述文件,描述數據類型和服務介面。依據該文件,編譯器方便地生成RPC客戶端和伺服器通信代碼。
  5. Avro:出自Hadoop之父Doug Cutting,旨在建立一個新的、標准性的雲計算的數據交換和存儲的Protocol。支持HTTP、TCP兩種協議。
  6. Dubbo:阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spring框架無縫集成。

綜上所述,RPC是一種強大的網路通信技術,通過封裝復雜的底層細節,使得遠程服務調用變得像本地服務調用一樣簡單方便。

熱點內容
手機游戲怎麼解壓 發布:2025-10-02 05:04:14 瀏覽:999
手機wf改密碼怎麼改密碼 發布:2025-10-02 04:57:18 瀏覽:614
phpsql資料庫 發布:2025-10-02 04:43:57 瀏覽:769
sony存儲卡被鎖定 發布:2025-10-02 04:30:03 瀏覽:753
c語言四部 發布:2025-10-02 04:23:59 瀏覽:281
伺服器郵件服務怎麼關閉 發布:2025-10-02 04:06:01 瀏覽:676
android創建service 發布:2025-10-02 03:44:40 瀏覽:832
做pscad的台式電腦要什麼配置 發布:2025-10-02 03:37:16 瀏覽:33
thrift加密 發布:2025-10-02 03:27:15 瀏覽:850
寶駿310最低配置是哪個版 發布:2025-10-02 03:26:39 瀏覽:316