python大数据分析游戏行业中的 Apache Kafka:用例 + 架构!
这篇博文探讨了使用 Apache Kafka 的事件流如何提供可扩展、可靠且高效的基础设施,让游戏玩家开心并让游戏公司取得成功。讨论了游戏行业中的各种用例和架构,包括在线和移动游戏、博彩、赌博和视频流。
学习关于:
- 游戏遥测的实时分析和数据关联
- 实时广告和应用内购买的货币化网络
- 投注支付引擎
- 检测财务欺诈和欺诈
- 游戏和跨游戏中的聊天功能
- 监控实时操作的结果,例如周末活动或限时优惠
- 对营销活动的元数据和聊天数据进行实时分析
博彩业的演变
游戏行业必须每天实时处理数十亿个事件,并确保跨游戏交互和后端分析进行一致可靠的数据处理和关联。部署必须在全球范围内运行,并为数百万用户一年 365 天 24/7 工作。
这些要求适用于硬核游戏和大片,包括大型多人在线角色扮演游戏 (MMORPG)、第一人称射击游戏和多人在线战斗竞技场 (MOBA),以及中核和休闲游戏。与智能手机和游戏机等消费设备的可靠且可扩展的实时集成与与 Twitch 等在线流媒体服务和博彩提供商合作一样重要。
博彩业的商业模式
游戏不再只是游戏。尽管如此,即使在游戏行业,玩游戏的选择也是多种多样的,从游戏机和 PC 到手机游戏、赌场游戏、在线游戏和各种其他选择。除了游戏之外,人们还通过专业电子竞技、$$$ 锦标赛、实时视频流和实时投注进行参与。
这是一个疯狂的进化,不是吗?以下是当今与游戏行业相关的一些商业模式:
- 硬件销售
- 游戏销售
- 免费游戏和游戏内购买,例如皮肤或冠军
- 赌博(战利品箱)
- 游戏即服务(订阅)
- 季节性游戏内购买,例如主题活动的通行证、季中邀请赛和世界锦标赛、竞技比赛的通行证
- 游戏基础设施即服务
- 商品销售
- 社区包括电子竞技转播、门票销售、特许经营费
- 滚球投注
- 视频流,包括广告、奖励等。
游戏中人工智能的演变
人工智能(业务规则、统计模型、机器学习、深度学习)对于游戏中的许多用例至关重要。这些用例包括:
- 游戏内 AI:不可玩角色 (NPC)、环境、功能
- 欺诈检测:作弊、金融欺诈、虐待儿童
- 游戏分析:保留、游戏变化(实时交付或通过下一个补丁/更新)
- 研究:寻找新算法,改进人工智能,适应业务问题
在下文中,我探索的许多用例都将 AI 与事件流和 Kafka 结合使用。
使用 Apache Kafka 进行事件流的混合游戏架构
对构建开放、灵活、可扩展的平台和实时处理的巨大需求是众多游戏相关项目使用 Apache Kafka 的原因。我不会在这里讨论 Kafka 并且假设您知道为什么 Kafka 成为事件流的事实上的标准。
更有趣的是我在野外看到的不同部署和架构。游戏行业的基础设施通常是全球性的——有时仅限云,有时与本地本地安装混合。投注通常是区域性的(主要是因为法律和合规性原因)。游戏通常是全球性的。如果一款游戏非常出色,它就会在全球范围内部署和推广。
现在让我们来看看游戏行业中的几个不同用例和架构。这些示例中的大多数都与所有与游戏相关的用例相关,包括游戏、移动、博彩、赌博和视频流。
基础设施运营:实时监控和故障排除
监控实时操作的结果对于每个关键任务基础设施都是必不可少的。用例包括:
- 游戏客户端、游戏服务器、游戏服务
- 服务健康 24/7
- 周末锦标赛、限时优惠和用户获取活动等特殊活动
立即和正确的故障排除需要实时监控。您需要能够回答诸如“谁制造了问题?客户?ISP?游戏本身?”之类的问题。
我们来看一个游戏行业的典型例子——一个新的营销活动:
- “周末免费玩”
- 可扩展性——巨大的额外流量
- 监控——营销活动是否成功?游戏/业务的盈利能力如何?
- 实时(例如,警报)
- 批处理(例如,Snowflake 的成功分析和报告)
必须集成、关联和监控大量不同的数据,以保持基础架构运行并解决问题。
弹性是游戏行业成功的关键
基础设施监控的一个关键挑战是所需的弹性。您不能仅仅提供一些硬件、部署软件并一年 365 天 24 小时运行它。游戏基础设施需要弹性。无论您是关心在线游戏、投注还是视频流。
Epic Games 平台总监 Chris Dyl在 2018 年 AWS 峰会上很好地指出了这一点:“我们在高峰和低峰之间的工作负载差异几乎是十倍。弹性对于我们在任何特定地区的任何特定区域都非常重要。云提供商。”
Confluent 为任何 Kafka 部署提供了弹性,无论事件流平台是在边缘自行管理还是在云中完全管理。查看“在 Confluent Cloud 中将 Apache Kafka 扩展到每秒 10+ GB”以了解如何在云中自动扩展 Kafka。通过使用自平衡 Kafka、分层存储和用于 Kubernetes 的 Confluent Operator 等工具,自我管理的 Kafka 变得具有弹性。
游戏遥测:与 Kafka 的实时分析和数据关联
游戏遥测描述了玩家如何玩游戏。玩家信息包括用户操作(按钮点击、射击、使用物品)或游戏环境指标(任务、升级)等业务逻辑,以及从特定服务器登录、IP 地址、位置等技术信息。
Global Gaming 需要世界各地的代理来保证数百万客户端的区域延迟。此外,中央分析集群(具有匿名数据)关联来自全球的数据。以下是使用游戏遥测的一些用例:
- 游戏监控
- 玩家在游戏中的进展情况以及发生了什么问题
- 直播操作——调整玩法
- 玩家在玩游戏时服务器端的变化(例如,限时活动,给予奖励)
- 实时更新以改进游戏或满足观众需求(或换句话说:推荐物品/升级/皮肤/额外的游戏内购买)
大多数用例需要实时处理大数据流:
大鱼游戏
Big Fish Games 是利用 Apache Kafka 及其生态系统进行实时操作的一个很好的例子。他们开发休闲和中核游戏。150 个国家的智能手机和电脑上安装了 25 亿个游戏,代表了 450 多个独特的手机游戏和 3,500 多个独特的 PC 游戏。
实时操作使用游戏遥测数据的实时分析。例如,Big Fish Games 通过实时为游戏内购买提供特定于上下文的建议,从而在玩家玩游戏时增加收入。Kafka Streams 用于大规模实时连续数据关联。
查看 Kafka 峰会演讲“Big Fish Games 如何开发实时分析”中的详细信息。
货币化网络
货币化网络是大多数游戏公司的基本组成部分。用例包括:
- 游戏内广告
- 微交易和游戏内购买:出售皮肤,升级到一个新的水平……
- 游戏基础设施即服务:多平台和商店集成、匹配、广告、玩家身份和朋友、交叉游戏、大厅、排行榜、成就、游戏分析等。
- 合作伙伴网络:交叉销售游戏数据、游戏SDK、游戏分析等。
货币化网络如下所示:
统一广告
Unity 就是一个很好的例子。2019 年,内容安装量达到 330 亿次,达到全球 30 亿台设备。公司提供实时3D开发平台。
Unity 运营着世界上最大的货币化网络之一:
- 奖励观看广告的玩家
- 加入横幅广告
- 加入增强现实 (AR) 广告
- 可玩广告
- 交叉促销
Unity 是一家数据驱动型公司:
- 平均每秒大约 50 万个事件
- 处理数百万美元的货币交易
- 基于 Confluent Platform、Confluent Cloud 和 Apache Kafka 的数据基础设施
单个数据管道为分析、研发、货币化、云服务等提供了基础架构,以利用 Apache Kafka 进行实时和批处理:
- 实时货币化网络
- 实时提供机器学习模型
- 数据湖从两天的延迟缩短到 15 分钟
如果您想了解他们将该平台从自我管理的 Kafka 迁移到完全管理的 Confluent Cloud 的成功故事,请阅读 Unity 在 Confluent 博客上的帖子:“Unity 如何使用 Confluent 大规模实时事件流”。
游戏内和跨平台聊天功能
在当今世界,构建聊天平台并非易事。聊天意味着发送文本、游戏内截图、游戏内物品和其他东西。必须实时处理数百万个事件。跨平台聊天平台需要支持各种技术、编程语言和通信范式,例如实时、批处理、请求-响应:
Kafka 的特性使其成为聊天平台的完美基础架构,因为它具有高可扩展性、实时处理和真正解耦,包括背压处理。
支付引擎
支付基础设施需要实时、可扩展、可靠且与技术无关。无论您的解决方案是为游戏、博彩、娱乐场、3D 游戏引擎、视频流还是任何其他第三方服务而构建。
游戏行业的大多数支付引擎都建立在 Apache Kafka 之上。其中许多公司提供有关其实时博彩基础设施的公开信息。这是架构的一个示例:
一个示例用例是在现场投注中实施投注延迟和批准系统。需要有状态的流分析来提高利润:
Kafka 原生技术,如 Kafka Streams 或 ksqlDB,可以直接实现这些场景。
William Hill:安全可靠的实时微服务架构
William Hill 从单体架构转变为灵活、可扩展的微服务架构:
- Kafka 作为中央、可靠的流媒体基础设施
- Kafka 用于数据的消息传递、存储、缓存和处理
- 独立解耦的微服务
- 解耦和可重放性
- 技术独立
- 高吞吐量+低延迟+实时
William Hill 的交易平台利用 Kafka 作为所有事件和交易的核心:
- 实时“流程到流程”执行
- 与实时机器学习的分析模型集成
- 各种数据源和数据接收器(实时、批处理、请求-响应)
博彩公司业务等同于银行业务(包括传统中间件和大型机)
不是每个人都可以从绿地开始。遗留中间件和大型机的集成、卸载和替换是一个常见的场景。
博彩通常是一个受监管的市场。PII 数据通常在区域数据中心内部处理。非 PII 数据可以卸载到云中进行分析。
大型机等传统技术是一个关键的成本因素,单一且不灵活。
用于保留、合规性和客户体验的流分析
数据质量对于法律合规性和负责任的游戏合规性至关重要。客户保留对于保持参与度和收入增长至关重要。
这种环境中存在大量实时流分析用例。Kafka 原生框架(如 Kafka Streams 或 ksqlDB)可以为可靠且可扩展的解决方案提供基础的一些示例是:
- 球员连续输/输
- 球员转化——从注册到工资(在 x 分钟内)
- 玩家的游戏成就
- 欺诈检测——例如,支付窗口
- 每个玩家数天/数月的长时间运行窗口
- 锦标赛
- 用额外的免费积分奖励不满意的玩家
- 向监管机构报告——以有保证的顺序重播旧事件
- 地理定位以启用功能、限制或佣金
流处理也与许多其他用例相关,包括欺诈检测,您将在下一节中看到。
Kafka 游戏中的欺诈检测
用于检测异常的实时分析是任何支付基础设施中的普遍场景。在游戏中,存在两种不同类型的欺诈:
- 作弊:假账户、机器人等。
- 金融欺诈:比赛造假、信用卡被盗等。
以下是使用 Kafka、其生态系统和机器学习对欺诈检测进行流式分析的示例:
下面是一个使用 Jupyter notebooks 和 Python 检测金融欺诈和作弊的示例,以分析使用 ksqlDB 预处理的数据:
客户 360:推荐、忠诚度系统、社会融合
Customer 360 对于实时和特定于上下文的获取、参与和保留至关重要。用例包括:
- 实时事件流
- 游戏事件触发
- 个性化的统计数据和赔率
- 玩家细分
- 战役编排(“玩家旅程”)
- 忠诚度系统
- 奖励(例如,升级、独家游戏内容、公告事件的测试密钥)
- 避免客户流失
- 交叉销售
- 社交网络整合
- Twitter、Facebook 和其他社交媒体网站
- 示例:Candy Crush(我猜每个 Facebook 用户都看过这款游戏的广告)
- 合作伙伴整合
- API 管理
以下架构描述了客户 360 解决方案的各种内部和外部组件之间的关系:
Sky Betting 和 Gaming 的 Customer 360
Sky Betting and Gaming使用 Kafka 的生态系统为客户 360 用例构建了实时流媒体架构。
在讨论他们为什么选择 Kafka 原生框架(如 Kafka Streams)而不是 Hadoop、Spark、Storm 等技术动物园时,Kaerast 表示:
“我们的大部分流数据都是 Kafka 集群上的主题形式。这意味着我们可以使用围绕 Kafka 设计的工具,而不是带有 Kafka 插件/连接器的通用流解决方案。
“Kafka 本身是一个快速移动的目标,客户端库不断更新;等待这些新库包含在 Hadoop 的企业发行版或任何现成的工具中并不是一个真正的选择。最后,我们第一个中的数据用例是用户生成的,需要尽快呈现给用户。”
Disney+ Hotstar:面向印度数百万板球迷的 Telco-OTT
在印度,人们喜欢板球。数以百万计的用户在他们的智能手机上观看直播。但他们不只是在看。相反,赌博也是故事的一部分。例如,您可以押注下一场比赛的结果。人们相互竞争,可以获得奖励。
这种基础设施必须以极大的规模运行。每秒必须处理数百万个动作。Disney+ Hotstar 选择 Kafka 作为这个基础设施的核心也就不足为奇了:
IoT 集成通常也是此类客户 360 度实施的一部分。用例包括:
- 现场电子竞技赛事、电视、视频流和新闻台
- 粉丝参与
- 观众交流
- Alexa、Google Home 或运动专用硬件的娱乐功能
跨公司 Kafka 集成
最后但并非最不重要的一点,让我们谈谈我在许多行业中看到的一个趋势:跨部门和公司的流式复制。
游戏行业的大多数公司都将事件流与 Kafka 一起用作其业务的核心。但是,与外部世界(即其他部门、合作伙伴、第三方服务)的连接通常是通过 HTTP/REST API 完成的。一个不可扩展的完全反模式!为什么不直接流式传输数据?
我看到越来越多的公司转向这种方法。
API 管理本身就是一个详细的讨论。因此,我有一篇关于Kafka 和 API Management 之间关系的专门博客文章。
幻灯片和视频:游戏行业中的 Kafka
以下是更详细地讨论游戏行业中 Apache Kafka 的幻灯片和点播视频: