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