python大数据分析游戏行业中的 Apache Kafka:用例 + 架构!

python大数据分析游戏行业中的 Apache Kafka:用例 + 架构!

这篇博文探讨了使用 Apache Kafka 的事件流如何提供可扩展、可靠且高效的基础设施,让游戏玩家开心并让游戏公司取得成功。讨论了游戏行业中的各种用例和架构,包括在线和移动游戏、博彩、赌博和视频流。

学习关于:

  • 游戏遥测的实时分析和数据关联
  • 实时广告和应用内购买的货币化网络
  • 投注支付引擎
  • 检测财务欺诈和欺诈
  • 游戏和跨游戏中的聊天功能
  • 监控实时操作的结果,例如周末活动或限时优惠
  • 对营销活动的元数据和聊天数据进行实时分析

博彩业的演变

游戏行业必须每天实时处理数十亿个事件,并确保跨游戏交互和后端分析进行一致可靠的数据处理和关联。部署必须在全球范围内运行,并为数百万用户一年 365 天 24/7 工作。

这些要求适用于硬核游戏和大片,包括大型多人在线角色扮演游戏 (MMORPG)、第一人称射击游戏和多人在线战斗竞技场 (MOBA),以及中核和休闲游戏。与智能手机和游戏机等消费设备的可靠且可扩展的实时集成与与 Twitch 等在线流媒体服务和博彩提供商合作一样重要。

博彩业的演变

博彩业的商业模式

游戏不再只是游戏。尽管如此,即使在游戏行业,玩游戏的选择也是多种多样的,从游戏机和 PC 到手机游戏、赌场游戏、在线游戏和各种其他选择。除了游戏之外,人们还通过专业电子竞技、$$$ 锦标赛、实时视频流和实时投注进行参与。 

这是一个疯狂的进化,不是吗?以下是当今与游戏行业相关的一些商业模式:

  • 硬件销售
  • 游戏销售
  • 免费游戏和游戏内购买,例如皮肤或冠军
  • 赌博(战利品箱)
  • 游戏即服务(订阅)
  • 季节性游戏内购买,例如主题活动的通行证、季中邀请赛和世界锦标赛、竞技比赛的通行证
  • 游戏基础设施即服务
  • 商品销售
  • 社区包括电子竞技转播、门票销售、特许经营费
  • 滚球投注
  • 视频流,包括广告、奖励等。

游戏中人工智能的演变

人工智能(业务规则、统计模型、机器学习、深度学习)对于游戏中的许多用例至关重要。这些用例包括:

  • 游戏内 AI:不可玩角色 (NPC)、环境、功能
  • 欺诈检测:作弊、金融欺诈、虐待儿童
  • 游戏分析:保留、游戏变化(实时交付或通过下一个补丁/更新)
  • 研究:寻找新算法,改进人工智能,适应业务问题

游戏中人工智能的演变

在下文中,我探索的许多用例都将 AI 与事件流和 Kafka 结合使用。

使用 Apache Kafka 进行事件流的混合游戏架构

对构建开放、灵活、可扩展的平台和实时处理的巨大需求是众多游戏相关项目使用 Apache Kafka 的原因。我不会在这里讨论 Kafka 并且假设您知道为什么 Kafka 成为事件流的事实上的标准。

更有趣的是我在野外看到的不同部署和架构。游戏行业的基础设施通常是全球性的——有时仅限云,有时与本地本地安装混合。投注通常是区域性的(主要是因为法律和合规性原因)。 游戏通常是全球性的。如果一款游戏非常出色,它就会在全球范围内部署和推广。

使用 Apache 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 需要世界各地的代理来保证数百万客户端的区域延迟。此外,中央分析集群(具有匿名数据)关联来自全球的数据。以下是使用游戏遥测的一些用例:

  • 游戏监控
  • 玩家在游戏中的进展情况以及发生了什么问题
  • 直播操作——调整玩法 
  • 玩家在玩游戏时服务器端的变化(例如,限时活动,给予奖励)
  • 实时更新以改进游戏或满足观众需求(或换句话说:推荐物品/升级/皮肤/额外的游戏内购买)

大多数用例需要实时处理大数据流:

游戏遥测:与 Kafka 的实时分析和数据关联

大鱼游戏

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 的幻灯片和点播视频:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++初阶篇----类与对象中卷

目录 引言1. 构造函数1.1概念1.2 特性 2. 析构函数2.1 概念2.2 特性 3. 拷贝构造函数3.1 概念3.2特征 4. 赋值运算符重载4.1 运算符重载4.2 赋值运算符重载4.3 前置和后置重载 5.日期类的实现6.const成员7.取地址及const取地址操作符重载 引言 当一个类既没有成员变量又没有成…

汉诺塔问题(C语言)

一:问题 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从…

QVector和QString互相转换

我的画图项目需要读写自定义虚线样式 {...comboBox_penStyle new QComboBox;QStringList SL_penStyle;SL_penStyle << "______" << "----------" << ".........." << "-.-.-.-.-." << "-..-..-..…

【OJ】日期差值与日期累加

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. KY111 日期差值1.1 题目分析1.2 代码 2. KY258 日期累加2.1 题目分析2.2 代码 1. KY111 日期差值 1.1 题目分析 日期之间比较可能会出现给的两个年月日都不相同&#xff0c;这个就不好作差&#xff0c;每个月给的…

LeetCode每日一题 二叉树的最大深度(二叉树)

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,nul…

前端知识点、技巧、webpack、性能优化(持续更新~)

1、 请求太多 页面加载慢 &#xff08;webpack性能优化&#xff09; 可以把 图片转换成 base64 放在src里面 减少服务器请求 但是图片会稍微大一点点 以上的方法不需要一个一个自己转化 可以在webpack 进行 性能优化 &#xff08;官网有详细描述&#xff09;

【详识C语言】自定义类型之一:结构体

本文重点 结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段&#xff08;位段的填充&可移植性&#xff09; 结构体 结构体的声明 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个…

在 SpringBoot3 中使用 Mybatis-Plus 报错

在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…

Vue中有哪些优化性能的方法?

Vue是一款流行的JavaScript框架&#xff0c;用于构建交互性强的Web应用程序。在前端开发中&#xff0c;性能优化是一个至关重要的方面&#xff0c;尤其是当应用程序规模变大时。Vue提供了许多优化性能的方法&#xff0c;可以帮助开发人员提升应用程序的性能&#xff0c;从而提升…

鸿蒙NEXT开发实战:【网络管理-数据请求】

概述 本示例仿postman输入API接口地址&#xff0c;获取相应数据&#xff0c;介绍数据请求接口的用法。 样例展示 基础信息 Http 介绍 本示例通过[ohos.net.http]等接口&#xff0c;实现了根据URL地址和相关配置项发起http请求的功能。 效果预览 首页结果页 使用说明 1.…

重学SpringBoot3-yaml文件配置

重学SpringBoot3-yaml文件配置 引言YAML 基本语法YAML 数据类型YAML 对象YAML 数组复合结构标量引用 YAML 文件结构Spring Boot 中的 YAML 配置注意事项总结参考 引言 YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种常用于配置文件的数据序列化格式&#xff…

Docker 部署Harbor 443端口冲突

如果Harbor的443端口和主机服务器的443端口存在冲突,那么需要修改Harbor的443 修改docker-compose中443端口,那么需要docker-compose.yml和harbor.yml保持一致配置 当修改harbor.yml重启之后不生效的,则需要进入harbor安装路径 执行 ./install.sh 命令 harbor.yml docker-…

5G智能制造食品工厂数字孪生可视化平台,推进食品行业数字化转型

5G智能制造食品工厂数字孪生可视化平台&#xff0c;推进食品行业数字化转型。随着科技的飞速发展&#xff0c;食品工业正迎来一场前所未有的数字化转型。在这场转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。它不仅提高了生产效率&#xff0c;降低…

论文笔记:Compact Multi-Party Confidential Transactions

https://link.springer.com/chapter/10.1007/978-3-030-65411-5_21 A compact, private, Multi-Party Confidential Transactions (MCT) 紧凑型多方机密交易&#xff08;Compact MCT&#xff09;&#xff1a;MCT的长度与常规的单一所有者交易一样短&#xff1b;换句话说&…

前端面试知识点合集(持续性更新)

原型和原型链 任何函数都可以作为构造函数。当该函数通过 new 关键字调用的时候&#xff0c;就称之为构造函数。 var Parent function(){}//定义一个函数&#xff0c;那它只是一个普通的函数&#xff0c;不能称它为构造函数var instance new Parent(); //这时这个Parent就不…

使用vscode前面几行被定住

当我们使用 vscode 滚动代码文档的时候&#xff0c;发现前面几行被定住了&#xff0c;想 css 的 sticky 一样&#xff0c;可能是之前我们不小心点到了这里&#xff0c;取消就好了

SoundTouch对音频处理(Android)

SoundTouch对音频处理&#xff08;Android&#xff09; SoundTouch介绍 SoundTouch 是一个用于音频处理的开源库&#xff0c;主要用于改变音频的速度、音调和音量等特征。您可以在项目中使用 SoundTouch 库来实现音频处理的功能&#xff0c;比如变速播放、音高变化、混响效果…

2024年阿里云服务器配置选择指南_个人和企业如何选择ECS实例规格?

阿里云服务器配置怎么选择&#xff1f;CPU内存、公网带宽和系统盘怎么选择&#xff1f;个人开发者或中小企业选择轻量应用服务器、ECS经济型e实例&#xff0c;企业用户选择ECS通用算力型u1云服务器、ECS计算型c7、通用型g7云服务器&#xff0c;阿里云服务器网aliyunfuwuqi.com整…

亿发生产管控新篇章:mes系统专业推进,引领广州制造厂家数智转型

信息技术在企业发展中扮演着至关重要的角色。然而&#xff0c;随着生产组织方式向多品种、小批量转变&#xff0c;订单不断调整&#xff0c;制定计划需要根据市场和实际作业执行状态&#xff0c;不能仅仅依赖于物料和库存来控制生产。传统的生产现场管理已无法满足当今竞争激烈…

学习计算天数

学习计算天数 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果&#xff1a; 题目描述&#xff1a; 输入y和m两个整数&#xff0c;y表示年份&#xff0c;m表示月份&#xff0c;计算y年m月有多少天&#xff0c;并输出天数。 测试1&#xff1a; 输⼊&…