GMS
今天是2020年10月24日,一年一度的程序员节,把这个还在开发中的项目开源出来,感兴趣的朋友可以一起参与开发。如果有大神路过请多指教。
GMS是一款基于 get 网络框架开发的GolagRPC微服务框架。
特点:1:非常简单、学习成本极低。GMS处于初期阶段您想参与开发也非常简单。
只要您之前使用过类似Gi、beego这样的web框架。就能快速上手,使用方法和这些web框架一样简单。
2:不用定义proto等协议文件。
写proto文件不仅麻烦还容易出错。而且使用协议文件定义服务,最终在框架内部实现都要使用反射去调用目标方法。用反射调用方法比直接调用肯定性能要好。所以如果其他条件不变的情况,用GMS这种实现方式性能肯定是最好的。
缺点:1:目前很多功能还没有完善,不建议应用在公司项目中。
快速开始下载源码进入example直接运行。或者按照以下步骤自己搭建Demo运行
下面我们以一个加法计算服务为类
1:定义请求和返回对象packagemodeltypeAdditioReqstruct{NumberAitNumberBit}typeAdditioResstruct{Resultit}2:开发服务端
packagemaiimport("github.com/akkagao/gms""github.com/akkagao/gms/gmsCotext""example/model")fucmai(){//初始化GMS服务gms:=gms.NewGms()//添加业务处理路由(additio是业务处理方法的唯一标识,客户端调用需要使用)gms.AddRouter("additio",Additio)//启动,以1024为启动端口gms.Ru(1024)}/*加法计算*/fucAdditio(c*gmsCotext.Cotext)error{additioReq:=&model.AdditioReq{}//绑定请求参数c.Param(additioReq)//结果对象additioRes:=&model.AdditioRes{}additioRes.Result=additioReq.NumberA+additioReq.NumberB//返回结果c.Result(additioRes)returil}3:开发客户端
packagemaiimport("fmt""github.com/akkagao/gms/cliet""github.com/akkagao/gms/codec""github.com/akkagao/gms/discovery""example/model")/*模拟客户端*/fucmai(){//初始化一个点对点服务发现对象discovery:=discovery.NewP2PDiscovery("127.0.0.1:1024")//初始化一个客户端对象additioCliet,err:=cliet.NewCliet(discovery)iferr!=il{fmt.Pritl(err)retur}//设置Msgpack序列化器,默认也是MsgpackadditioCliet.SetCodecType(codec.Msgpack)//请求对象req:=&model.AdditioReq{NumberA:10,NumberB:20}//接收返回值的对象res:=&model.AdditioRes{}//调用服务err=additioCliet.Call("additio",req,res)iferr!=il{fmt.Pritl(err)}fmt.Pritl(fmt.Spritf("%d+%d=%d",req.NumberA,req.NumberB,res.Result))}待开发功能
v0.1.1服务端支持客户端指定序列化方式v0.1.2注册中心流控熔断监控统计
评论