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

Apache
Python Google Go
跨平台
2017-02-28
梁大帅

mqant

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

pymqant

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

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

特性

  • 分模块机制

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

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

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

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

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

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

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

mqant 游戏服务器的运行架构

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

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

的码云指数为
超过 的项目
加载中

评论(1)

梁大帅
梁大帅 软件作者
非常给力的一个框架,开发利器

开源游戏框架 mqant v1.6.5 优化 RPC 结构,提升性能

mqant v1.6.5 版本发布了,该版本修改内容有: 修复RPC多项BUG 优化RPC结构,提升性能 发布并开源mqant压力测试工具armyant 压力测试工具:armyant 系统硬件:       MAC电脑2核,16G内存,固态...

2017/12/08 16:09

mqant v1.6.4 版本发布,golang分布式游戏服务框架

mqant v1.6.4 版本发布了,该版本新增新增多项功能 1. 日志模块  1. 支持分大小,分日期分割日志文件  2. 支持紧急日志直接发送到email,钉钉,简聊等多种通道  3. 可用过server.json配...

2017/11/02 20:13

mqant v1.5.0 版本更新,分布式游戏服务框架

1.优化了框架核心架构 将RPC消息编码协议由JSON改为protobuf,同时RPC通信支持多种数据结构以及支持开发者自定义数据编码结构 2.新增了分布式代码跟踪系统接口 http://www.mqant.com/topic/5...

2017/08/08 08:57

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

暂无博客

返回顶部
顶部