ZBLOG

golang 如何简单使用 gRPC ?

使用 golang 实现 gRPC 服务非常简单,只需要遵循以下步骤:

  1. 定义 proto 文件

首先,定义一个 .proto 文件,描述 gRPC API。这个文件可以包含多个服务和方法,类似于 HTTP 的路由和 API。

例如,下面是一个简单的示例:

syntax = "proto3";

package greeting;

service GreetingService {
    rpc SayHello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
    string name = 1;
}

message HelloResponse {
    string message = 1;
}
  1. 生成 gRPC 代码

使用 protoc 工具将定义的.proto文件编译成 Go 代码:

$ protoc --go_out=plugins=grpc:. *.proto

生成的 Go 代码将包含 gRPC 服务和客户端的接口。在本示例中,生成的代码将包含 GreetingService 服务接口和 SayHello 方法。

  1. 实现 gRPC 服务端

在 Go 中实现 gRPC 服务端非常简单。我们只需要实现生成的接口中定义的方法即可。

type server struct {
}

func (s *server) SayHello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloResponse, error) {
    return &pb.HelloResponse{Message: fmt.Sprintf("Hello, %s!", req.Name)}, nil
}

func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    s := grpc.NewServer()
    pb.RegisterGreetingServiceServer(s, &server{})
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}

在这个示例中,我们实现了 SayHello 方法,并将其注册到 gRPC 服务上。

  1. 实现 gRPC 客户端

实现 gRPC 客户端也非常简单。我们只需要创建一个连接并使用生成的接口来调用服务方法即可。

func main() {
    conn, err := grpc.Dial(":50051", grpc.WithInsecure())
    if err != nil {
        log.Fatalf("did not connect: %v", err)
    }
    defer conn.Close()

    c := pb.NewGreetingServiceClient(conn)

    resp, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: "World"})
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    log.Printf("response: %s", resp.Message)
}

在本示例中,我们创建了一个连接并使用 GreetingServiceClient 接口中的 SayHello 方法来调用服务。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1697

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?