远程过程调用框架-GRPC介绍和使用

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  1. 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值