rpc 協議規範 之 rmi http webservice 和 一些框架
RPC(Remote Procedure Call)是遠端呼叫,是一種思想,也是一種協議規範。簡單地說就是能使應用像呼叫本地方法一樣的呼叫遠端的過程或服務,可以應用在分散式服務、分散式計算、遠端服務呼叫等許多場景。
rpc 的實現方式多樣化:如http,webservice,rmi
此外業界有很多開源的優秀 RPC 框架,例如 Dubbo、Thrift、gRPC、Hprose 等等
下面介紹每種rpc 實現的側重點:
1:HTTP
HTTP(HyperText Transfer Protocol)是應用層通訊協議,使用標準語義訪問指定資源(圖片、介面等),網路中的中轉伺服器能識別協議內容。HTTP 協議是一種資源訪問協議,通過 HTTP 協議可以完成遠端請求並返回請求結果。
HTTP 的優點是簡單、易用、可理解性強且語言無關,在遠端服務呼叫中包括微博有著廣泛應用。HTTP 的缺點是協議頭較重,一般請求到具體伺服器的鏈路較長,可能會有 DNS 解析、Nginx 代理等。
HTTP 是一種 RPC 的實現,也可以說HTTP 是 RPC 框架的傳輸協議。
2 RMI
RMI(Remote Method Invocation)是指 Java 語言中的遠端方法呼叫,RMI 中的每個方法都具有方法簽名,RMI 客戶端和伺服器端通過方法簽名進行遠端方法呼叫。RMI 只能在 Java 語言中使用,可以把 RMI 看作面向物件的 Java RPC。
3 Web Service
Web Service 是一種基於 Web 進行服務釋出、查詢、呼叫的架構方式,重點在於可以為不同的異構系統提供服務。相對http 協議來說http協議傳輸的都是字串,webservice則是包裝成了更復雜的物件。Web Service 一般通過 WSDL 描述服務,使用 SOAP協議通過 HTTP 呼叫服務。
4Thrift、gRPC、Hessian、Hprose ,apache avro,zeroc ice.
重點關注於服務的跨語言呼叫,能夠支援大部分的語言進行語言無關的呼叫,非常適合於為不同語言提供通用遠端服務的場景。但這類框架沒有服務發現相關機制,實際使用時一般需要代理層進行請求轉發和負載均衡策略控制
5 Dubbo、motan, 淘寶HSF,亞馬遜coral service , 等框架:
除了有rpc 的功能,服務發現及治理功能,適用於大型服務的微服務化拆分以及管理,對於特定語言(Java)的專案可以十分友好的透明化接入。但缺點是語言耦合度較高,跨語言支援難度較大
6 socket
謂socket通常也稱作"套接字",實現伺服器和客戶端之間的物理連線,並進行資料傳輸,主要有udp和tcp兩個協議。socket處於網路協議的傳輸層。
udp協議:廣播式資料傳輸,不進行資料驗證
tcp協議:傳輸控制協議,一種面向連線的協議,給使用者程序提供可靠的全雙工的位元組流,
socket傳輸的特點:
優點
1) 傳輸資料為位元組級,傳輸資料可自定義,資料量小(對於手機應用講:費用低)
2) 傳輸資料時間短,效能高
3) 適合於客戶端和伺服器端之間資訊實時互動
4) 可以加密,資料安全性強
缺點:
1) 需對傳輸的資料進行解析,轉化成應用級的資料
2) 對開發人員的開發水平要求高
3) 相對於http協議傳輸,增加了開發量