RPC、RMI、HTTP、REST的區別
RPC:遠程服務調用(Remote Procedure Call),加上Protocol后可以稱為遠程過程調用協議,可以用不同的語言實現,可以借用HTTP協議或者其他協議來實現,一般都是通過基於TCP/IP的自定義協議實現。
HTTP協議和TCP/IP協議有什么關系呢?HTTP是應用層協議,TCP/IP是傳輸層協議。
HTTP協議請求中會包含很多內容,傳輸效率要低,一般RPC實現都不采用HTTP協議;RPC采用自定義的TCP協議,可以精簡報文格式,一般都是采用二進制形式,客戶端和服務端采用統一的序列化和反序列化方式保持數據統一,效率更高,所以一般企業內部通信都是采用自定義TCP的RPC協議,傳輸效率高。
HTTP:超文本傳輸協議(HyperText Transfer Protocal),是應用層的一種網絡傳輸協議,一般格式都是json或者xml,也是基於TCP/IP實現的。
REST:是一種架構風格,是基於HTTP協議的,可以理解稱一種API的規范,比如查詢都是GET請求,新增都是POST,修改是PUT,刪除是DELETE等。
RMI:遠程方法調用(Remote Method Invocation),是一種用於實現RPC的java API,僅僅應用在java程序上,依賴於JVM,因為他僅僅支持從一個JVM到另一個JVM的調用。
企業內部的微服務數據傳輸都是采用自定義的rpc實現的,傳輸效率更高;http一般是面向用戶的,規范統一,用戶使用起來方便,直接通過瀏覽器地址訪問接口即可。