欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 用 Go 语言实现一个最简单的 gRPC 服务端

用 Go 语言实现一个最简单的 gRPC 服务端

2025/2/24 2:34:13 来源:https://blog.csdn.net/hanyanshuo/article/details/142827150  浏览:    关键词:用 Go 语言实现一个最简单的 gRPC 服务端

在这篇博客中,我讲一下如何用 Go 语言实现一个简单的 gRPC 服务端,包括必要的准备工作和基础操作。我们将使用 Protocol Buffers 定义服务接口,并实现加法和减法功能。

此篇文章服务于前两篇博客:
基于Vue3+Ts+Vite项目中grpc-Web的应用以及其中的坑

vue3+Ts中grpc-web的代码封装思路

1. 前期准备

1.1 安装 Go

确保你的计算机上已经安装 Go 语言环境。可以通过以下命令检查 Go 的安装:

go version
1.2 安装 gRPC 和 Protocol Buffers

使用 Go 的包管理工具安装 gRPC 和 Protocol Buffers:

go get google.golang.org/grpc
go get google.golang.org/protobuf/cmd/protoc-gen-go
go get google.golang.org/grpc/cmd/protoc-gen-go-grpc

确保将 GOPATH/bin 添加到系统的环境变量中,以便使用 protoc-gen-goprotoc-gen-go-grpc

2. 定义 gRPC 服务

创建一个名为 calculation.proto 的文件,定义我们的 gRPC 服务和消息格式,注释可以见上面提到的第一篇文章:

syntax = "proto3";package calculation;option go_package = "./helloWorld;proto";service CalculationService {rpc Add(AddRequest) returns (AddResponse);rpc Subtract(SubtractRequest) returns (SubtractResponse);
}message AddRequest {double num1 = 1;double num2 = 2;
}message AddResponse {double result = 1;
}message SubtractRequest {double num1 = 1;double num2 = 2;
}message SubtractResponse {double result = 1;
}

3. 生成 Go 代码

在终端中运行以下命令,使用 protoc 生成 Go 代码:

protoc --go_out=. --go-grpc_out=. calculation.proto

这将生成与 calculation.proto 文件对应的 Go 文件。

4. 实现 gRPC 服务端

创建一个名为 main.go 的文件,编写服务端代码:

package mainimport ("context""fmt"proto "go-learn/protobuf/helloWorld" // 导入生成的 proto 包"google.golang.org/grpc""net""strconv"
)type Server struct {proto.UnimplementedCalculationServiceServer // 嵌入未实现的结构体
}// 实现 Add 方法
func (s Server) Add(ctx context.Context, request *proto.AddRequest) (*proto.AddResponse, error) {fmt.Printf("Received Add request: %v\n", request)return &proto.AddResponse{Result: request.Num1 + request.Num2,}, nil
}// 实现 Subtract 方法
func (s Server) Subtract(ctx context.Context, request *proto.SubtractRequest) (*proto.SubtractResponse, error) {fmt.Printf("Received Subtract request: %v\n", request)return &proto.SubtractResponse{Result: request.Num1 - request.Num2,}, nil
}func main() {g := grpc.NewServer() // 创建 gRPC 服务器proto.RegisterCalculationServiceServer(g, &Server{}) // 注册服务lis, err := net.Listen("tcp", "0.0.0.0:8088") // 监听端口if err != nil {panic("failed to listen:" + err.Error())}err = g.Serve(lis) // 启动 gRPC 服务器if err != nil {panic("failed to start grpc:" + err.Error())}
}

5. 运行 gRPC 服务端

在终端中,运行以下命令启动服务端:

go run main.go

6. 测试 gRPC 服务

可以通过文章一提到的前端接口来测试接口是否成功,也可以使用 gRPC 客户端工具(如 Postman、grpcurl 或自定义客户端)来测试我们的 gRPC 服务。

总结

在这篇博客中,可以了解了如何用 Go 语言实现一个简单的 gRPC 服务端,定义了加法和减法功能,并通过 Protocol Buffers 生成了相应的 Go 代码。这个基础示例可以为进一步扩展和应用 gRPC 提供了良好的基础。

目前go语言在自学中,后面会记录更多go语言相关内容。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词