既然有 HTTP 請求,爲什麼還要用 RPC 調用?

HTTP協議,以其中的Restful規範爲代表,其優勢很大。它可讀性好,且可以得到防火牆的支持、跨語言的支持。而且,在去年的報告中,Restful大有超過RPC的趨勢。

本想引用下報告內容,無奈最近由於某些原因,KeXueShangWang被Qiang了。等我日後出牆時,再做補充。

但是HTTP也有其缺點,這是與其優點相對應的。首先是有用信息佔比少,畢竟HTTP工作在第七層,包含了大量的HTTP頭等信息。其次是效率低,還是因爲第七層的緣故。還有,其可讀性似乎沒有必要,因爲我們可以引入網關增加可讀性。此外,使用HTTP協議調用遠程方法比較複雜,要封裝各種參數名和參數值。

 

而RPC則與HTTP互補,我們詳細介紹下。看完這篇回答,能讓你對RPC的產生、原理、實現代碼都有着清晰的瞭解。這樣,也能在業務系統中,在RPC和HTTP之間做好抉擇。

 

但需要再說一句,不是說RPC好,也不是說HTTP好,兩者各有千秋,還在比拼中。

 

要問我站誰?我根據業務場景,靈活站位……


 

RPC的英文全稱是Remote Procedure Call,翻譯爲中文叫“遠程過程調用”。其中稍顯晦澀的其實就是“過程”,過程其實就是方法。所以,可以把RPC理解爲“遠程方法調用”。

 

要了解遠程過程調用,那先理解過程調用。非常簡單,如下圖,就是調用一個方法。這太常見了,不多解釋。

而在分佈式系統中,因爲每個服務的邊界都很小,很有可能調用別的服務提供的方法。這就出現了服務A調用服務B中方法的需求,即遠程過程調用。

 

要想讓服務A調用服務B中的方法,最先想到的就是通過HTTP請求實現。是的,這是很常見的,例如服務B暴露Restful接口,然後讓服務A調用它的接口。基於Restful的調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章