最近开始完整的学go , 这里简单记录下用go 开发的grpc demo。这里主要实现的是client 传id参数,rpc调用getUser 方法获取server 结果。
1. 开发配置
- 安装go 环境,配置好GOROOT, GOPATH 和goproxy, 开启GO111MODULE。
- 使用goland 开发的,设置好编辑器的GOROOT信息(假如go是高版本的如1.17.8,会提示不是合法sdk),可以参照这篇文https://www.cnblogs.com/taoshihan/p/15824866.html
- 安装 protoc , 我直接使用brew install protobuf。具体安装可以参照https://github.com/protocolbuffers/protobuf/releases
- 安装 protoc-gen-go, 参考https://grpc.io/docs/languages/go/quickstart/
2. 开发代码
- 新建项目目录,一般是在gopath下面
- user.proto 文件内容如下
syntax = "proto3";
package user;
//新版本需要的配置
option go_package = "./user";
message UserRequest {
int32 id = 1;
}
message UserResponse {
int32 id = 1;
string name = 2;
}
service UserService {
rpc getUser(UserRequest) returns (UserResponse) {};
}
- 生成grpc 代码
protoc user.proto --go_out=./protobuf --go-grpc_out=./protobuf --go-grpc_opt=require_unimplemented_servers=false
require_unimplemented_servers=false 这个配置不加,会存在兼容问题,有个接口需要实现
- 编写 server 代码
package main
import (
"context"
"demo/grpc/protobuf/user"
"fmt"
"google.golang.org/grpc"
"net"
)
type UserServiceInterface interface