渐进式发现 Go GRPC 项目的创建、入门和基本运行方式
2023-10-21 01:56:32
在软件开发领域,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 项目。希望本文对你有所帮助,如果你有任何问题,欢迎随时留言。