GRPC
1:grpc和rpc的區別是什么
rpc是一種協議,grpc是基於rpc協議實現的一種框架。這種框架有好幾種!其中GRPC是一種現代化開源的高性能RPC框架,他能夠運行與任意的環境之間,
最初由谷歌進行開發,注意grpc的序列化是通過protocol buffers實現的。
grpc的解決rpc三大問題:
①協議約定。gRPC 的協議是 Protocol Buffers,是一種壓縮率極高的序列化協議,Google 在 2008 年
開源了 Protocol Buffers,支持多種編程語言,所以 gRPC 支持客戶端與服務端可以用不同語言實現。 ②傳輸協議。gRPC 的數據傳輸用的是 Netty Channel, Netty 是一個高效的基於異步 IO 的網絡傳輸架構。
Netty Channel 中,每個 gRPC 請求封裝成 HTTP 2.0 的 Stream。 ③服務發現。gRPC 本身沒有提供服務發現的機制,需要通過其他組件
grpc是一種實現了rpc協議的框架,並且分別通過protocol buffer、netty channel 以及服務發現組件解決rpc的協議約定、傳輸協議、服務發現三大問題。
2:grpc的應用場景
- 實時聊天; - 微服務系統。
3:GRPC的安裝
我們要想使用grpc必須要安裝。不像rpc,他go內置了
Windows安裝
別人安裝文檔 https://studygolang.com/articles/21276 安裝文檔:https://www.cnblogs.com/hongjijun/p/13724738.html
1:https://github.com/protocolbuffers/protobuf/releases 下載對應的操作系統,然后解壓並且把解壓后bin文件,添加到PATH中去!
2:安裝grpc
go get google.golang.org/grpc
這一步安裝的是gRPC
的核心庫,但是這一步是需要(特別的上網方式)的。所以如果在安裝過程中出錯了,你可以科學一波,也可以找一找其他的安裝方法。
3:protoc-gen-go
上一步安裝的是protocol編譯器。而上文中我們提到了可以生成各種不同語言的代碼。因此,除了這個編譯器,我們還需要配合各個語言的代碼生成工具。
對於Golang
來說,稱為protoc-gen-go
。
不過在這兒有個小小的坑,github.com/golang/protobuf/protoc-gen-go
和google.golang.org/protobuf/cmd/protoc-gen-go
是不同的。
區別在於前者是舊版本,后者是google接管后的新版本,他們之間的API是不同的,也就是說用於生成的命令,以及生成的文件都是不一樣的。
因為目前的gRPC-go
源碼中的example用的是后者的生成方式,為了與時俱進,本文也采取最新的方式。
你需要安裝兩個庫:
go install google.golang.org/protobuf/cmd/protoc-gen-go go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
因為這些文件在安裝grpc
的時候,已經下載下來了,因此使用install
命令就可以了,而不需要使用get
命令。
然后你看你的$GOPATH路徑,應該有標1和2的兩個文件
4:實現GRPC的案例
gPRC 生成 go 代碼為什么會有 UnimplementedServer 和 mustEmbedUnimplementedServer? https://blog.csdn.net/canon_in_d_major/article/details/108135724
我們可以直接看官網的案例。如果你已經安裝好了上面的grpc
hello.proto
使用命令生成以下兩個文件:
protoc --go-out=./ Hello.proto protoc --go-grpc_out=./ Hello.proto
Hello_grpc_pb.go文件
server.go
client.go
參考博客:https://blog.csdn.net/qq_38721452/article/details/121566018