Easy-Go-Web3
知识图谱Go 教程React Web3智能合约
需求分析系统设计设计模式Go 微服务
项目实战DevOps
Go 生态React 生态智能合约生态Web3 生态AI × Web3工具箱Web3 公司远程Web3求职
🎯 AA 工程师面试手册博客
GitHub
返回微服务模块

gRPC 与服务通信

使用 gRPC 构建高性能服务间通信

1Protocol Buffers

Protocol Buffers 是 gRPC 的默认序列化格式,提供高效的二进制编码。

protobuf
1syntax = "proto3";
2
3package user;
4
5service UserService {
6 rpc GetUser(GetUserRequest) returns (User);
7 rpc ListUsers(ListUsersRequest) returns (stream User);
8}
9
10message User {
11 int64 id = 1;
12 string name = 2;
13 string email = 3;
14}
15
16message GetUserRequest {
17 int64 id = 1;
18}

2gRPC 服务端

实现 gRPC 服务端只需要实现生成的接口。

go
1type userServer struct {
2 pb.UnimplementedUserServiceServer
3 repo UserRepository
4}
5
6func (s *userServer) GetUser(ctx context.Context, req *pb.GetUserRequest) (*pb.User, error) {
7 user, err := s.repo.FindByID(ctx, req.Id)
8 if err != nil {
9 return nil, status.Error(codes.NotFound, "user not found")
10 }
11
12 return &pb.User{
13 Id: user.ID,
14 Name: user.Name,
15 Email: user.Email,
16 }, nil
17}
上一模块:领域驱动设计 (DDD)下一模块:服务治理
Easy-Go-Web3

构建 Go 后端与 Web3 的学习之路。从基础到进阶,从理论到实践,助你成为全栈区块链开发者。

学习路径

  • 知识图谱
  • Go 教程
  • Go 微服务
  • 面试手册

资源中心

  • 工具箱
  • DevOps 工具
  • Web3 生态
  • 博客

© 2025 Easy-Go-Web3. All rights reserved.

Created withbyhardybao