在本章节中,我们将之前介绍 HTTP Client&Server
的示例修改为 GRPC
微服务,并演示如何使用 GoFrame
框架开发一个简单的 GRPC
服务端和客户端,并且为 GRPC
微服务增加链路跟踪特性。
本章节的示例代码位于: https://github.com/gogf/gf/tree/master/example/trace/grpc_with_db
目录结构
Protocol
syntax = "proto3";
package user;
option go_package = "protobuf/user";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
// User service for tracing demo.
service User {
rpc Insert(InsertReq) returns (InsertRes) {}
rpc Query(QueryReq) returns (QueryRes) {}
rpc Delete(DeleteReq) returns (DeleteRes) {}
}
message InsertReq {
string Name = 1 [(gogoproto.moretags) = 'v:"required#Please input user name."'];
}
message InsertRes {
int32 Id = 1;
}
message QueryReq {
int32 Id = 1 [(gogoproto.moretags) = 'v:"min:1#User id is required for querying."'];
}
message QueryRes {
int32 Id = 1;
string Name = 2;
}
message DeleteReq {
int32 Id = 1 [(gogoproto.moretags) = 'v:"min:1#User id is required for deleting."'];
}
message DeleteRes {}
这里使用到了第三方的 github.com/gogo/protobuf 开源项目,用于注入自定义的 Golang struct
标签。这里不详细介绍,感兴趣的小伙伴可以自行了解。未来 Katyusha
微服务框架的官网文档也会做对这块详细介绍,包括 GRPC
工程目录、开发规范、开发工具、拦截器、注册发现、负载均衡等设计话题。