站务联系

高性能分布式游戏服务器框架

发布时间:2021-03-17   来源:网络整理    
字号:

欢迎你们Forkmqant开源框架

为什么决定要从新造一个轮子?

目前网上优秀的开源游戏服务器框架也不少(当然与web框架比上去就少很多了),但小结上去都各有各的优缺点,下面列举我在选型过程中的一些衡量,希望你们能开放的讨论,有不恰当的地方也请见谅。

首先是开发语言

目前适于游戏服务器开发的主要应当有以下这种语言:

c/c++

优点:

性能挺好

开源框架:

skynet
底层是C 开发语言是lua,
没有客户端库
kbengine
底层是C++ 开发语言可以使用C#,Python
有多个平台的客户端库

C#

优点:

性能挺好

开源框架:

Scut
底层C#   开发语言是 C#、Python和Lua多种脚本进行开发
有多个平台的客户端库
Photon
底层C#   好像是收费的,但毕竟出名
有多个平台的客户端库

Python

是我最想使用的一种开发语言

开发效率十分高支持解释器,能开发出高并发性的游戏,而且代码可读性好目前有这些游戏公司应当都使用的是Python作为前端游戏服务器开发语言,有相对成熟的案例

缺点:

Python太致命的一个问题是进程不能运用多核,也就是说一个进程只好运用一个CPU进行估算,如果要用多核就须要新开进程,这样会导致服务器的维护费用降低,而且开发项目时所须要考虑的问题也更多

开源框架:

twisted  可以用来做网关服务器
firefly  应该很早就不维护了

Java

没有找到比较好的开源框架对解释器支持不够好开发效率较低

优点:

1. 语法灵活(这是一把双刃刀,用起来要小心,尤其是团队开发中)
2. 开源库丰富

缺点:

1. 语法上有一些缺陷
2. 跟Python一样不支持多核
3. 对协程支持不够好,地狱回调很可怕,虽然有一些解决方案,但用起来稍微有点别扭

开源框架:

Pomelo 网易出的,安静了一段时间,最近又开始维护了
有多个平台的客户端库

golang

优点:

1. 性能好,跟C/C++/C#一样编译型语言
2. 语法比较简单,开发效率也比较高,接近Python
3. 语言级别支持协程
4. 单进程支持多核并发计算

缺点:

1. 开源库较少,会golang的开发者比较少

开源框架:

leaf        接触的第一个golang框架,设计不错,但不支持多进程
没有客户端库,需要自己实现
cellnet 刚接触,没法评价,但好像它用了callback回调函数的设计,这样的设计在golang应该可以避免

游戏框架的不足

结合个人的实际状况,当时我主要的选择从 skynet Pomelo leaf 这三个框架上面来选择

skynet设计思路特别牛逼,看了风云大牛的设计觉得应当是一个高性能,高稳定性的游戏服务器框架,而且有很多产品早已使用上了。

但个人觉得skynet或许也会有以下的两个问题

Actor方式或许对构架能力比较高,不如rpc方式明了skynet使用第三方网路库的时侯或许须要造轮子,要放开手臂开发有些难,跟python tornado的一样,要写出高性能的程序也对开发人员有一定的要求

Pomelo由网易团队开发的,对多进程构架做的非常好,不过因为javascript功耗的关系Pomelo的定位也在一些中小型非即时战斗类游戏,经过一段时间的学习跟检测,最后还是悲哀舍弃了

最后经过多方考虑,我选择golang作为开发语言,当时第一个接触的就是leaf,学习开发了一段时间发觉了leaf的一些不足

不支持多进程没有客户端开发库,需要自己造轮子

上面列进去的都是这几个框架的劣势,其实这几个框架都十分优秀,只是不同的需求有不同的要求罢了,希望你们能按照自己实际需求选择最适宜自己的框架

图说天下

×
二维码生成