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

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

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

在網(wǎng)上看到一個解決方案,https://github.com/grpc-ecosystem/grpc-gateway,簡單的說就是有一個網(wǎng)關服務器負責轉化和代理轉發(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

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

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式