閱讀文本大概需要3分鐘。
在微服務中,使用什麼協議來構建服務體系,一直是個熱門話題。爭論的焦點集中在兩個候選技術: RPC or Restful
RPC:Remote Produce Call遠程過程調用,類似的還有RMI。自定義數據格式,基於原生TCP通信,速度快,效率高。早期的webservice,現在熱門的Dubbo,都是RPC的典型代表。
Http:http其實是一種網絡傳輸協議,基於TCP,規定了數據傳輸的格式。現在客戶端瀏覽器與服務端通信基本都是採用Http協議,也可以用來進行遠程服務調用。缺點是消息封裝臃腫,優勢是對服務的提供和調用方沒有任何技術限定,自由靈活,更符合微服務理念。
0x01:RPC
RPC 即遠程過程調用(Remote Procedure Call Protocol,簡稱RPC),像調用本地服務(方法)一樣調用服務器的服務(方法)。通常的實現有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是傳輸數據的格式。
RPC框架的主要目標就是讓遠程服務調用更簡單、透明。RPC框架負責屏蔽底層的傳輸方式(TCP或者UDP)、序列化方式(XML/JSON/二進制)和通信細節。開發人員在使用的時候只需要瞭解誰在什麼位置提供了什麼樣的遠程服務接口即可,並不需要關心底層通信細節和調用過程。
0x02:Restful
REST即表述性狀態傳遞(Representational State Transfer,簡稱REST),是一種軟件架構風格。REST通過HTTP協議定義的通用動詞方法(GET、PUT、DELETE、POST) ,以URI對網絡資源進行唯一標識,響應端根據請求端的不同需求,通過無狀態通信,對其請求的資源進行表述。滿足REST約束條件和原則的架構,就被稱爲是RESTful架構.
0x03:區別
使用RPC遠程服務調用方式與傳統http接口直接調用方式的差別在於:
從使用方面看,Http接口只關注服務提供方(服務端),對於客戶端怎麼調用,調用方式怎樣並不關心,通常情況下,客戶端使用Http方式進行調用時,只要將內容進行傳輸即可,這樣客戶端在使用時,需要更關注網絡方面的傳輸,比較不適用於業務方面的開發;而RPC服務則需要客戶端接口與服務端保持一致,服務端提供一個方法,客戶端通過接口直接發起調用,業務開發人員僅需要關注業務方法的調用即可,不再關注網絡傳輸的細節,在開發上更爲高效。
從性能角度看,使用Http時,Http本身提供了豐富的狀態功能與擴展功能,但也正由於Http提供的功能過多,導致在網絡傳輸時,需要攜帶的信息更多,從性能角度上講,較爲低效。而RPC服務網絡傳輸上僅傳輸與業務內容相關的數據,傳輸數據更小,性能更高。
從運維角度看,使用Http接口時,常常使用一個前端代理,來進行Http轉發代理請求的操作,需要進行擴容時,則需要去修改代理服務器的配置,較爲繁瑣,也容易出錯。而使用RPC方式的微服務,則只要增加一個服務節點即可,註冊中心可自動感知到節點的變化,通知調用客戶端進行負載的動態控制,更爲智能,省去運維的操作。
參考:https://www.cnblogs.com/willpan-z/p/9438930.html
☆
往期精彩
☆
03 精講Spring Boot—入門+進階+實例
關注我
每天進步一點點
喜歡!在看☟