推荐一款 golang 微服务集成框架
資深大佬 : xie1xiao1jun 3
golang 微服务集成框架
gmsec
特点
- 打通 grpc + gin,同时支持 grpc 跟 restful 模式
- grpc , gin 公用端口
- gorm 嵌入,自动数据库代码生成
支持列表
- grpc
- gorm 自动构建(gormt)
- gin 参数自动绑定工具(ginrpc)
- dns 注册发现(mdns)
- markdown/mindoc 文档自动导出
安装
-
install
-
proto 环境安装
make install
- 本地环境搭建(gmsec 为例)
make gen
proto 定义
syntax = "proto3"; // 指定 proto 版本 package proto; // 指定包名 option go_package = ".;proto"; // 指定路径 // 定义 Hello 服务 service Hello { // 定义 SayHello 方法 rpc SayHello(HelloRequest) returns (HelloReply) {} } // HelloRequest 请求结构 message HelloRequest { string name = 1; // 名字 } // HelloReply 响应结构 message HelloReply { string message = 1; // 消息 }
服务端代码示例
package main import ( "context" "fmt" proto "gmsec/rpc" "github.com/gin-gonic/gin" "github.com/gmsec/goplugins/plugin" "github.com/gmsec/micro" "github.com/xxjwxc/ginrpc" ) func main() { // grpc 相关 初始化服务 service := micro.NewService( micro.WithName("lp.srv.eg1"), ) h := new(hello) proto.RegisterHelloServer(service.Server(), h) // 服务注册 // ----------- end // gin 相关 base := ginrpc.New(ginrpc.WithCtx(Ctx), ginrpc.WithDebug(true), ginrpc.WithGroup("xxjwxc")) router := gin.Default() // gen 对象 base.Register(router, h) // genrpc 对象注册 // ------ end plg, _ := plugin.Run(plugin.WithMicro(service),// grpc 入口 plugin.WithGin(router), // http 入口 plugin.WithAddr(":8080")) // 开始服务(公用端口) plg.Wait() // 等待结束(ctrl+c) fmt.Println("done") } // Ctx gin.Context 到 context.Context 的转换 func Ctx(c *gin.Context) interface{} { return context.Background() }
客户端代码:
package main import ( "context" "fmt" proto "gmsec/rpc" "github.com/gmsec/micro" ) func main() { // reg := registry.NewDNSNamingRegistry() // grpc 相关 注册服务发现等 micro.NewService( micro.WithName("lp.srv.eg1"), // micro.WithRegisterTTL(time.Second*30), //指定服务注册时间 // micro.WithRegisterInterval(time.Second*15), //让服务在指定时间内重新注册 // micro.WithRegistryNameing(reg), ) // ----------- end say := proto.GetHelloClient() ctx := context.Background() resp, _ := say.SayHello(ctx, &proto.HelloRequest{Name:"xxjwxc"}) fmt.Println("result:", resp) }
更多示例 => 传送门
正在做
- etcdv3
欢迎一起共建共享
传送门
大佬有話說 (4)