mqant Golang/python语言开发的分布式游戏服务器框架开源项目

我要开发同款
匿名用户2017年02月28日
36阅读
开发技术Python
所属分类程序开发、游戏开发包
授权协议Apache

作品详情

mqant

mqant是一款基于Golang语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望mqant未来能够做即时通讯和物联网方面的应用。

pymqant

pymqant是已经mqant相同的设计原理用python实现的,python版本设计的初衷并不是替代golang语言版本的mqant,而是希望mqant能充分利用python语言的优势(丰富的开源库),因此python是golang语言版本的mqant辅助版本

理论上pymqant也实现了mqant完全相同的功能,只是缺少一个网关模块,可以用pymqant实现游戏的webapi模块,mqant实现对性能要求较高的游戏核心逻辑模块,pymqant模块与mqant模块之间可以无缝相互调用。

特性

分模块机制

基于golang协程,开发过程全程做到无callback回调,代码可读性更高

RPC支持本地和远程自动切换

远程RPC默认使用rabbitmq,未来可以添加更多种类的通信协议

网关采用MQTT协议,无需再开发客户端底层库,直接套用已有的MQTT客户端代码库,可以支持IOS,Android,websocket,PC等多平台通信

现如今只有多进程的架构才能达到支撑较多在线用户,降低服务器压力,降低单点故障所带来的影响等要求,因此一个真正高可扩展的游戏运行架构必须是多进程的。

然而在游戏的开发和运营也是按步骤阶段性进行的,尤其是现如今服务器硬件设备配置也越来越高的前提下,在游戏刚开始运营时单台服务器就足够支撑了,况且多进程部署所带来的运维成本也相对较高。

mqant的设计思想是在能用单台服务器时能让充分挖掘服务器的性能,而在需要多进程时再通过简单的配置就可以实现分布式部署。

mqant游戏服务器的运行架构

mqant服务器是按模块来划分功能模块的,例如用户管理,在线聊天,战斗平台等等都应该划分为独立的模块

模块之间通过RPC通讯,mqant底层会根据实际情况选择rpc数据交互的通信渠道,在调用模块在同一个进程的情况下直接使用golangchan通讯,因此同进程内模块通信性能不受影响。

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

评论