GMS基于 gnet 的微服务框架
GMS
今天是2020年10月24日,一年一度的程序员节,把这个还在开发中的项目开源出来,感兴趣的朋友可以一起参与开发。如果有大神路过请多指教。
GMS 是一款基于 gnet 网络框架开发的 Golang RPC 微服务框架。
特点:
1:非常简单、学习成本极低。GMS处于初期阶段您想参与开发也非常简单。
只要您之前使用过类似Gin、beego这样的web框架。就能快速上手,使用方法和这些web框架一样简单。
2: 不用定义proto等协议文件。
写proto文件不仅麻烦还容易出错。而且使用协议文件定义服务,最终在框架内部实现都要使用反射去调用目标方法。用反射调用方法比直接调用肯定性能要好。所以如果其他条件不变的情况,用GMS这种实现方式性能肯定是最好的。
缺点:
1:目前很多功能还没有完善,不建议应用在公司项目中。
快速开始
下载源码 进入 example 直接运行。或者按照以下步骤自己搭建Demo运行
下面我们以一个加法计算服务为类
1:定义请求和返回对象
package model type AdditionReq struct { NumberA int NumberB int } type AdditionRes struct { Result int }
2:开发服务端
package main import ( "github.com/akkagao/gms" "github.com/akkagao/gms/gmsContext" "example/model" ) func main() { // 初始化GMS服务 gms := gms.NewGms() // 添加业务处理路由(addition是业务处理方法的唯一标识,客户端调用需要使用) gms.AddRouter("addition", Addition) // 启动,以1024 为启动端口 gms.Run(1024) } /* 加法计算 */ func Addition(c *gmsContext.Context) error { additionReq := &model.AdditionReq{} // 绑定请求参数 c.Param(additionReq) // 结果对象 additionRes := &model.AdditionRes{} additionRes.Result = additionReq.NumberA + additionReq.NumberB // 返回结果 c.Result(additionRes) return nil }
3:开发客户端
package main import ( "fmt" "github.com/akkagao/gms/client" "github.com/akkagao/gms/codec" "github.com/akkagao/gms/discovery" "example/model" ) /* 模拟客户端 */ func main() { // 初始化一个点对点服务发现对象 discovery := discovery.NewP2PDiscovery("127.0.0.1:1024") // 初始化一个客户端对象 additionClient, err := client.NewClient(discovery) if err != nil { fmt.Println(err) return } // 设置 Msgpack 序列化器,默认也是 Msgpack additionClient.SetCodecType(codec.Msgpack) // 请求对象 req := &model.AdditionReq{NumberA: 10, NumberB: 20} // 接收返回值的对象 res := &model.AdditionRes{} // 调用服务 err = additionClient.Call("addition", req, res) if err != nil { fmt.Println(err) } fmt.Println(fmt.Sprintf("%d+%d=%d", req.NumberA, req.NumberB, res.Result)) }
待开发功能
- v0.1.1 服务端支持 客户端指定序列化方式
- v0.1.2 注册中心
- 流控
- 熔断
- 监控统计
评论
TP-Micro基于 Teleport 的微服务框架
TP-Micro是一个基于 Teleport 定制的、简约而强大的微服务框架。安装go version > 1.9go get -u -f -d github.com/xiaoenai/tp-m
TP-Micro基于 Teleport 的微服务框架
0
TP-Micro基于 Teleport 的微服务框架
TP-Micro 是一个基于 Teleport 定制的、简约而强大的微服务框架。安装go versi
TP-Micro基于 Teleport 的微服务框架
0
Notadd基于 nest.js 的微服务开源框架
Notadd是一个开源的、基于Nest.js框架的微服务开发架构,您可以根据不同的业务需求使用适合的模块、插件来搭建一个微服务系统。Notadd官方提供了抽象化的公共服务层,在服务层内,每一个模块都提
Notadd基于 nest.js 的微服务开源框架
0
Jboot一个基于 JFinal 的微服务框架
Jboot,专为大型分布式项目和微服务而生。她是一个基于jfinal和undertow开发的微服务框架。提供了AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、swaggerapi自动生成、
Jboot一个基于 JFinal 的微服务框架
0
Micronaut基于 JVM 的微服务应用框架
Grails框架作者的最新力作,Micronaut是一个新一代基于JVM的全栈的微服务框架,用于构建模块化的、易于测试的微服务应用。Micronaut的灵感来自于这些年作者使用Spring、Sprin
Micronaut基于 JVM 的微服务应用框架
0
【程序源代码】基于 JFinal 的微服务框架
关键字:java springboot正文 | 内容 一个基于 JFinal 的微服务框架,SpringCloud 之外的另一个选择,已经使用在用户量过亿的商业产品上,目前有超过 1000 家公司在使用 Jboot 做极速开发...使用 Jboot 开发应用,建...
程序源代码
0