【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

视频游戏《光环 4》的 Actor 模型设计和实现

  • 2015-03-18
  • 本文字数:1257 字

    阅读完需:约 4 分钟

在开始设计光环(Halo)系列视频游戏的下一代——光环4 的时候,现有的游戏引擎与可用的服务已经无法满足游戏的需求了,因此开发者基于 Actor 模型设计了一套全新的解决方案,并使用 Orleans 框架完成了这套模型的实现。在 QCon 伦敦大会上, Caitie McCaffrey 在演讲中为听众介绍了他们设计与创建这个新游戏背后的服务的过程。

McCaffrey 原本在微软游戏工作室就职,目前则在 Twitter 担任分布式系统工程师的职位。他提到了在游戏开发过程中所遇到的一个架构上的挑战,是如何设计该游戏将要面对的海量访问的负载。在光环 4 上线当天,共有 100 万独立在线用户参与了游戏,这个数字在一周之内就上升到了 400 位,游戏时间总和超过了 3000 万小时。为了应对如此庞大的负载,该项目选择了在云端进行托管,更具体地说是托管在 Azure 上,毕竟光环 4 是微软所推出的游戏。其它的挑战还包括如何保证游戏能够始终在线运行,这就要求服务器永远保持可用状态,还要尽量降低延迟,并且提高并发能力。

在寻找能够满足该项目需求的解决方案过程中,项目组的目光投向了 Actor 模型。从本质上说,Actor(角色)是并发的基础,该模型的核心概念在于:作为并发计算的基元,每个 Actor 将通过异步消息发送的方式与另一个 Actor 进行通信。当某个 Actor 收到一条消息之后,它可以选择将消息发送给其它 Actor,或是创建一个新的 Actor,也可以修改它的内部状态。这样一来,就能够高效地将某个 Actor 的所有数据保存在同一个地方,因此 McCaffrey 和他的团队通过实现这些保持状态的服务,创建了一套能够保持状态的中间层,它一方面具有缓存的高性能优点,另一方面也不会产生由于并发造成的问题。

项目组在微软内部四处寻找可行的方案,他们最终发现了 Orleans 框架,这是一个用于创建基于 Actor 模型的分布式系统的运行时与编程模型。Orleans 框架与其它 Actor 模型框架最重要的不同之处在于它所独有的概念:虚拟 Actor。这个虚拟 Actor 永远不会被创建或是销毁,从逻辑上来说它是永远存在的。虚拟 Actor 所具有的关键思想,一是地址的透明性,即发送给某个 Actor 的消息会被自动路由至该 Actor,无论该 Actor 的地址在哪里;二是能够在不重新进行部署的情况下进行自动横向扩展。

McCaffrey 声称,在使用了新技术的全新架构中,服务器的 CPU 利用率能够持续稳定在 90% 的水平上,并且能够实现接近线性增长的可扩展性,能够轻易地应对负载的变量,这一点在访问量突发性增长的时刻相当实用,例如当游戏刚刚上线的时候。

McCaffrey 相信,如果没有 Orleans 这个框架,光环 4 的项目就不可能获得成功。由于 Orleans 能够为开发者编写在分布式环境中运行的代码提供极大的帮助,因此寻找合适的开发者也变得简单了许多。并且由于它提高了开发者的生产力,因此开发者能够专注于提高游戏的用户体验,让它的表现更加出色。

McCaffrey 在一篇较早的博客帖子中,曾经介绍了使用 Orleans创建RESTful 服务的过程。

对于实现Actor 模型的不同途径,InfoQ 之前曾经专门进行过讨论和报告

查看英文原文: Building Halo 4, a Video Game, Using Actor Model

2015-03-18 06:122739
用户头像

发布了 428 篇内容, 共 172.2 次阅读, 收获喜欢 38 次。

关注

评论

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

最新 Apifox 3 月更新:详解多分支升级、Query 参数支持枚举、自定义快捷键

Apifox

程序员 Apifox API 接口工具 API 工具

CQ 社区版2.10.0 | 新增 SQL 审核、全新英文版上线…

BinTools图尔兹

mongodb mongo 数据库管理 SQL审核 SQLite编辑器

一文掌握Trello:功能解析、与其他工具优劣对比及高效使用技巧

PingCode

任务管理工具 Trello

聊聊我做测试开发的十年心路历程

阿里技术

测试 开发

TikTok直播专线是什么?有什么用?

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 海外直播网络

日立公司采用元太科技电子纸实现了无纸化营运

财见

分享一些大数据处理算法

宇文辰皓

大数据

大文件上传实践分享

京东科技开发者

自定义对象池实践

FunTester

如何轻松管理你的海外主机?实用技巧大公开!

一只扑棱蛾子

海外主机

“专业敏捷教练课程” 6月1-2日 · CSP-SM认证周末班【晋升高阶享多重福利】

ShineScrum捷行

是什么阻碍了你的成长

老张

个人成长 职场成长

OLAP性能再获突破!火山引擎ByteHouse性能白皮书发布

Geek_2d6073

DevOps迈向标准化,平台工程让开发运维更轻松

SEAL安全

DevOps 运维 平台工程

ChatTuGraph:通过大模型“与图对话”

TuGraphAnalytics

graph FineTuning Text2GQL

山东省正规等保测评机构名称以及地址一览表

行云管家

等保 山东 等级保护 等保测评

阿里云实时计算Flink的产品化思考与实践【上】

Apache Flink

大数据 flink 实时计算

保障校园网络安全用堡垒机的几个原因分析

行云管家

网络安全 数据安全 堡垒机 等保合规 校园

软件测试学习笔记丨Allure2报告中添加附件-日志

测试人

软件测试 测试开发

ECS公网连接指南:精明选择公网IP计费策略

Geek_2d6073

新版Redis不再“开源”,对使用者都有哪些影响?

华为云开发者联盟

数据库 redis 华为云 华为云开发者联盟 华为云GeminiDB

比 MyBatis 效率快 100 倍...

Java技术精选

PostgreSQL数据迁移至Doris:一站式解决方案

NineData

postgresql Doris 实时数据分析 实时同步 NineData

reduce函数20个高级用法 看看你掌握了多少?

高端章鱼哥

库存控制秘诀:鞋服品牌如何避免库存积压风险

第七在线

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮...

Java技术精选

亚马逊云科技携手埃森哲、Anthropic助力企业打造负责任的AI

财见

基于vite多页面实现多端同构开发和部署

京东科技开发者

学算法要读《算法导论》吗?

京东科技开发者

一站式大数据开发与治理产品实践

Jackchang234987

元数据 大数据平台 数据开发平台 数据中台数据治理

同城双活:交易链路的稳定性与可靠性探索

得物技术

Java 后端 中间件 双活

视频游戏《光环4》的Actor模型设计和实现_DevOps & 平台工程_Jan Stenberg_InfoQ精选文章