返回

渐进式发现 Go GRPC 项目的创建、入门和基本运行方式

后端

在软件开发领域,Go 语言因其简洁、高效、高性能而备受推崇。而 gRPC 作为一种高性能远程过程调用框架,在构建微服务架构时尤其受到欢迎。本文将带你从零开始,一步步创建和运行一个 Go GRPC 项目,让你轻松掌握这项技术。

首先,我们需要安装 Go 语言开发环境和 gRPC 库。在你的电脑上安装好 Go 语言开发环境后,打开终端窗口,输入以下命令安装 gRPC 库:

go install google.golang.org/grpc

现在,让我们创建一个新的 Go GRPC 项目。在终端窗口中,导航到一个合适的目录,并输入以下命令:

go mod init go_grpc_project

这将创建一个新的 Go 模块名为 go_grpc_project。现在,我们需要创建一个 gRPC 服务和客户端。在项目目录中,创建一个名为 server.pb.go 的文件,并在其中输入以下代码:

syntax = "proto3";

package server;

service Greeting {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

这段代码定义了一个名为 Greeting 的 gRPC 服务,其中包含一个名为 SayHello 的 RPC 方法。

接下来,在项目目录中,创建一个名为 client.go 的文件,并在其中输入以下代码:

package main

import (
  "context"
  "log"

  server "go_grpc_project/server"

  "google.golang.org/grpc"
)

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

  c := server.NewGreetingClient(conn)

  req := &server.HelloRequest{
    Name: "John",
  }
  res, err := c.SayHello(context.Background(), req)
  if err != nil {
    log.Fatalf("could not greet: %v", err)
  }
  log.Printf("Greeting: %s", res.Message)
}

这段代码定义了一个简单的 gRPC 客户端,它连接到一个在 localhost:50051 上运行的 gRPC 服务,并向该服务发送一个 SayHello 请求。

现在,我们需要创建一个名为 server.go 的文件,并在其中输入以下代码:

package main

import (
  "context"
  "log"
  "net"

  server "go_grpc_project/server"

  "google.golang.org/grpc"
)

func main() {
  lis, err := net.Listen("tcp", ":50051")
  if err != nil {
    log.Fatalf("failed to listen: %v", err)
  }

  s := server.NewServer()
  grpcServer := grpc.NewServer()

  server.RegisterGreetingServer(grpcServer, s)

  if err := grpcServer.Serve(lis); err != nil {
    log.Fatalf("failed to serve: %v", err)
  }
}

这段代码定义了一个简单的 gRPC 服务器,它在 localhost:50051 上侦听传入的连接。

现在,让我们运行 gRPC 服务器和客户端。在终端窗口中,导航到项目目录,并输入以下命令运行服务器:

go run server.go

在另一个终端窗口中,导航到项目目录,并输入以下命令运行客户端:

go run client.go

如果一切顺利,你应该会在客户端的终端窗口中看到以下输出:

Greeting: Hello John!

恭喜你!你现在已经成功创建和运行了一个简单的 Go GRPC 项目。希望本文对你有所帮助,如果你有任何问题,欢迎随时留言。