服務接口,選擇rpc還是http?


從通信內容/功能上看

http應用於web環境,rpc應用於分布式調度
從功能上看沒有太大區別,很多情況下rpc與消息中間件結合通信實現分布式調度

從用法上看
兩者都是c/s結構,無太大區別

從實現上看
類型 底層協議

從性能上看
1、聽說rpc是長鏈接,http是三次握手。
長鏈接雖然,可以減少tcp開銷,相對的它會導入新的缺點,是否會對連接數數量有限制呢?

2、假如rpc的性能比http高,無非就是socket多連接了三次。如果http結合非阻塞io服務器(例如tornado),這三次連接開銷真沒啥消耗。
當然網絡也會有一點消耗. 非阻塞io服務器可以將rpc與http的性能差距拉平

從鏈接開銷上,比較性能問題,本就是錯誤,兩者是在解決不同問題,所有沒有必要在這個問題上糾結。請繼續看下面

從概念上看
rpc遠程調用
http超文本傳輸協議

該如何選擇呢?
1、思考這個問題,應該用最簡單的方式,相信協議設計者,會選擇最好方式來解決它面臨的問題(畢竟協議代表着公認),我們只用關注它解決什么問題。
rpc解決什么問題呢?遠程調用。“調用”屬於程序內部之間。調用總不可能只傳簡單參數,會涉及到對象序列化,
這個對象在開發是代碼總不會用兩套吧,server與client很可能是在一起的屬於一個組件.

2、連接數不該是”調用”考慮的事。在創建一個全局連接后,不會再頻繁創建連接. 如果rpc作為服務,頻繁連接的場景不適合它

總結
1、c與s關系緊密程度
rpc遠程調用,屬於程序內部之間,cs關系密切。
http,適合不同組件, cs關系獨立。

2、連接數
rpc叫調用,頻繁連接的場景不適合它
http的應用的web環境,本就是頻繁連接的場景


免責聲明!

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



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