RPC發展歷史的幾個關鍵節點

注:了解更詳細的發展歷史,請閱讀RPC發展史。

RPC需要解決的問題

RPC 的出現的確為 分布式系統 構建帶來了便利,但與此同時分布式系統本身的問題也暴露了出來:

RPC的調用類型

在項目開發中常用的RPC調用方式有以下幾種:

RPC的基本原理

RPC的核心思想是將遠程調用封裝成本地調用,使得調用方無需關心底層網絡通信細節。當調用方需要調用遠程函數時,它會像調用本地函數一樣發起調用請求,然后等待遠程函數的返回結果。

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 技術發展至今,底層核心組成部分始終沒有很大變化。無論是幾十年前的 CORBA,還是如今流行的 Dubbo、gRPC 等,它們基本都由以下五個部分組成:

序列化

什么是序列化?序列化就是將數據結構或對象轉換成二進制串的過程,也就是編碼的過程。

什么是反序列化?將在序列化過程中所生成的二進制串轉換成數據結構或者對象的過程。

為什么需要序列化?轉換為二進制串后才好進行網絡傳輸嘛!

為什么需要反序列化?將二進制轉換為對象才好進行后續處理!

現如今序列化的方案越來越多,每種序列化方案都有優點和缺點,它們在設計之初有自己獨特的應用場景,那到底選擇哪種呢?從RPC的角度上看,主要看三點:

目前互聯網公司廣泛使用Protobuf、Thrift、Avro等成熟的序列化解決方案來搭建RPC框架,這些都是久經考驗的解決方案。

通訊協議

RPC調用過程通常采用的底層協議有:TCP、HTTP、UDP。報文格式由序列化方式來決定。

服務注冊與服務發現

在分布式環境中,服務的命名及注冊從約定模式逐步發展到了分布式注冊中心,各種發現方式依然普遍應用于實現中,包括約定模式。

  1. 服務注冊:服務進程在注冊中心注冊自己的元數據信息,通常包括主機和端口號等信息。
  2. 服務發現:客戶端服務進程向注冊中心發起查詢,獲取可用的服務信息。

RPC 技術和RPC 框架簡介

常見 RPC 技術和框架有:

RPC與SOAP

RPC 提供了一種簡單且輕量級的通信協議,而 SOAP 提供了一個標準化的消息傳遞框架,可以跨不同的平臺和編程語言使用。

  1. RPC(遠程過程調用)是一種在遠程系統上執行代碼的協議,而 SOAP(簡單對象訪問協議)是一種基于 XML 的消息傳遞協議,用于交換數據。
  2. RPC 可以使用多種協議,包括 SOAP,而 SOAP 只依賴于 XML 和 HTTP。
  3. 與 RPC 相比,SOAP 提供了更好的互操作性和標準化,這可以簡化跨各種平臺的實施。

RPC與REST

REST和RPC協議具有相似的品質。例如,這兩種協議都用于通過分布式系統進行通信。然而,它們仍然有不同的基本結構和用例。

REST必須是無狀態的,但RPC系統可以是無狀態的或無狀態的。REST還具有更大的靈活性,因為它可以在一個API中以多種格式(如JavaScript對象符號或可擴展標記語言)發送數據,而RPC使用固定數據格式。

推薦閱讀

終于把RPC框架整明白了
RPC理論及框架詳解

上一篇:

深入探討本地向量庫的應用場景

下一篇:

一文快速了解如何調用天工API接口
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費