unity3d mqantt和xingo框架哪个好,都有什么特点

5,856被浏览980,406分享邀请回答69381 条评论分享收藏感谢收起27634 条评论分享收藏感谢收起在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
请问各位大大leaf、cellnet、mqant 、xingo 有没有使用这些框架有上线的游戏呀? 或者有哪位用这些框架的一种在作游戏开发呢? 目前在选一个可分布式的游戏框架 一直拿不定注意。 我还没有那种水平去写框架。 所以求指导。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
具体要看你做的游戏类型了
该答案已被忽略,原因:
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
请问各位大大leaf、cellnet、mqant 、xingo 有没有使用这些框架有上线的游戏呀? 或者有哪位用这些框架的一种在作游戏开发呢? 目前在选一个可分布式的游戏框架 一直拿不定注意。 我还没有那种水平去写框架。 所以求指导。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
具体要看你做的游戏类型了
该答案已被忽略,原因:
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。【开源】golang高性能分布式游戏服务器框架-mqant_C/C++教程_动态网站制作指南
【开源】golang高性能分布式游戏服务器框架-mqant
来源:人气:932
2016年底的时候对即时通讯以及开发产生了一些兴趣,而且自己这方面的知识掌握也非常少,在未来很多产品应该都会使用到长连接技术(物联网IOT),因此很有必要掌握这方面的技术。于是就在网络上查询相关的资料,但发现目前网络上的开源游戏服务器框架相对较少,而目前市面上已有的一些开源游戏框架又不太对自己的胃口。正好17年初刚回公司的时候事情比较少,就抽时间按照自己对游戏服务器的架构思路做了一套,取名就叫mqant了,现在已经发布到Github上,欢迎大家Fork mqant开源框架
为什么决定要重新造一个轮子?
目前网上优秀的开源游戏服务器框架也不少(当然与web框架比起来就少太多了),但总结起来都各有各的优缺点,下面列出我在选型过程中的一些考量,希望大家能开放的讨论,有不恰当的地方也请指正。
首先是开发语言
目前用于游戏服务器开发的主要应该有以下这些语言:
不过我个人不会C++
底层是C 开发语言是lua,
没有客户端库
底层是C++ 开发语言可以使用C#,Python
有多个平台的客户端库
不过我个人不会C#
开发语言是 C#、Python和Lua多种脚本进行开发
有多个平台的客户端库
好像是收费的,但毕竟出名
有多个平台的客户端库
是我最想使用的一种开发语言
开发效率非常高
支持协程,能开发出高并发性的游戏,而且代码可读性好
目前有很多游戏公司应该都使用的是Python作为后端游戏服务器开发语言,有相对成熟的案例
Python很致命的一个问题是进程不能利用多核,也就是说一个进程只能利用一个CPU进行计算,如果要用多核就需要新开进程,这样会造成服务器的维护成本增加,而且开发项目时所需要考虑的问题也更多
可以用来做网关服务器
应该很早就不维护了
没有找到比较好的开源框架
对协程支持不够好
开发效率较低
1. 语法灵活(这是一把双刃刀,用起来要小心,尤其是团队开发中)
2. 开源库丰富
1. 语法上有一些缺陷
2. 跟Python一样不支持多核
3. 对协程支持不够好,地狱回调很可怕,虽然有一些解决方案,但用起来稍微有点别扭
Pomelo 网易出的,安静了一段时间,最近又开始维护了
有多个平台的客户端库
1. 性能好,跟C/C++/C#一样编译型语言
2. 语法比较简单,开发效率也比较高,接近Python
3. 语言级别支持协程
4. 单进程支持多核并发计算
1. 开源库较少,会golang的开发者比较少
接触的第一个golang框架,设计不错,但不支持多进程
没有客户端库,需要自己实现
cellnet 刚接触,没法评价,但好像它用了callback回调函数的设计,这样的设计在golang应该可以避免
游戏框架的不足
结合个人的实际情况,当时我主要的选择从 skynet Pomelo leaf 这三个框架里面来选择
skynet设计思路非常牛逼,看了风云大牛的设计感觉应该是一个高性能,高稳定性的游戏服务器框架,而且有很多产品已经使用上了。
但个人认为skynet可能也会有以下的两个问题
Actor模式可能对架构能力比较高,不如rpc模式明了
skynet使用第三方网络库的时候可能需要造轮子,要放开膀子开发有些难,跟python tornado的一样,要写出高性能的程序也对开发人员有一定的要求
Pomelo由网易团队开发的,对多进程架构做的非常好,不过由于性能的关系Pomelo的定位也在一些中小型非即时战斗类游戏,经过一段时间的学习和测试,最后还是无奈放弃了
最后经过多方考虑,我选择golang作为开发语言,当时第一个接触的就是leaf,学习开发了一段时间发现了leaf的一些不足
不支持多进程
没有客户端开发库,需要自己造轮子
上面列出来的都是这几个框架的缺点,其实这几个框架都非常优秀,只是不同的需求有不同的要求罢了,希望大家能根据自己实际需求选择最适合自己的框架
对游戏服务器框架的想法
自己心里也对游戏服务器框架有一些自己的想法,最终决定造这个轮子。
高性能,支持多核
这在未来开发,扩展,维护会轻松很多,比如Python这样一台服务器跑上百个进程的游戏服务器,维护起来就很让人头疼
协程在客户端中应用不大,但在服务器开发中可以发挥极大的威力:
高并发,能最大的利用cpu资源
异步开发同步化,免去了回调函数设计,避免了地狱回调
支持分布式,但也支持单进程部署
有些框架写一个demo都需要启动多个进程,实际上在项目前期可能一台服务器就能够支持了,我希望实现一个既可以单进程部署又可以分布式部署的框架
单进程能够实现高性能
分布式部署不用重新设计编码
这个需求的实现主要靠约定,只要开发的时候按分布式环境来开发,代码一般都不需要移植
有丰富的客户端开发库
让开发者专心业务开发,不同再去造轮子了
mqant框架的架构
mqant就是按照以上的思路设计的,同时设计思路上参考了Pomelo,并且也使用了leaf框架的部分代码。
golang本身支持高性能,支持多核
因此mqant的RPC通信都可以按同步来写, 例如:
//远程调用 Login模块的getRand方法
result,err:=m.RpcInvoke("Login","getRand",roomName)
if err==nil{
//getRand 调用成功了,再做下面的远程调用
result,err:=m.RpcInvoke("Login","getName",roomName)
//上面的调用都执行完了才执行下面的代码
result 是远程调用成功以后的返回值
是远程调用失败的信息
以上代码非常清晰,跟普通的函数调用基本一样,但如果用回调函数的话,如下:
m.RpcInvoke("Login","getRand",roomName,func(result string,err string){
if err!=nil{
m.RpcInvoke("Login","getName",roomName,func(result string,err string){
//调用都执行完了才执行下面的代码
支持分布式,但也支持单进程部署
mqant是按模块为单位来划分功能模块的,可以将一组模块放到一个进程来运行,也可以将所有模块放到同一个进程来运行(即单进程模式)
mqant模块间约定按标准的RPC来相互调用
RPC底层分两种模式
1. 基于golang chan的单进程通信
2. 基于rabbitmq的跨进程通信
RPC会根据模块间的部署情况选用适当的通信方式,以达到在单进程模式下RPC通信的最低性能损耗和最快的响应时间
有丰富的客户端开发库
mqant没有考虑帮开发者造一个客户端开发库,而是选用了目前物联网中非常流行mqtt协议来作为通信协议,mqtt本身就有各个平台的客户端开发库,因此可以直接用mqtt的客户端开发库对接到mqant上来。实现了mqant跨平台通信的要求
mqant还是一个非常新的框架,有很多地方都不完善,但我相信有更多大牛的加入进来参与完善和优化的话,mqant框架将变得更好。
优质网站模板

我要回帖

更多关于 unity3d mqant 的文章

 

随机推荐