gRPC-Go入门教程

本文是gRPC-Go的入门教程,介绍了protobuf的基本概念和Go语言的两个版本插件,详细讲解了gRPC-Go的安装过程,并通过官方示例演示了服务端和客户端的运行。此外,还展示了如何在实际开发中定义protobuf文件,生成服务代码,以及在Go项目中使用gRPC服务。

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

protobuf简介

Protocol Buffers(protobuf):与编程语言无关,与程序运行平台无关的数据序列化协议以及接口定义语言(IDL: interface definition language)。

要使用protobuf需要先理解几个概念:

  • 编程语言的protobuf插件,搭配protoc编译器,根据.proto文件生成对应编程语言的代码。

  • protobuf runtime library:每个编程语言有各自的protobuf runtime,用于实现各自语言的protobuf协议。

  • Go语言的protobuf插件和runtime library有过2个版本:

    • 第1个版本开源地址:https://github.com/golang/protobuf,包含有插件proto-gen-go,可以生成xx.pb.goxx_grpc.pb.go。Go工程里导入该版本的protobuf runtime的方式如下:

      import "github.com/golang/protobuf"
    • 第2个版本开源地址:https://github.com/protocolbuffers/protobuf-go,同样包含有插件proto-gen-go。不过该项目的proto-gen-gov1.20版本开始,不再支持生成gRPC服务定义,也就是xx_grpc.pb.go文件。要生成gRPC服务定义需要使用grpc-go里的progo-gen-go-grpc插件。Go工程里导入该版本的protobuf runtime的方式如下:

      import "google.golang.org/protobuf"

    推荐使用第2个版本,对protobuf的API做了优化和精简,并且把工程界限分清楚了:

    • 第一,把protobuf的Go实现都放在protobuf的项目里,而不是放在golang语言项目下面。

    • 第二,把gRPC的生成,放在grpc-go项目里,而不是和protobuf runtime混在一起。

    有的老项目可能使用了第1个版本的protobuf runt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值