GMS 基于 gnet 的微服务框架开源项目

我要开发同款
匿名用户2020年10月26日
41阅读
所属分类Google Go、程序开发、微服务框架
授权协议未知

作品详情

GMS

今天是2020年10月24日,一年一度的程序员节,把这个还在开发中的项目开源出来,感兴趣的朋友可以一起参与开发。如果有大神路过请多指教。

GMS是一款基于 gnet 网络框架开发的GolangRPC微服务框架。

特点:

1:非常简单、学习成本极低。GMS处于初期阶段您想参与开发也非常简单。

只要您之前使用过类似Gin、beego这样的web框架。就能快速上手,使用方法和这些web框架一样简单。

2:不用定义proto等协议文件。

写proto文件不仅麻烦还容易出错。而且使用协议文件定义服务,最终在框架内部实现都要使用反射去调用目标方法。用反射调用方法比直接调用肯定性能要好。所以如果其他条件不变的情况,用GMS这种实现方式性能肯定是最好的。

缺点:

1:目前很多功能还没有完善,不建议应用在公司项目中。

快速开始

下载源码进入example直接运行。或者按照以下步骤自己搭建Demo运行

下面我们以一个加法计算服务为类

1:定义请求和返回对象packagemodel​typeAdditionReqstruct{NumberAintNumberBint}​typeAdditionResstruct{Resultint}

2:开发服务端

packagemain​import("github.com/akkagao/gms"​"github.com/akkagao/gms/gmsContext"​"example/model")​funcmain(){//初始化GMS服务gms:=gms.NewGms()​//添加业务处理路由(addition是业务处理方法的唯一标识,客户端调用需要使用)gms.AddRouter("addition",Addition)​//启动,以1024为启动端口gms.Run(1024)}​/*加法计算*/funcAddition(c*gmsContext.Context)error{additionReq:=&model.AdditionReq{}//绑定请求参数c.Param(additionReq)​//结果对象additionRes:=&model.AdditionRes{}additionRes.Result=additionReq.NumberA+additionReq.NumberB​//返回结果c.Result(additionRes)returnnil}​

3:开发客户端

packagemain​import("fmt"​"github.com/akkagao/gms/client""github.com/akkagao/gms/codec""github.com/akkagao/gms/discovery"​"example/model")​/*模拟客户端*/funcmain(){//初始化一个点对点服务发现对象discovery:=discovery.NewP2PDiscovery("127.0.0.1:1024")​//初始化一个客户端对象additionClient,err:=client.NewClient(discovery)iferr!=nil{fmt.Println(err)return}​//设置Msgpack序列化器,默认也是MsgpackadditionClient.SetCodecType(codec.Msgpack)​//请求对象req:=&model.AdditionReq{NumberA:10,NumberB:20}//接收返回值的对象res:=&model.AdditionRes{}​//调用服务err=additionClient.Call("addition",req,res)iferr!=nil{fmt.Println(err)}fmt.Println(fmt.Sprintf("%d+%d=%d",req.NumberA,req.NumberB,res.Result))}​

待开发功能

v0.1.1服务端支持客户端指定序列化方式v0.1.2注册中心流控熔断监控统计
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论