我所在公司的項目是采用基于Restful的微服務架構,隨著微服務之間的溝通越來越頻繁,就希望可以做成用rpc來做內部的通訊,對外依然用Restful。于是就想到了google的grpc。

使用grpc的優(yōu)點很多,二進制的數據可以加快傳輸速度,基于http2的多路復用可以減少服務之間的連接次數,和函數一樣的調用方式也有效的提升了開發(fā)效率。

不過使用grpc也會面臨一個問題,我們的微服務對外一定是要提供Restful接口的,如果內部調用使用grpc,在某些情況下要同時提供一個功能的兩套API接口,這樣就不僅降低了開發(fā)效率,也增加了調試的復雜度。于是就想著有沒有一個轉換機制,讓Restful和gprc可以相互轉化。

在網上看到一個解決方案,https://github.com/grpc-ecosystem/grpc-gateway,簡單的說就是有一個網關服務器負責轉化和代理轉發(fā)。

如下圖:

安裝

首先要安裝ProtocolBuffers 3.0及以上版本。

mkdir tmp
cd tmp
git clone https://github.com/google/protobufcd protobuf
./autogen.sh
./configuremakemake check
sudo make install

然后使用go get獲取grpc-gateway。

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gatewaygo get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swaggergo get -u github.com/golang/protobuf/protoc-gen-go

這里最好把編譯生成的二進制文件的目錄放在

網友評論