开源服务器框架NoahFrame分享 第一章:游戏服务器的进化
2017-10-31
一说到游戏服务器,其实大部分人第一认知,估计就是网络库,在很多人眼里,网络库几乎作为服务器坚实技术的代表,但我这里想提醒的是,这些人最后几乎都走了造轮子的不归路,因为网络库虽然是组成服务器软件最重要的基础库之一,但是同时也应该是项目成熟期接触最少的库,唯一却可替代。
第一阶段:最原始的服务器架构
单纯来说很简单,大部分服务器在处理业务逻辑的时候,还会直接处理socketid相关的内容,出BUG让人防不胜防。大概如下图所示:
优点:
开发简单,新成员可以快速理解,无复杂集群状态管理。
缺点:
几乎所有业务均在一起,一处业务出问题宕机,则会影响所有业务;同时不能扩容也不能应对运营不定时带来的流量压力。
第二阶段:支持分线,代理的架构
目前还是有很多游戏服务器属于此类型,对于做手机游戏,小游戏或者创业团队来说,这类方案基本是优选(特别是对于没有历史积累的团队来说--比如说拿unity直接开发服务器,服务器能跑就行了。。。至于负载,质量,则是游戏先能做完,或者能上线再说吧)
优点:
1:增加了多线程/进程机制,可以有效的通过部署应对不定期的流量压力;
2:增加了网关,有效加强了对于外网非法数据的屏蔽能力,降低了GameServer处理这些数据的消耗,不再直接连接数据库,加快了game处理业务的速度。
缺点:增加了新成员对于架构的理解,以及也需要写一部分异步代码(数据库方面),会加入各种转发消息的功能。
第三阶段:支持集群,actor,拆分子结构等方案的架构(NF解决方案)
优点:
1:增加了可动态扩容的多线程/进程/Actor机制,可以有效的通过动态扩容应对大平台带来的流量压力(理论上有机制,就无限扩容);
2:拆分了各种功能划分为单独的服务器,可以有效降低单点故障,加强了集群的可持续性和系统的可用性,避免了单个系统故障可能引起的”雪崩效应“;
网友评论