參考文章?grpc-我們為什么要用gRpc?gRpc快在哪里?_grpc 優點-CSDN博客
?GRPC詳解-CSDN博客
1.?什么是gRPC
? ? ? ? gRPC 是一個高性能 遠程調用(RPC)框架,屏蔽分布式計算中的各種調用細節,可以像本地調用一樣調用遠程的函數。
2.?為什么要用gRPC? ?
(1) 性能高:使用 protobuf,性能高于json(快6倍); 使用 http2.0,性能高于 http1.1
(2)?生態好:開源,而且背靠Google,連nginx都支持gRPC
(3) 強數據類型:編譯環節就幫助避免了數據類型問題。
(4) 跨語言:同一個協議文件(.proto),不用修改,可以使用在多種語言上,包括 go,java,c
3. 使用方式
(1) gRPC 通過 protocol buffers (.proto文件) 來定義接口,接口由服務端和客戶端共同使用。
(2) 服務端將方法或者類注冊到服務中。
(3) 客戶端只要連接成功,就可以調用注冊進服務的接口,把請求發到服務端,并獲得返回。
4.?為什么protobuf比json快?
? ? ?主要是因為數據結構節省空間,具體包括:
(1)?無需分隔符:存儲了字段的類型,可以直接計算出value的長度,無需匹配分隔符。
(2)?空字段省略:若字段沒有被設置數字值,不需要進行編碼。json需要傳key和空值value。
(3)?二進制key:key 用字段的數字值轉換成二進制表示,比json的key用字符串表示節省空間。
5.?http2.0為什么比http1.1性能高?
(1)?多路復用:
http1:一次請求,一個響應,建立一個連接用完關閉,每一個請求都要建立一個連接。
http2:多個請求可并行執行,某個請求任務耗時嚴重,不會影響到其它連接的正常執行
而且,http2 減少了連接數,避免了頻繁重建tcp,改善網絡擁塞情況。
(2) 數據壓縮:
http1:文本格式
http2:二進制格式,并且對body進行gzip壓縮。
(3)?二進制分幀:
http1:以分隔符分割消息的數據,必須按順序發送,在完成之前不能停止。
http2:將所有傳輸的信息分割為更小的消息和幀,可以亂序發送,然后根據每個幀首部的流標識符號進行組裝。
(4)?支持服務器主動推送
http2?主動推送資源,節省前端的請求次數。