我所在公司的項(xiàng)目是采用基于Restful的微服務(wù)架構(gòu),隨著微服務(wù)之間的溝通越來(lái)越頻繁,就希望可以做成用rpc來(lái)做內(nèi)部的通訊,對(duì)外依然用Restful。于是就想到了google的grpc。
使用grpc的優(yōu)點(diǎn)很多,二進(jìn)制的數(shù)據(jù)可以加快傳輸速度,基于http2的多路復(fù)用可以減少服務(wù)之間的連接次數(shù),和函數(shù)一樣的調(diào)用方式也有效的提升了開發(fā)效率。
不過(guò)使用grpc也會(huì)面臨一個(gè)問(wèn)題,我們的微服務(wù)對(duì)外一定是要提供Restful接口的,如果內(nèi)部調(diào)用使用grpc,在某些情況下要同時(shí)提供一個(gè)功能的兩套API接口,這樣就不僅降低了開發(fā)效率,也增加了調(diào)試的復(fù)雜度。于是就想著有沒有一個(gè)轉(zhuǎn)換機(jī)制,讓Restful和gprc可以相互轉(zhuǎn)化。
在網(wǎng)上看到一個(gè)解決方案,https://github.com/grpc-ecosystem/grpc-gateway,簡(jiǎn)單的說(shuō)就是有一個(gè)網(wǎng)關(guān)服務(wù)器負(fù)責(zé)轉(zhuǎn)化和代理轉(zhuǎn)發(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
這里最好把編譯生成的二進(jìn)制文件的目錄放在
網(wǎng)友評(píng)論