轉自:
http://www.dongliu.net/post/622450
Google 剛剛開源了grpc, 一個基於HTTP2 和 Protobuf 的RPC 實現。
Protobuf 本身雖然提供了RPC 的定義語法,但是一直以來,Google 只開源了Protobuf 序列化反序列化的代碼,而沒有開源RPC 的實現,於是存在着眾多良莠不齊的第三方RPC 實現。
從實現和特性看來,grpc 更多的是考慮移動場景情況下客戶端和服務端的通信,正如其自稱的「general RPC framework that puts mobile and HTTP/2 first」。HTTP2 本身提供了連接多路復用、Body 和 Header 壓縮等機制,grpc 基於此可以提供比較高效的實現。
grpc 所使用的依賴都比較新,如protbuf 需要3.0 版本, c++ 使用了c++11, Java 實現中的netty 需要5.0 版本, HTTP2 也是剛剛定稿。這些依賴中很多都還是沒有正式release ,所以目前來看grpc 還不是一個可穩定使用的狀態。
grpc 提供了c 、Java、golang 的原生實現,並以c 共享庫的方式來支持Node.js, Python, Ruby, Objective-C, PHP 和 C# 語言 (由此看來,c++, Java 和golang 在Google 有着一等公民的地位)。其中Java 語言的實現亦可以用於Android 客戶端,Objective-C 的實現主要針對IOS 客戶端。