写点什么

在线游戏为何青睐云计算?揭秘手游云计算架构部署

  • 2013-10-23
  • 本文字数:1488 字

    阅读完需:约 5 分钟

在线游戏(主要指手游和页游)具有鲜明的行业特点。首先,游戏开发门槛较低,导致游戏数量急剧增长,玩家忠诚度迅速降低,稳定可靠的游戏服务能力成为游戏开发与运营商的立身之本。其次,大多数游戏厂商独立运维的实力较小,随着业务的井喷式发展,对动态快速扩展硬件资源的需求与日俱增。第三,对于相对热门的游戏而言,一般都拥有海量玩家,亟需高并发、高负载的应对措施与方案。第四,游戏开发技术发展迅速,硬件日新月异,游戏画质与可玩性明显改善,低响应延迟是游戏体验的基本需求。最后,同业竞争激烈,安全成为游戏,尤其是热门游戏的命门。

在这种背景下,在线游戏行业面临三个主要挑战:1)需要 IT 系统提供稳定、安全、可靠的游戏服务能力,保证业务的高可用性;2)需要灵活、高可扩展性的游戏架构设计,适应业务发展的突发峰值访问;3)海量用户高并发场景下的低延迟响应要求,以提供流畅的游戏体验。

应对好这三个挑战,将为游戏厂商的成功提供坚实的基础与支撑。本文将从手游的角度讨论合理的在线游戏后端平台架构,并将引入手游行业的知名游戏大掌门应用云计算的架构,帮助优化已有的系统部署。

手游传统架构与云计算架构对比

传统手游架构

在传统手游构设计中,有几个可以改进的地方。游戏运行服务中,应用部署在固定的服务器上,当业务迅速变化时,无法及时动态调整资源来满足;单台云服务器上部署了游戏应用的多个模块,不符合松耦合的部署原则,且容易造成 IO 争抢,影响读写性能;在玩家游戏的高峰时段,游戏更新服务容易因数据分发延迟,形成瓶颈,影响用户体验;游戏更新服务中存在单点配置,一旦其中的一台服务器宕机,可能导致玩家无法更新而不能继续游戏;对架构全局缺少专门的监控与报警机制,存在安全隐患。

大掌门游戏架构图

与传统系统部署架构相比,大掌门应用云计算的架构有以下特点:

  1. 实现应用的松耦合,将 Web/ 应用服务器与缓存、数据库服务等模块解耦,并物理隔离部署,这样能够实现功能模块的水平扩展,同时也避免了云服务器上 IO 争抢带来的性能降低问题。如上图所示,Web Server、Cache Server 及 DB Server 均各自分层,Web Server 组成一个集群,通过负载均衡 SLB 对外提供服务。当业务量迅速变化时,可以通过 API 自动动态向上或向下扩展集群中的云服务器数目。DB Server 搭建主备集群,并定期冷备数据到本地或 OSS 存储。用户也可不必自己搭建缓存和数据库服务,而直接采用阿里云 OCS 和 RDS,这样可以简化系统架构、降低运维成本,并有更高的可靠性。
  2. 在关键路径上,部署主备集群,通过负载均衡服务 SLB 分发并对外提供服务,避免单点故障带来的游戏不可用。游戏更新和运行服务均体现了这一点。
  3. 游戏更新服务可基于阿里云 CDN 提供静态文件分发的低延迟,若游戏中有大量临时文件,包括地图、静态数据分发等,也可以考虑通过 CDN 来保证游戏体验。
  4. 在应用部署的云服务器上,免费开通云盾及云监控,保障游戏不受恶意攻击及病毒、木马等入侵,为游戏稳定运行提供保障。

综上所述,面对游戏行业特点与挑战,基于云服务的架构部署方式完全可以解决传统架构存在的问题与隐患。阿里云的云服务器、RDS 等产品的高可扩展性能力帮助用户实现动态资源配置,以应对业务的剧烈变化;负载均衡帮助用户应对高峰流量、单点故障,提升业务稳定性;云盾、云监控帮助用户保护网络与数据安全,抵御恶性竞争的攻击;多线 BGP 网络、CDN 帮助用户在海量、高并发场景下维持业务的快速响应。

基于以上的优势,做游戏就用云计算开始成为行业标配,比如大掌门、疯狂猜图、小浣熊、游易网络、跃兔、边锋等都是云计算的受益者,他们也将在 2013 阿里云开发者大会上详细展示如何完成“云中游戏”的。

2013-10-23 10:112097
用户头像

发布了 1544 篇内容, 共 730.5 次阅读, 收获喜欢 2520 次。

关注

评论

发布
暂无评论
发现更多内容

redis持久化RDB与AOF

wjchenge

redis

美国黑客曝出政府惊天内幕,看区块链如何解决!

CECBC

CECBC 区块链技术 民生 不可篡改 信息公开

产品周刊 | 第 17 期(20200531)

八味阁

产品 设计 产品经理 产品设计 产品推荐

游戏夜读 | 什么是黑色一分钟?

game1night

GcExcel:比 Apache POI 速度更快、性能更高

葡萄城技术团队

Apache POI GCExcel

面试题:教你如何吃透RocketMQ

奈学教育

架构 RocketMQ 架构设计

收藏!如何有效实施devops?

禅道项目管理

DevOps 运维 持续集成 开发 自动化测试

Docker 搭建 Postgres + pgAdmin 环境

姜雨生

Docker DevOps postgres

深入理解JVM内存管理 - 方法区

Skye

深入理解JVM 方法区 老年代

Vue生成AST算法的解析

djknight

Java Vue AST

CI/CD - Python Django 项目在 Jenkins 上的实践

meta-algorithmX

Python django TDD CI/CD

【译】业务转型是什么?

涛哥 数字产品和业务架构

业务中台 数字化转型

CEO或业务负责人应该具备的数据分析能力

花生

工具 数据 CEO

ARTS-week one

Jokky💫

ARTS 打卡计划

『PyTorch』使用指定GPU的方法

kraken0

人工智能 学习 图像识别

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十四)编写测试-显示名

编程道与术

Java 编程 TDD 单元测试 JUnit

奈学大数据开发工程师分享787个技术,快来收割

奈学教育

大数据

万恶的NPE如何避免,几种你必须知道的方案!!!

不才陈某

后端

学习没进步?也许反馈有问题

KAMI

学习 认知提升

运维日志里隐藏的安全危机,你知道怎么挖吗?听听专家怎么说

secisland

态势感知 关联分析 SOC

Hive底层执行引擎的深度剖析(免费)

奈学教育

大数据 hive

撸一串趣图,给晚上加班打个鸡血

码农神说

程序员 加班 段子

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十五)编写测试-断言\假设\使测试失效

编程道与术

Java 编程 TDD 单元测试 JUnit

手机是21世纪最成功的毒品

Neco.W

学习 提升效率 工作

安全做到首位 统信UOS后激勃发

统小信uos

网络安全 操作系统

SpringBatch系列入门之Tasklet

稻草鸟人

spring SpringBatch 批处理

深入理解ContextClassLoader

Skye

深入理解JVM ContextClassLoader

Java是不是慢半拍?

X.F

Java 架构 编程语言

霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典

图灵社区

数据库 SQL语法 sql查询

我们是活着,而不是活过

小天同学

个人感想 生活,随想 随笔杂谈 日常思考

Vim使用总结

JDoe

vim

在线游戏为何青睐云计算?揭秘手游云计算架构部署_语言 & 开发_InfoQ 中文站_InfoQ精选文章