此博客文章探讨了使用 Apache Kafka 进行事件流的事件如何提供可扩展、可靠和高效的基础架构,使游戏玩家快乐且游戏公司取得成功。讨论了游戏行业的各种用例和体系结构,包括在线和手机游戏、博彩、赌博和视频流。
了解:
- 游戏遥测的实时分析和数据相关性
- 用于实时广告和应用内购买的货币化网络
- 投注支付引擎
- 发现金融欺诈和欺骗
- 游戏和跨游戏中的聊天功能
- 监控实时操作的结果,如周末活动或限时优惠
- 针对营销活动的元数据和聊天数据的实时分析
游戏产业的演变
游戏行业必须每天实时处理数十亿个事件,并确保在游戏交互和后端分析之间进行一致可靠的数据处理和关联。部署必须在全球范围内运行,并且每年 365 天每天 24 小时为数百万用户工作。
这些要求适用于铁杆游戏和大片,包括大型多人在线角色扮演游戏 (MMORPG)、第一人称射击游戏和多人在线战场 (MOBA),但也包括中芯和休闲游戏。与智能手机和游戏机等消费类设备进行可靠且可扩展的实时集成与与 Twitch 和博彩提供商等在线流媒体服务合作一样重要。
游戏行业的商业模式
游戏不再只是游戏。虽然,即使在游戏行业,玩游戏的选择多种多样,从游戏机和个人电脑到手机游戏,赌场游戏,在线游戏,和各种其他选项。除了游戏,人们还通过专业电子竞技,$$$锦标赛,实时视频流和实时投注参与。
这是一个疯狂的进化,不是吗?以下是当今游戏行业相关的一些商业模式:
- 硬件销售
- 游戏销售
- 免费玩 + 游戏内购买,如皮肤或冠军
- 赌博(抢劫箱)
- 游戏服务(订阅)
- 季节性游戏内购买,如主题活动通行证,赛季中期邀请赛和世界锦标赛,比赛通行证
- 游戏基础架构是一种服务
- 商品销售
- 社区包括电子竞技广播、门票销售、特许经营费
- 实时投注
- 视频流,包括广告、奖励等。
AI在游戏中的演变
人工智能 (业务规则、统计模型、机器学习、深度学习 ) 对于游戏中的许多用例至关重要kai-waehner.de/wp-内容/上传/2020/07/”AI”-游戏中的人工智能-1024×578.png”宽度=”1024″/=
我探索的许多用例将 AI 与事件流和 Kafka 结合使用,如下所示。
使用阿帕奇卡夫卡进行事件流的混合游戏架构
构建开放、灵活、可扩展的平台和实时处理的巨大需求是许多与游戏相关的项目使用 Apache Kafka 的原因。我不会在这里讨论卡夫卡, 假设你知道为什么卡夫卡成为事件流的实际标准。
更有趣的是我在野外看到的不同部署和架构。游戏行业的基础设施通常是全球性的。有时仅云,有时与本地本地安装混合。投注通常是区域性的(主要是因为法律和合规原因)。游戏通常是全球性的。如果游戏是优秀的,它被部署和推出到世界各地。
现在,让我们来看看游戏行业的几个不同的用例和体系结构。这些示例大多数都涉及所有与游戏相关的用例,包括游戏、移动、博彩、赌博和视频流。
基础设施运营 – 实时监控和故障排除
监控实时操作的结果对于每个关键任务基础设施都至关重要。用例包括:
- 游戏客户端、游戏服务器、游戏服务
- 服务健康 24/7
- 特别活动,如周末锦标赛、限时优惠和用户获取活动
立即和正确的故障排除需要实时监控。您需要能够回答”谁制造了问题?客户?Isp?游戏本身?
让我们看一下游戏行业的典型示例:一种新的营销活动:
- “周末免费玩”
- 可扩展性 – 大量额外流量
- 监控 – 营销活动成功吗?游戏/业务的利润如何?
- 实时(例如警报)
- 批处理(例如,使用雪花分析和报告成功)
必须集成、关联和监视大量不同的数据,以保持基础结构的运行并解决问题您不能只预配一些硬件、部署软件,并且一年 365 天 24 小时运行它。游戏基础设施需要弹性。无论您关心在线游戏、博彩还是视频流。
Epic Games 平台总监 Chris Dyl 在2018 年 AWS峰会上很好地指出了这一点:”我们在峰值和低峰值之间的工作负载差异几乎是十倍。弹性对于我们在任何特定地区的云提供商来说非常重要”。
无论事件流平台在边缘运行,还是完全在云中管理,汇流都为任何 Kafka 部署提供弹性。查看”在汇流云中将 Apache Kafka 缩放到 10+ GB/秒”,了解如何在云中自动缩放 Kafka。自我管理的 Kafka 通过使用 Kubernetes 的自平衡 Kafka、分层存储和汇流运算符等工具获得弹性。
游戏遥测 – 与卡夫卡的实时分析和数据关联
游戏遥测描述玩家如何玩游戏。玩家信息包括业务逻辑,如用户操作(按钮单击、拍摄、使用项目)或游戏环境指标(任务、升级),以及技术信息(如从特定服务器登录、IP 地址、位置)。
全球游戏需要全球的代理来保证数百万客户的区域延迟。此外,中央分析群集(包含匿名数据)将来自全球的数据关联。以下是使用游戏遥测的一些用例:
- 游戏监控
- 玩家在游戏中的进步情况以及出现了哪些问题
- 实时操作 » 调整游戏
- 玩家玩游戏时服务器端会发生变化(例如,限时活动,给予奖励)
- 实时更新,以改善游戏或符合观众需求(换句话说:推荐项目 / 升级 / 皮肤 / 额外的游戏内购买
大多数用例都需要实时处理大数据流:
大鱼游戏
大鱼游戏是利用阿帕奇卡夫卡及其生态系统进行现场操作的一个很好的例子。他们开发休闲和中芯游戏。在 150 个国家/地区安装了 25 亿款游戏,代表 450 多个独特的移动游戏和 3,500 多款独特的 PC 游戏。
实时操作使用游戏遥测数据的实时分析。例如,大鱼游戏通过实时为游戏内购买做出特定于上下文的建议,增加收入,而玩家则玩游戏
看看卡夫卡峰会讨论的细节 “大鱼游戏如何开发实时分析” 。
货币化网络
货币化网络是大多数游戏公司的基本组成部分。用例包括:
- 游戏广告
- 微交易和游戏内购买 :出售皮肤, 升级到一个新的水平…
- 游戏基础设施服务:多平台和商店集成,牵线搭桥,广告,玩家身份和朋友,交叉游戏,大堂,排行榜,成就,游戏分析,…
- 合作伙伴网络: 交叉销售游戏数据, 游戏 SDK, 游戏分析,…
货币化网络如下所示:
统一广告 – 货币化网络
团结是一个绝妙的例子。2019 年,内容安装量达到 330 亿次,全球设备达到 30 亿台。该公司提供实时3D开发平台。
Unity 运营着世界上最大的货币化网络之一:
- 奖励观看广告的玩家
- 合并横幅广告
- 合并增强现实 (AR) 广告
- 可播放广告
- 交叉促销
Unity 是一家数据驱动型公司:
- 平均约50万次/秒的事件
- 处理数百万美元的货币交易
- 基于汇流平台、汇流云和 Apache Kafka 的数据基础架构
单个数据管道利用 Apache Kafka 为分析、研发、货币化、云服务等提供基础基础设施,用于实时和批处理:
- 实时货币化网络
- 实时馈送机器学习模型
- 数据湖从两天的延迟到 15 分钟
如果您想了解他们的成功故事,将此平台从自我管理的 Kafka 迁移到完全管理的汇流云,请阅读 Unity 在汇流博客上的帖子:”Unity 如何使用汇流进行实时事件流规模“聊天意味着发送文本、游戏中的屏幕截图、游戏中的项目和其他内容。数百万事件必须实时处理。跨平台聊天平台需要支持各种技术、编程语言和通信模式,如实时、批处理、请求-响应:
Kafka 的特点使其具有高可扩展性、实时处理和真正的分离(包括背压处理)而成为聊天平台的完美基础设施。
支付引擎
支付基础设施需要具有实时性、可扩展性、可靠性和技术独立性。无论您的解决方案是为游戏、博彩、赌场、3D 游戏引擎、视频流或任何其他第三服务构建的。
大多数支付引擎在游戏行业是建立在阿帕奇卡夫卡之上。其中许多公司提供有关其实时投注基础设施的公共信息。下面是一个体系结构的示例:
一个示例用例是实时投注中投注延迟和审批系统的实现。需要有状态的流式分析才能提高利润:
Kafka 本机技术(如 Kafka 流或 ksqlDB)能够直接实现这些方案。
威廉希尔 – 安全可靠的实时微服务架构
William Hill 从一个整体到灵活、可扩展的微服务架构:
- 卡夫卡作为中央、可靠的流媒体基础设施
- 用于消息传递、存储、缓存和处理数据的 Kafka
- 独立分离的微服务
- 分离和可重播性
- 技术独立性
- 高吞吐量 + 低延迟 + 实时
威廉希尔的交易平台利用卡夫卡作为所有事件和交易的核心:
- “流程到流程”实时执行
- 与分析模型集成,实现实时机器学习
- 各种数据源和数据接收器(实时、批处理、请求-响应)
博彩公司业务 + 银行业务(包括旧式中间件和大型机)
不是每个人都可以从绿地开始。传统的中间件和大型机集成、卸载和更换是常见方案。
博彩通常是一个受监管的市场。PII 数据经常在区域数据中心内部处理。非 PII 数据可以卸载到云中进行分析。
大型机等传统技术是一个关键的成本因素,是单一的和不灵活的。我在以下帖子中详细介绍了卡夫卡和大型机之间的关系:
这里是关于卡夫卡与传统中间件的故事(MQ,ETL,EBS)。
用于保留、合规性和客户体验的流式分析
数据质量对于法律合规至关重要。负责任的游戏合规性。客户保留对于保持参与度和收入增长至关重要。
此环境中存在大量实时流分析用例。Kafka 本机框架(如 Kafka 流或 ksqlDB)可以为可靠且可扩展的解决方案提供基础:
- 球员获胜/连败
- 玩家转换 – 从注册到工资(在 x 分钟内)
- 玩家的游戏成就
- 欺诈检测 – 例如,付款窗口
- 每个玩家在数天/月中长时间运行窗口
- 比赛
- 奖励不满意的球员与额外的免费信用
- 向监管机构报告 – 以保证顺序重播旧事件
- 地理位置,以启用功能、限制或佣金
流处理还与其他许多其他用例(包括欺诈检测)相关,如下一节中所述。
与卡夫卡游戏中的欺诈检测
在任何支付基础架构中,用于检测异常的实时分析都是一种普遍的情况。在游戏中,存在两种不同类型的欺诈行为:
- 作弊: 假帐户, 机器人, …
- 金融欺诈: 操纵比赛, 被盗信用卡, …
下面是使用 Kafka 及其生态系统和机器学习进行欺诈检测的流分析示例:
下面是使用Jupyter笔记本和 Python 检测财务欺诈和作弊的示例,用于分析使用 ksqlDB 预处理的数据: