跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 推荐一款 golang 微服务集成框架
未分類
12 5 月 2020

推荐一款 golang 微服务集成框架

推荐一款 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)

  • 資深大佬 : qq1340691923

    顶一个!

  • 主 資深大佬 : xie1xiao1jun

    @qq1340691923 感谢 ✨

  • 資深大佬 : yph007595

    go-micro

  • 主 資深大佬 : xie1xiao1jun

    @yph007595 这个框架就是参考的 go-micro,去掉了很多 go-micro 复杂的功能。比如自定义 rpc

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具