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

posted @ 2022-01-26 00:52  你是我的神奇  阅读(3980)  评论(0编辑  收藏  举报