甚麼是gRPC?
由google開發的Remote Porcedure Call(RPC)架構,基於Http/2協議,屬開源軟體,且支援多語言,彼此之間傳輸的協議目前用proto3,只要有支援gRPC的語言都可以溝通。
SPDY
由Google開發的HTTP替代方案,基於TCP的傳輸,相較現行Http1.1改良的有
- Multiplexing(多線操作):改善Http1.1若請求數過多後就會造成阻塞
- 二進制傳輸:在傳輸層跟應用層加上2進制分層,用意是在不改動http1.1語意情況下做調整,將傳輸的內容分割成frame再轉換成2進制用已提升效能。
- 強制壓縮:傳輸的內容被強制壓縮,連同header也是(DEFLATE演算法)
- 服務端主動推送:實現長連接server call back
Http/2
為SPDY的優化版本,壓縮演算法改用HPACK,用來避免對Oracle攻擊
資料傳遞方式
- Unary RPC(一維遠端調用):如同一般短連結取資料。
- Server streaming RPC(服務端回應資料流遠端調用):Client發出請求後服務端回應資料已流的方式,可用在下載大量資料。
- Client streaming RPC(請求端用資料流遠端調用):Client已流的方式發出多筆消息
- Bidirectional streaming RPC(雙向流遠端調用):長連結應用