01
—
什么是RPC
RPC是Remote Procedure Call 即远程过程调用,客户端可以远程调用另外一个应用所自定义的函数,即可拿到该函数所返回的数据内容,而不需要关心底层的TCP、UDP等细节。
而gRPC是RPC的一种实现高性能、开源框架,,产自 Google,基于 ProtoBuf 序列化协议进行开发,基于HTTP2协议,支持的语言有很多,GO、Java、Python等等。本文将介绍如何使用HTTP协议之间的区别、Go语言去使用grpc,以及如何在gin框架下去集成gRPC。

02
—
HTTP1.1与HTTP2的区别

图源网络,侵删
Http2的传输协议是二进制的,而Http1.1是纯文本。Http2支持客户端和服务端在一个TCP连接中,建立多个流,在同一个请求中,客户端可以多次发送数据,而服务端也可以在接收到请求后多次发送数据给客户端,它们之间建立了流连接。而Http1.1只支持客户端一次请求和服务端一次响应。Http2的速度大概是Http1.1的两倍。
03
—
Protobuf
Protobuf即Protocol Buffers,是Google公司开发的一种跨语言和平台的序列化数据结构的方式,是一个灵活的、高效的用于序列化数据的协议。与XML和JSON格式相比,protobuf更小、更快、更便捷。protobuf是跨语言的,并且自带一个编译器(protoc),只需要用protoc进行编译,就可以编译成Java、Python、C++、C#、Go等多种语言代码,然后可以直接使用,不需要再写其它代码,自带有解析的代码。只需要将要被序列化的结构化数据定义一次(在.proto文件定义),便可以使用特别生成的源代码(使用protobuf提供的生成工具)轻松的使用不同的数据流完成对结构数据的读写操作。
04
—
gRPC实践-GO
-
go插件安装
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
2.protoc编译器安装
下载相关平台下的文件
https://github.com/protocolbuffers/protobuf/releases/tag/v21.2
3.解压并设置bin目录到环境变量
4.将GoPATH目录添加到环境变量,这样protoc可以找到插件
export PATH="$PATH:$(go env GOPATH)/bin"
打开终端输入protoc,如果有命令使用提示信息说明安装已成功
5.接下来是进行.proto文件的编写
.proto文件定义了数据的类型,以及rpc函数的类型。
//helloworld.protosyntax = "proto3"; //使用proto3package HelloWorld;/、指定go的报名,可以为java等其他语言指定option go_package = "go-micro/HelloWorld"; //服务定义service Or

本文介绍了RPC的概念以及gRPC作为高性能RPC框架的特性,包括它基于HTTP2和ProtoBuf的优势。详细讲解了HTTP1.1与HTTP2的区别,并探讨了ProtoBuf作为数据序列化工具的作用。接着,通过Go语言展示了gRPC的基本实践,包括.proto文件的编写、客户端和服务端接口的生成及实现。最后,讨论了如何在Gin框架中集成gRPC,提供了一个简单的处理逻辑。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



