简单实用的网游服务器架构 - GameRes游戏新闻网

简单实用的网游服务器架构

此文并不是聚润堂所在公司当前运营的网游游戏服务器架构,而是在看过了近十个商业网游的架构,在现阶段心目中规划的简单实用的网游服务器架构。 网游的本质是人和人之间关系,人越多,关系越多,越能把人留住。开服头三天,人数是最多,为了保证一个月后,玩家等级达到一定的等级,策划的玩法都可以完全展开,单组服务器容纳人数越多越好,如果是PVE结构的游戏,最好能容纳1万人左右。这样在一个月后流失率50%的情况下,还有5000人左右在一组服务器内,已经产生比较强大的社会结构,各种高级玩法才有进行的基础。如果是PVP洗用户的游戏,容纳人数越高越好。两款较好的国战游戏,《征途》达到了每组4万人,《成吉思汗》,推测至少也达到了两万人。 采用完美常用的分线结构,运营到后期,就会出现每线人数较少,线内,线和线之间都互动不起来。但如果不分线,在开服一刹那,用户全部堆积在同一个新手村,基本玩不动。《天龙八部》提出了较好的解决方案,建立多个平行的新手村地图,一主多副,开服时尽可能多的同时容纳新用户的涌入,高等级玩家从其它地图回新手村只能到达主新手村。 下图中每个方框表示一个独立的进程APP组件,每个服务进程如果发生宕机会影响部分用户,整体服务但不会全部中断。在宕机进程重启后,又可以并入整体,全部服务得以继续。 图片附件

gls:game login server,游戏登录服务器,某种程序上,其不是核心组件,gls调用外部的接口,进行基本的用户名密码认证。此外需要实现很多附属的功能:登录排队(对开服非常有帮助),GM超级登录通道(GM可以不排队进入游戏),封测期间激活用户控制,限制用户登录,控制客户端版本等。 db:实质上是后台sql的大内存缓冲,隔离了数据库操作,比较内存中的数据,只把改变的数据定时批量写入sql。系统的算法,开发稳定性都要求非常高。 center:所有组件都要在这里注册,在线玩家的session状态都在这里集中存放,和各组件有心跳连接。所有对外的接口也全部通过这里。 角色入口:玩家登录游戏后的选择角色 gs:game server,最核心组件,同一地图,所有游戏逻辑相关的功能,都在这里完成。 gate:建立和用户的常链接,主要作sockt转发,屏蔽恶意包,对gs进行保护。协议加密解密功能,一个gate共享多个gs,降低跳转地图连接不上的风险。 IM,关系,寄售:表示其它组件,负责对应的跨地图发生全局的游戏逻辑。 细节是魔鬼。此架构简单、清晰、明了,和其它网游架构相比其实没有什么本质的区别。团队的代码开发能力,项目管理能力才是关键。一个gs承担能力有限,在现在硬件环境下,一个有经验的开发人员,一个gs应该能达到1500人的上限。整个架构的上限,瓶颈在center调度压力,db的读写压力。 引用一段深以为然的话做结束: ========== http://blog.csdn.net/lfhfut/archive/2010/04/14/5483266.aspx 4。游戏开发并没有什么高深的技术 首先需要明确的一点,游戏项目是工程项目,不是科研项目。 工程项目的目的是在有限的人力跟财力之下实现出既定的需求,而这个需求从前面的分析可以知道,要求并不高,所以,需求的实现过程也就并没有多么高深。 至少在我经历过的项目里,没有什么惊天地泣鬼神似的英雄人物,没有创造出多么伟大的算法,我们所做的,只是使用现在的技术,现有的方法,拼合成一个软件产品,一个融合了程序、美术、策划劳动力的软件产品。 游戏开发的过程里,没有,也不需要多厉害的技术高手,需要的仅仅只是有耐心,有责任心的普通技术人员。 =========== 最后赞一句:Dia真是跨平台画流程图的好软件,聚润堂的日常使用中已经完全替代了Visio。 参考: 白云哥的blog http://blog.csdn.net/lfhfut/archive/2007/09.aspx 一种经典的网络游戏服务器架构 http://www.cppblog.com/johndragon/archive/2008/04/10/46768.html 传奇3的架构图 http://bbs.gameres.com/showthread.asp?threadid=47752&page=10 185楼,187楼,分了两部分。聚润堂把其合在一起方便查看

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏美团技术团队

数据库智能运维探索与实践

近些年,传统的数据库运维方式已经越来越难于满足业务方对数据库的稳定性、可用性、灵活性的要求。随着数据库规模急速扩大,各种NewSQL系统上线使用,运维逐渐跟不上...

1491
来自专栏JAVA技术zhai

架构的演进,阿里资深Java工程师表述架构的腐化之谜

新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品...

48012
来自专栏Java架构师学习

Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师一、分布式架构体系二、微服务架构三、阅读源码、分析源码四、工具的使用五、性能优化

一、分布式架构体系 分布式怎么来的。传统的电信、银行业,当业务量大了之后,普通服务器CPU/IO/网络到了100%,请求太慢怎么办?最直接的做法,升级硬件,反正...

2989
来自专栏云计算D1net

DevOps在云中如何演变

Puppet和Chef这样的工具帮助人们在云上使用DevOps成为可能,但是当涉及到管理和分析云应用时,仍然会有障碍。 软件开发从一个应用程序的架构开始。传统的...

3328
来自专栏腾讯大讲堂的专栏

以“工匠”的精神对待每一个版本

工匠们喜欢不断雕琢自己的产品,不断改善自己的工艺,享受着产品在双手中升华的过程。工匠们对细节有很高要求,追求完美和极致,对精品有着执着的坚持和追求,把品质从99...

19710
来自专栏ThoughtWorks

2015.1 技术雷达 | 技术篇

许多项目都存在外部代码依赖,这些依赖中很大一部分是由开源项目提供的。为了确保构建过程可被重现,我们总是与固定版本的外部依赖进行集成。但这就意味着我们与这些类库的...

3527
来自专栏Java架构

架构的演进,阿里资深Java工程师表述架构的腐化之谜

新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品...

43210
来自专栏腾讯云数据库(TencentDB)

不知道CynosDB为什么叫真正的云原生数据库?腾讯云数据库的产品欧巴今天跟你聊一聊

注:本文摘自2018年11月22日腾讯云数据库CynosDB新品发布会的演讲实录。随着互联网信息的发展,大家也对云这个词汇也不是特别陌生了,作为全球首选的云服务...

2572
来自专栏我的安全视界观

【企业安全】企业安全项目-测试环境内网化

2025
来自专栏SDNLAB

提升云NFV基础设施的运营效率

从2015年到2021年,移动数据流量将增长高达10倍以上。数据和新服务的需求大量涌现,数据和需求的来源不仅来自智能手机,还保留物联网(IoT)设备。电信运营商...

2975

扫码关注云+社区