GRPC


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-gogoogle.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM