必知必會 一文搞定理解RPC

2021-09-12 11:38:37 字數 1457 閱讀 1714

rpc的優點

rpc與http的區別

rpc的概念相信很多軟體從業人員或多或少都接觸過,從開發到測試都可能需要跟它打交道。

但是對於為什麼要用rpc?rpc的優點是什麼?rpc是什麼原理?它跟http有什麼不同?相信並不是每個人都比較熟悉。

那麼今天我們就來了解下到底什麼是rpc?

通常我們所說的rpc其實是說的rpc協議,即一種專門為服務間遠端呼叫而設計的一種通用協議。

該協議基於其它已有的傳輸協議,規定通訊方式為c/s架構;並且在**開發過程中要遮蔽掉底層通訊細節,

讓開發者像呼叫本地方法一樣,呼叫遠端服務。

基於rpc協議內容的說明,再來看看rpc的主要組成內容:

這是網路上的一張rpc架構組成圖,正好包含了上述列舉的幾項內容。

這張圖中的client就是我們要開發的功能**。如果我們想呼叫遠端服務的話,可以直接編寫類似本地方法的**;如:

calculator.add(1, 2)
然鵝,這裡並不是真的呼叫了本地的add實現方法,而是呼叫了客戶端stub模組;

而剩下的事情就交給客戶端stub,它會負責與服務端的stub進行通訊,使用約定的傳輸協議,內容協議等;

最後完成遠端呼叫並返回結果給client模組。

rpc協議是乙個開放的協議,不像tcp和http一樣規定了統一的標準,任意的使用方都只能使用相同的規則。

rpc協議可以有很多種實現,只要通訊雙方約定好就行了。目前市面上的rpc協議實現就有很多種:

這些協議可以適用於不同的業務場景,比如:dubbo協議適合高頻的小資料量呼叫,hessian則適合檔案傳輸,

而jsonrpc、grpc則適合跨語言的應用。這些協議也與tcp等協議類似,都規定了自己的頭資訊和body部分,

用於約定通訊的規則。

不使用rpc框架能不能進行rpc的呼叫呢?答案當然是可以的!那為什麼還需要rpc框架呢?因為有了rpc框架

我們在使用rpc呼叫時,就會更加的方便了。比如:rpc框架會幫助我們做這些事情:

有了rpc框架之後,就不需要再單獨的為專案開發這些基礎功能了,這樣開發具有rpc功能的客戶端、

服務端都跟開發普通本地模組一樣方便。

說了這麼多,那麼rpc到底有什麼優點呢?其實講rpc的優點要結合rpc的使用場景,否則rpc可能就無法體現它的優勢。

通常而言rpc的特點如下:

在上面的rpc協議中,也許你已經發現了有http協議。是的沒錯!就是http協議。

所以rpc和http本質上是面向不同場景的產物。而rpc也可以基於http協議來實現資訊內容的傳輸。

除此之外,rpc和http還有如下典型的區別:

簡而言之,就是rpc在遠端呼叫的場景下,比http更高效,更簡潔、附加特性更強大,更適合分布式和微服務的場景。

mysql必知必 SQL必知必會學習筆記 一

資料庫基礎 資料庫 資料庫軟體 確切的說,資料庫軟體應稱為資料庫管理系統 dbms 資料庫是通過dbms建立和操作的容器 資料庫相當於檔案櫃 容器 表相當於檔案 同乙個資料庫不能存在相同的表名,不同的資料庫可以存在相同的表名 主鍵應滿足的條件 唯一性非空性 not null 主鍵列中的值不允許修改或...

SQL必知必會筆記一

外來鍵 select語句 檢索單個列select prod name from products 從products表中檢索乙個名為prod name的列檢索多個列 檢索所有列select from products 檢索不同值 限制結果 排序資料select prod name from prod...

直白理解一文搞定http協議快取

由於http協議在快取機制這一塊做了很多次迭代。並且每次迭代都做了向下相容 因為如果你不向下相容,一些頑固的古董的瀏覽器廠商不願意公升級就會沒有支援http協議了。為了遷就他們所以做了向下相容 為了我們更好記住最新的,重要的,簡單的,常用的快取機制,我們先講終點。然後再掘墳,考古。這個是http1....