专栏首页Golang语言社区网游服务器架构设计需要考虑的一些关键因素

网游服务器架构设计需要考虑的一些关键因素

网络游戏出现至今,角色扮演游戏(MMORPG)一直是个主流游戏类型。主要原因还是因为拥有丰富的交互体验,特别是玩家之间的互动、角色扮演的特性在MMORPG这种游戏类型中最能得到丰富的表现。相对于Casual Game网游来说,MMORPG本身的游戏设计方面的特性就决定了MMORPG 服务器的设计和实现的难度会更大、对服务器系统的要求更高。这个难度又主要体现在服务器架构设计方面。

那么如何设计架构、如何评价架构设计、以什么为标准来决定设计,就是一个问题,接下来说说我对评价标准的看法。

服务器组架构(Server Cluster Architecture)的主要评价标准包括:

  • Stability,稳定性

稳定提供游戏服务,是服务器系统确保用户体验的最基本要求。稳定性主要与应用服务器的软件质量相关。稳定性处于第一位的原因是稳定性是用户体验的基石,稳定性不过关的话,其他一切都无从谈起。

  • Efficiency,效率

服务器组的运行时效率主要体现在服务器系统的承载能力上。对于同类型的游戏来说,同样一组服务器硬件运行A游戏可以承载5000人,但是运行B游戏只能运行2000人,这就是效率差异。

  • Scalability,可缩放性

可缩放性在一定程度上可以理解为:增加服务器硬件是否可以相应的提高系统的负载能力或者是否能提高用户体验。承载能力和用户体验都是系统表现的一部分。但是不管对于什么样的系统,系统硬件数量/能力和系统实际运行表现基本上都不可能是线型关系。就是说Scalability总是只能在一定范围内做评价,例如:某系统可以在0-100k在线玩家的情况下提供流畅的游戏。

从游戏开发及运营的角度来考虑,主要评价标准还要包括:

  • Productivity,生产力、开发效率

服务器的架构设计不止要考虑系统运行时的效率,开发时的工作效率也要考虑。例如:不同的系统服务(Service)或应用服务器(Application Server)之间是否会过度耦合(Over Coupling)?如果这种情况出现,也常常会导致开发人员工作的耦合,在日常的开发中,工作效率就难以保证。想象一下要Debug某个模块时候需要手动的在不同的远程服务器上更新开启3、5个不同的服务器程序。这种小任务重复做一年、二年累积起来就是很大的资源浪费,包括人力和硬件,甚至团队士气。

  • TCO,总体拥有成本

尽量使用最便宜、最少量的硬件、最小的带宽、最少的维护人员,尽量达到最好的运行时表现;这直接影响游戏的运营收入、利润率,间接影响游戏的成败、公司的成败;

  • Simplicity,简单

简单性要体现在服务器组(Server Cluster)的部署、和维护方面。如果一个游戏服务器组有20台硬件,那么备份数据、更新、重启这种简单的事情都会不再简单。一般游戏服务商每周都只做两小时停机维护,20组服务器的话,一次需要多少人做这个维护工作?40组呢?

  • Extendibility/可扩展性

实 际上考虑到网络游戏服务的持续性,可扩展性也很重要,再丰富的游戏内容也无法持续吸引玩家几年,一般的做法就是周期性的持续提供游戏更新。在网游服务器架 构设计上考虑内容上的可扩充性,也是有必要的,通过技术细节的改进总可以得到或多或少的改进,但是在架构设计阶段就考虑到可扩展性才是聪明的做法。

作者:JerryWang

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 网游服务器架构设计需要考虑的一些关键因素

    网络游戏出现至今,角色扮演游戏(MMORPG)一直是个主流游戏类型。主要原因还是因为拥有丰富的交互体验,特别是玩家之间的互动、角色扮演的特性在MMORPG这种游...

    李海彬
  • Golang语言社区--游戏服务器端开发的一些建议(转载)

    大家好,我是Golang语言社区(www.golang.ltd)主编彬哥,本篇给大家转载一篇关于游戏服务器开发的文章。

    李海彬
  • 系统架构之二(棋牌类游戏常用架构)

    棋牌类游戏常用架构: ? 我从事过4年的棋牌类游戏开发,使用过的架构大致如上,各模块解释如下。 LoginServer: 登陆服务器,主要负责player 的登...

    李海彬
  • 网游服务器架构设计需要考虑的一些关键因素

    网络游戏出现至今,角色扮演游戏(MMORPG)一直是个主流游戏类型。主要原因还是因为拥有丰富的交互体验,特别是玩家之间的互动、角色扮演的特性在MMORPG这种游...

    李海彬
  • 游戏服务器和Web服务器的区别

    用Go语言写游戏服务器也有一个多月了,也能够明显的感受到两者的区别。这篇文章就是想具体的聊聊其中的区别。当然,在了解区别之间,我们先简单的了解一下Go语言本身。

    tengxunyun8点com活动整理
  • 游戏服务器和Web服务器的区别

    用Go语言写游戏服务器也有一个多月了,也能够明显的感受到两者的区别。这篇文章就是想具体的聊聊其中的区别。当然,在了解区别之间,我们先简单的了解一下Go语言本身。

    SH的全栈笔记
  • 因为对Perl和Python不满?圣诞节无聊?编程语言的出现都这么随意吗?

    A.1. 第一个计算机语言:Fortran Fortran I 诞生于 1957 年,由 IBM 设计,是世界上第一个真正的计算机语言。 Fortran I ...

    顶级程序员
  • 概率机器学习绽放光彩,Uber首席科学家Zoubin Ghahramani获英国皇家学会奖项

    近日,英国皇家学会颁发 2021 年米尔纳奖(Royal Society Milner Award and Lecture),剑桥大学信息工程学教授 Zoubi...

    机器之心
  • 每个开发者都应该了解的游戏引擎知识

    游戏引擎主要用于快速开发游戏,将游戏中固定不变的处理抽取出来,形成完整的游戏主体,用户只需要对开放的接口进行对象设计和驱动即可。在当前的环境,还...

    open
  • [建模答题赛第2赛季第5轮]序列图

     D) 如果一张序列图上,各条生命线顶部的矩形内部的文字中,冒号右侧部分各不相同,那么左侧部分可以留空。

    用户6288414

扫码关注云+社区

领取腾讯云代金券