gRPC 是一种高性能、开源的 RPC 框架,它使用了 Protocol Buffers 作为数据序列化协议。下面是 gRPC 的基本用法:
- 编写.proto文件
首先需要编写一个 .proto 文件来定义服务和消息类型。该文件使用 Protocol Buffers 的语法。
- 生成代码
将 .proto 文件编译成相应语言的代码,例如可以使用 protoc 工具生成 Go 语言的代码:
protoc --go_out=plugins=grpc:. hello.proto
- 实现服务端
在服务端中实现定义的服务接口,这些接口实现由自动生成的 gRPC 代码提供。
- 创建服务器
创建一个 gRPC 服务器并注册已实现的服务。
lis, err := net.Listen("tcp", port)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
pb.RegisterGreeterServer(s, &server{})
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
- 调用客户端
在客户端中调用定义的远程过程(即服务方法),这些方法也是由自动生成的 gRPC 代码提供。
conn, err := grpc.Dial(address, grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
c := pb.NewGreeterClient(conn)
name := defaultName
if len(os.Args) > 1 {
name = os.Args[1]
}
r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
if err != nil {
log.Fatalf("could not greet: %v", err)
}
log.Printf("Greeting: %s", r.Message)
以上是 gRPC 的基本用法,更详细的使用方法可以参考官方文档。




