什么是RPC?它干了些什么?


RPC

遠程過程調用協議。通過網絡從遠程計算機程序請求服務,不關心底層網絡技術的協議。簡而言之,RPC從一台機器(客戶端)通過參數傳遞的方式調用另一台機器(服務器)的方法(服務)並得到返回結果。

RPC干了什么?

  • 確定客戶端與服務端間的通信協議
  • 高效網絡通信(一般選擇Netty作為網絡通信框架)
  • 服務器提供的服務如何暴露給客戶端(zookeeper注冊服務)
  • 客戶端如何發現暴露的服務(尋址找到服務)
  • 請求和響應高效序列化和反序列化(json,protobuf)

RPC實現原理架構圖

組成說明

1、客戶端:服務調用端

2、client stub:存放服務器地址信息,打包客戶端數據成網絡消息,再通過網絡傳輸發送給服務器

3、server stub:解壓客戶端發送的請求消息,調用服務器

4、服務端:服務真正提供者

工作流程

  1. 建立連接。建議長連接,心跳定期檢查連接是否還在
  2. 服務尋址。提供者向注冊中心(zookeeper)注冊服務,調用者向注冊中心查詢訂閱服務,調用者找到IP和Port調用提供者的接口。提供者定期向注冊中心發送心跳檢測
  3. 網絡傳輸數據。序列化和反序列化
  4. 服務調用。調用者調用提供者接口得到返回結果,進行業務處理

RPC主流框架有哪些?

  • RMI
    • java實現
  • Hession 
    • 基於http協議,采用二進制編碼
  • protobuf-rpc-pro   
    • java類庫,基於Protocol Buffers 協議,Netty底層的NIO
  • Thrift
    • 支持多種語言
  • Avro 
    • 雲計算的數據交換和存儲的Protocol,支持HTTP,TCP協議
  • Dubbo
    • 高性能服務框架     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM