发布时间:2023-02-12 文章分类:编程知识 投稿人:李佳 字号: 默认 | | 超大 打印

在gRPC里,客户端可以像调用本地方法一样直接调用其他机器上的服务端应用程序的方法,帮助你更容易创建分布式应用程序和服务。与许多RPC系统一样,gRPC是基于定义一个服务,指定一个可以远程调用的带有参数和返回类型的的方法。在服务端程序中实现这个接口并且运行gRPC服务处理客户端调用。在客户端,有一个stub提供和服务端相同的方法。

go Grpc初体验

在安装目录下

在你的项目目录下执行以下命令,获取 gRPC 作为项目依赖。

go get google.golang.org/grpc@latest

安装Protocol Buffers v3

装用于生成gRPC服务代码的协议编译器,最简单的方法是从下面的链接:https://github.com/google/protobuf/releases下载适合你平台的预编译好的二进制文件

我们需要将下载得到的可执行文件protoc所在的 bin 目录加到我们电脑的环境变量中。

安装GO语言插件

go install google.golang.org/protobuf/cmd/protoc-gen-go
安装GRPC插件
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
安装完后执行如下命令,查看是否完成安装
go Grpc初体验

go Grpc初体验

Grpc的开发步聚

1.编写protobuf

go Grpc初体验

用如下命令生成GO文件

protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative he
lloworld.proto

生成后的文件如下:
go Grpc初体验

2.编写服务端文件server.go

package main

import (
"OldPacketTest/grpc_test/proto"
"context"
"google.golang.org/grpc"
"net"
)

type Server struct {
proto.UnimplementedGreeterServerServer
}

func (s *Server) SayHello(ctx context.Context, req *proto.HelloRequest) (*proto.HelloReply, error) {
return &proto.HelloReply{
Message: "hello " + req.Name,
}, nil
}

func main() {
g := grpc.NewServer()
proto.RegisterGreeterServerServer(g, &Server{})
lis, err := net.Listen("tcp", "0.0.0.0:8081")
if err != nil {
panic("failed to listen:" + err.Error())
}
err = g.Serve(lis)
if err != nil {
panic("failed to start grpc:" + err.Error())
}
}
客户端代码如下

go Grpc初体验

3.启动服务,先启动服务端,再启动客户端

服务端启动后如下:

go Grpc初体验

启动客户端

go Grpc初体验

这时候就可以看到响应的结果了。这时候一个完整的GRPC服务就完成了