這篇博文探討了使用 Apache Kafka 的事件流如何提供可擴(kuò)展、可靠且高效的基礎(chǔ)設(shè)施,讓游戲玩家開(kāi)心并讓游戲公司取得成功。討論了游戲行業(yè)中的各種用例和架構(gòu),包括在線和移動(dòng)游戲、博彩、賭博和視頻流。
學(xué)習(xí)關(guān)于:
- 游戲遙測(cè)的實(shí)時(shí)分析和數(shù)據(jù)關(guān)聯(lián)
- 實(shí)時(shí)廣告和應(yīng)用內(nèi)購(gòu)買(mǎi)的貨幣化網(wǎng)絡(luò)
- 投注支付引擎
- 檢測(cè)財(cái)務(wù)欺詐和欺詐
- 游戲和跨游戲中的聊天功能
- 監(jiān)控實(shí)時(shí)操作的結(jié)果,例如周末活動(dòng)或限時(shí)優(yōu)惠
- 對(duì)營(yíng)銷(xiāo)活動(dòng)的元數(shù)據(jù)和聊天數(shù)據(jù)進(jìn)行實(shí)時(shí)分析
博彩業(yè)的演變
游戲行業(yè)必須每天實(shí)時(shí)處理數(shù)十億個(gè)事件,并確??缬螒蚪换ズ秃蠖朔治鲞M(jìn)行一致可靠的數(shù)據(jù)處理和關(guān)聯(lián)。部署必須在全球范圍內(nèi)運(yùn)行,并為數(shù)百萬(wàn)用戶一年 365 天 24/7 工作。
這些要求適用于硬核游戲和大片,包括大型多人在線角色扮演游戲 (MMORPG)、第一人稱(chēng)射擊游戲和多人在線戰(zhàn)斗競(jìng)技場(chǎng) (MOBA),以及中核和休閑游戲。與智能手機(jī)和游戲機(jī)等消費(fèi)設(shè)備的可靠且可擴(kuò)展的實(shí)時(shí)集成與與 Twitch 等在線流媒體服務(wù)和博彩提供商合作一樣重要。
博彩業(yè)的商業(yè)模式
游戲不再只是游戲。盡管如此,即使在游戲行業(yè),玩游戲的選擇也是多種多樣的,從游戲機(jī)和 PC 到手機(jī)游戲、賭場(chǎng)游戲、在線游戲和各種其他選擇。除了游戲之外,人們還通過(guò)專(zhuān)業(yè)電子競(jìng)技、$$$ 錦標(biāo)賽、實(shí)時(shí)視頻流和實(shí)時(shí)投注進(jìn)行參與。
這是一個(gè)瘋狂的進(jìn)化,不是嗎?以下是當(dāng)今與游戲行業(yè)相關(guān)的一些商業(yè)模式:
- 硬件銷(xiāo)售
- 游戲銷(xiāo)售
- 免費(fèi)游戲和游戲內(nèi)購(gòu)買(mǎi),例如皮膚或冠軍
- 賭博(戰(zhàn)利品箱)
- 游戲即服務(wù)(訂閱)
- 季節(jié)性游戲內(nèi)購(gòu)買(mǎi),例如主題活動(dòng)的通行證、季中邀請(qǐng)賽和世界錦標(biāo)賽、競(jìng)技比賽的通行證
- 游戲基礎(chǔ)設(shè)施即服務(wù)
- 商品銷(xiāo)售
- 社區(qū)包括電子競(jìng)技轉(zhuǎn)播、門(mén)票銷(xiāo)售、特許經(jīng)營(yíng)費(fèi)
- 滾球投注
- 視頻流,包括廣告、獎(jiǎng)勵(lì)等。
游戲中人工智能的演變
人工智能(業(yè)務(wù)規(guī)則、統(tǒng)計(jì)模型、機(jī)器學(xué)習(xí)、深度學(xué)習(xí))對(duì)于游戲中的許多用例至關(guān)重要。這些用例包括:
- 游戲內(nèi) AI:不可玩角色 (NPC)、環(huán)境、功能
- 欺詐檢測(cè):作弊、金融欺詐、虐待兒童
- 游戲分析:保留、游戲變化(實(shí)時(shí)交付或通過(guò)下一個(gè)補(bǔ)丁/更新)
- 研究:尋找新算法,改進(jìn)人工智能,適應(yīng)業(yè)務(wù)問(wèn)題
在下文中,我探索的許多用例都將 AI 與事件流和 Kafka 結(jié)合使用。
使用 Apache Kafka 進(jìn)行事件流的混合游戲架構(gòu)
對(duì)構(gòu)建開(kāi)放、靈活、可擴(kuò)展的平臺(tái)和實(shí)時(shí)處理的巨大需求是眾多游戲相關(guān)項(xiàng)目使用 Apache Kafka 的原因。我不會(huì)在這里討論 Kafka 并且假設(shè)您知道為什么 Kafka 成為事件流的事實(shí)上的標(biāo)準(zhǔn)。
更有趣的是我在野外看到的不同部署和架構(gòu)。游戲行業(yè)的基礎(chǔ)設(shè)施通常是全球性的——有時(shí)僅限云,有時(shí)與本地本地安裝混合。投注通常是區(qū)域性的(主要是因?yàn)榉珊秃弦?guī)性原因)。 游戲通常是全球性的。如果一款游戲非常出色,它就會(huì)在全球范圍內(nèi)部署和推廣。
現(xiàn)在讓我們來(lái)看看游戲行業(yè)中的幾個(gè)不同用例和架構(gòu)。這些示例中的大多數(shù)都與所有與游戲相關(guān)的用例相關(guān),包括游戲、移動(dòng)、博彩、賭博和視頻流。
基礎(chǔ)設(shè)施運(yùn)營(yíng):實(shí)時(shí)監(jiān)控和故障排除
監(jiān)控實(shí)時(shí)操作的結(jié)果對(duì)于每個(gè)關(guān)鍵任務(wù)基礎(chǔ)設(shè)施都是必不可少的。用例包括:
- 游戲客戶端、游戲服務(wù)器、游戲服務(wù)
- 服務(wù)健康 24/7
- 周末錦標(biāo)賽、限時(shí)優(yōu)惠和用戶獲取活動(dòng)等特殊活動(dòng)
立即和正確的故障排除需要實(shí)時(shí)監(jiān)控。您需要能夠回答諸如“誰(shuí)制造了問(wèn)題?客戶?ISP?游戲本身?”之類(lèi)的問(wèn)題。
我們來(lái)看一個(gè)游戲行業(yè)的典型例子——一個(gè)新的營(yíng)銷(xiāo)活動(dòng):
- “周末免費(fèi)玩”
- 可擴(kuò)展性——巨大的額外流量
- 監(jiān)控——營(yíng)銷(xiāo)活動(dòng)是否成功?游戲/業(yè)務(wù)的盈利能力如何?
- 實(shí)時(shí)(例如,警報(bào))
- 批處理(例如,Snowflake 的成功分析和報(bào)告)
必須集成、關(guān)聯(lián)和監(jiān)控大量不同的數(shù)據(jù),以保持基礎(chǔ)架構(gòu)運(yùn)行并解決問(wèn)題。
彈性是游戲行業(yè)成功的關(guān)鍵
基礎(chǔ)設(shè)施監(jiān)控的一個(gè)關(guān)鍵挑戰(zhàn)是所需的彈性。您不能僅僅提供一些硬件、部署軟件并一年 365 天 24 小時(shí)運(yùn)行它。游戲基礎(chǔ)設(shè)施需要彈性。無(wú)論您是關(guān)心在線游戲、投注還是視頻流。
Epic Games 平臺(tái)總監(jiān) Chris Dyl在 2018 年 AWS 峰會(huì)上 很好地指出了這一點(diǎn):“我們?cè)诟叻搴偷头逯g的工作負(fù)載差異幾乎是十倍。彈性對(duì)于我們?cè)谌魏翁囟ǖ貐^(qū)的任何特定區(qū)域都非常重要。云提供商。”
Confluent 為任何 Kafka 部署提供了彈性,無(wú)論事件流平臺(tái)是在邊緣自行管理還是在云中完全管理。查看“在 Confluent Cloud 中將 Apache Kafka 擴(kuò)展到每秒 10+ GB ”以了解如何在云中自動(dòng)擴(kuò)展 Kafka。 通過(guò)使用自平衡 Kafka、分層存儲(chǔ)和用于 Kubernetes 的 Confluent Operator 等工具,自我管理的 Kafka 變得具有彈性。
游戲遙測(cè):與 Kafka 的實(shí)時(shí)分析和數(shù)據(jù)關(guān)聯(lián)
游戲遙測(cè)描述了玩家如何玩游戲。玩家信息包括用戶操作(按鈕點(diǎn)擊、射擊、使用物品)或游戲環(huán)境指標(biāo)(任務(wù)、升級(jí))等業(yè)務(wù)邏輯,以及從特定服務(wù)器登錄、IP 地址、位置等技術(shù)信息。
Global Gaming 需要世界各地的代理來(lái)保證數(shù)百萬(wàn)客戶端的區(qū)域延遲。此外,中央分析集群(具有匿名數(shù)據(jù))關(guān)聯(lián)來(lái)自全球的數(shù)據(jù)。以下是使用游戲遙測(cè)的一些用例:
- 游戲監(jiān)控
- 玩家在游戲中的進(jìn)展情況以及發(fā)生了什么問(wèn)題
- 直播操作——調(diào)整玩法
- 玩家在玩游戲時(shí)服務(wù)器端的變化(例如,限時(shí)活動(dòng),給予獎(jiǎng)勵(lì))
- 實(shí)時(shí)更新以改進(jìn)游戲或滿足觀眾需求(或換句話說(shuō):推薦物品/升級(jí)/皮膚/額外的游戲內(nèi)購(gòu)買(mǎi))
大多數(shù)用例需要實(shí)時(shí)處理大數(shù)據(jù)流:
大魚(yú)游戲
Big Fish Games 是利用 Apache Kafka 及其生態(tài)系統(tǒng)進(jìn)行實(shí)時(shí)操作的一個(gè)很好的例子。他們開(kāi)發(fā)休閑和中核游戲。150 個(gè)國(guó)家的智能手機(jī)和電腦上安裝了 25 億個(gè)游戲,代表了 450 多個(gè)獨(dú)特的手機(jī)游戲和 3,500 多個(gè)獨(dú)特的 PC 游戲。
實(shí)時(shí)操作使用游戲遙測(cè)數(shù)據(jù)的實(shí)時(shí)分析。例如,Big Fish Games 通過(guò)實(shí)時(shí)為游戲內(nèi)購(gòu)買(mǎi)提供特定于上下文的建議,從而在玩家玩游戲時(shí)增加收入。Kafka Streams 用于大規(guī)模實(shí)時(shí)連續(xù)數(shù)據(jù)關(guān)聯(lián)。
查看 Kafka 峰會(huì)演講“ Big Fish Games 如何開(kāi)發(fā)實(shí)時(shí)分析 ”中的詳細(xì)信息。
貨幣化網(wǎng)絡(luò)
貨幣化網(wǎng)絡(luò)是大多數(shù)游戲公司的基本組成部分。用例包括:
- 游戲內(nèi)廣告
- 微交易和游戲內(nèi)購(gòu)買(mǎi):出售皮膚,升級(jí)到一個(gè)新的水平......
- 游戲基礎(chǔ)設(shè)施即服務(wù):多平臺(tái)和商店集成、匹配、廣告、玩家身份和朋友、交叉游戲、大廳、排行榜、成就、游戲分析等。
- 合作伙伴網(wǎng)絡(luò):交叉銷(xiāo)售游戲數(shù)據(jù)、游戲SDK、游戲分析等。
貨幣化網(wǎng)絡(luò)如下所示:
統(tǒng)一廣告
Unity 就是一個(gè)很好的例子。2019 年,內(nèi)容安裝量達(dá)到 330 億次,達(dá)到全球 30 億臺(tái)設(shè)備。公司提供實(shí)時(shí)3D開(kāi)發(fā)平臺(tái)。
Unity 運(yùn)營(yíng)著世界上最大的貨幣化網(wǎng)絡(luò)之一:
- 獎(jiǎng)勵(lì)觀看廣告的玩家
- 加入橫幅廣告
- 加入增強(qiáng)現(xiàn)實(shí) (AR) 廣告
- 可玩廣告
- 交叉促銷(xiāo)
Unity 是一家數(shù)據(jù)驅(qū)動(dòng)型公司:
- 平均每秒大約 50 萬(wàn)個(gè)事件
- 處理數(shù)百萬(wàn)美元的貨幣交易
- 基于 Confluent Platform、Confluent Cloud 和 Apache Kafka 的數(shù)據(jù)基礎(chǔ)設(shè)施
單個(gè)數(shù)據(jù)管道為分析、研發(fā)、貨幣化、云服務(wù)等提供了基礎(chǔ)架構(gòu),以利用 Apache Kafka 進(jìn)行實(shí)時(shí)和批處理:
- 實(shí)時(shí)貨幣化網(wǎng)絡(luò)
- 實(shí)時(shí)提供機(jī)器學(xué)習(xí)模型
- 數(shù)據(jù)湖從兩天的延遲縮短到 15 分鐘
如果您想了解他們將該平臺(tái)從自我管理的 Kafka 遷移到完全管理的 Confluent Cloud 的成功故事,請(qǐng)閱讀 Unity 在 Confluent 博客上的帖子:“ Unity 如何使用 Confluent 大規(guī)模實(shí)時(shí)事件流”。
游戲內(nèi)和跨平臺(tái)聊天功能
在當(dāng)今世界,構(gòu)建聊天平臺(tái)并非易事。聊天意味著發(fā)送文本、游戲內(nèi)截圖、游戲內(nèi)物品和其他東西。必須實(shí)時(shí)處理數(shù)百萬(wàn)個(gè)事件。跨平臺(tái)聊天平臺(tái)需要支持各種技術(shù)、編程語(yǔ)言和通信范式,例如實(shí)時(shí)、批處理、請(qǐng)求-響應(yīng):
Kafka 的特性使其成為聊天平臺(tái)的完美基礎(chǔ)架構(gòu),因?yàn)樗哂懈呖蓴U(kuò)展性、實(shí)時(shí)處理和真正解耦,包括背壓處理。
支付引擎
支付基礎(chǔ)設(shè)施需要實(shí)時(shí)、可擴(kuò)展、可靠且與技術(shù)無(wú)關(guān)。無(wú)論您的解決方案是為游戲、博彩、娛樂(lè)場(chǎng)、3D 游戲引擎、視頻流還是任何其他第三方服務(wù)而構(gòu)建。
游戲行業(yè)的大多數(shù)支付引擎都建立在 Apache Kafka 之上。其中許多公司提供有關(guān)其實(shí)時(shí)博彩基礎(chǔ)設(shè)施的公開(kāi)信息。這是架構(gòu)的一個(gè)示例:
一個(gè)示例用例是在現(xiàn)場(chǎng)投注中實(shí)施投注延遲和批準(zhǔn)系統(tǒng)。需要有狀態(tài)的流分析來(lái)提高利潤(rùn):
Kafka 原生技術(shù),如 Kafka Streams 或 ksqlDB,可以直接實(shí)現(xiàn)這些場(chǎng)景。
William Hill:安全可靠的實(shí)時(shí)微服務(wù)架構(gòu)
William Hill 從單體架構(gòu)轉(zhuǎn)變?yōu)殪`活、可擴(kuò)展的微服務(wù)架構(gòu) :
- Kafka 作為中央、可靠的流媒體基礎(chǔ)設(shè)施
- Kafka 用于數(shù)據(jù)的消息傳遞、存儲(chǔ)、緩存和處理
- 獨(dú)立解耦的微服務(wù)
- 解耦和可重放性
- 技術(shù)獨(dú)立
- 高吞吐量+低延遲+實(shí)時(shí)
William Hill 的交易平臺(tái)利用 Kafka 作為所有事件和交易的核心:
- 實(shí)時(shí)“流程到流程”執(zhí)行
- 與實(shí)時(shí)機(jī)器學(xué)習(xí)的分析模型集成
- 各種數(shù)據(jù)源和數(shù)據(jù)接收器(實(shí)時(shí)、批處理、請(qǐng)求-響應(yīng))
博彩公司業(yè)務(wù)等同于銀行業(yè)務(wù)(包括傳統(tǒng)中間件和大型機(jī))
不是每個(gè)人都可以從綠地開(kāi)始。遺留中間件和大型機(jī)的集成、卸載和替換是一個(gè)常見(jiàn)的場(chǎng)景。
博彩通常是一個(gè)受監(jiān)管的市場(chǎng)。PII 數(shù)據(jù)通常在區(qū)域數(shù)據(jù)中心內(nèi)部處理。非 PII 數(shù)據(jù)可以卸載到云中進(jìn)行分析。
大型機(jī)等傳統(tǒng)技術(shù)是一個(gè)關(guān)鍵的成本因素,單一且不靈活。我在另一篇文章中詳細(xì)介紹了 Kafka 和大型機(jī)之間的關(guān)系 。
這是關(guān)于Kafka 與傳統(tǒng)中間件(MQ、ETL、EBS) 的故事。
用于保留、合規(guī)性和客戶體驗(yàn)的流分析
數(shù)據(jù)質(zhì)量對(duì)于法律合規(guī)性和負(fù)責(zé)任的游戲合規(guī)性至關(guān)重要。客戶保留對(duì)于保持參與度和收入增長(zhǎng)至關(guān)重要。
這種環(huán)境中存在大量實(shí)時(shí)流分析用例。Kafka 原生框架(如 Kafka Streams 或 ksqlDB)可以為可靠且可擴(kuò)展的解決方案提供基礎(chǔ)的一些示例是:
- 球員連續(xù)輸/輸
- 球員轉(zhuǎn)化——從注冊(cè)到工資(在 x 分鐘內(nèi))
- 玩家的游戲成就
- 欺詐檢測(cè)——例如,支付窗口
- 每個(gè)玩家數(shù)天/數(shù)月的長(zhǎng)時(shí)間運(yùn)行窗口
- 錦標(biāo)賽
- 用額外的免費(fèi)積分獎(jiǎng)勵(lì)不滿意的玩家
- 向監(jiān)管機(jī)構(gòu)報(bào)告——以有保證的順序重播舊事件
- 地理定位以啟用功能、限制或傭金
流處理也與許多其他用例相關(guān),包括欺詐檢測(cè),您將在下一節(jié)中看到。
Kafka 游戲中的欺詐檢測(cè)
用于檢測(cè)異常的實(shí)時(shí)分析是任何支付基礎(chǔ)設(shè)施中的普遍場(chǎng)景。在游戲中,存在兩種不同類(lèi)型的欺詐:
- 作弊:假賬戶、機(jī)器人等。
- 金融欺詐:比賽造假、信用卡被盜等。
以下是使用 Kafka、其生態(tài)系統(tǒng)和機(jī)器學(xué)習(xí)對(duì)欺詐檢測(cè)進(jìn)行流式分析的示例:
下面是一個(gè)使用 Jupyter notebooks 和 Python 檢測(cè)金融欺詐和作弊的示例,以分析使用 ksqlDB 預(yù)處理的數(shù)據(jù):
客戶 360:推薦、忠誠(chéng)度系統(tǒng)、社會(huì)融合
Customer 360 對(duì)于實(shí)時(shí)和特定于上下文的獲取、參與和保留至關(guān)重要。用例包括:
- 實(shí)時(shí)事件流
- 游戲事件觸發(fā)
- 個(gè)性化的統(tǒng)計(jì)數(shù)據(jù)和賠率
- 玩家細(xì)分
- 戰(zhàn)役編排(“玩家旅程”)
- 忠誠(chéng)度系統(tǒng)
- 獎(jiǎng)勵(lì)(例如,升級(jí)、獨(dú)家游戲內(nèi)容、公告事件的測(cè)試密鑰)
- 避免客戶流失
- 交叉銷(xiāo)售
- 社交網(wǎng)絡(luò)整合
- Twitter、Facebook 和其他社交媒體網(wǎng)站
- 示例:Candy Crush(我猜每個(gè) Facebook 用戶都看過(guò)這款游戲的廣告)
- 合作伙伴整合
- API 管理
以下架構(gòu)描述了客戶 360 解決方案的各種內(nèi)部和外部組件之間的關(guān)系:
Sky Betting 和 Gaming 的 Customer 360
Sky Betting and Gaming使用 Kafka 的生態(tài)系統(tǒng)為客戶 360 用例構(gòu)建了實(shí)時(shí)流媒體架構(gòu)
。
在討論他們?yōu)槭裁催x擇 Kafka 原生框架(如 Kafka Streams)而不是 Hadoop、Spark、Storm 等技術(shù)動(dòng)物園時(shí),Kaerast 表示:
“我們的大部分流數(shù)據(jù)都是 Kafka 集群上的主題形式。這意味著我們可以使用圍繞 Kafka 設(shè)計(jì)的工具,而不是帶有 Kafka 插件/連接器的通用流解決方案。
“Kafka 本身是一個(gè)快速移動(dòng)的目標(biāo),客戶端庫(kù)不斷更新;等待這些新庫(kù)包含在 Hadoop 的企業(yè)發(fā)行版或任何現(xiàn)成的工具中并不是一個(gè)真正的選擇。最后,我們第一個(gè)中的數(shù)據(jù)用例是用戶生成的,需要盡快呈現(xiàn)給用戶?!?/font>
Disney+ Hotstar:面向印度數(shù)百萬(wàn)板球迷的 Telco-OTT
在印度,人們喜歡板球。數(shù)以百萬(wàn)計(jì)的用戶在他們的智能手機(jī)上觀看直播。但他們不只是在看。相反,賭博也是故事的一部分。 例如,您可以押注下一場(chǎng)比賽的結(jié)果。人們相互競(jìng)爭(zhēng),可以獲得獎(jiǎng)勵(lì)。
這種基礎(chǔ)設(shè)施必須以極大的規(guī)模運(yùn)行。每秒必須處理數(shù)百萬(wàn)個(gè)動(dòng)作。Disney+ Hotstar 選擇 Kafka 作為這個(gè)基礎(chǔ)設(shè)施的核心也就不足為奇了:
IoT 集成通常也是此類(lèi)客戶 360 度實(shí)施的一部分。用例包括:
- 現(xiàn)場(chǎng)電子競(jìng)技賽事、電視、視頻流和新聞臺(tái)
- 粉絲參與
- 觀眾交流
- Alexa、Google Home 或運(yùn)動(dòng)專(zhuān)用硬件的娛樂(lè)功能
跨公司 Kafka 集成
最后但并非最不重要的一點(diǎn),讓我們談?wù)勎以谠S多行業(yè)中看到的一個(gè)趨勢(shì):跨部門(mén)和公司的流式復(fù)制。
游戲行業(yè)的大多數(shù)公司都將事件流與 Kafka 一起用作其業(yè)務(wù)的核心。但是,與外部世界(即其他部門(mén)、合作伙伴、第三方服務(wù))的連接通常是通過(guò) HTTP/REST API 完成的。一個(gè)不可擴(kuò)展的完全反模式! 為什么不直接流式傳輸數(shù)據(jù)?
我看到越來(lái)越多的公司轉(zhuǎn)向這種方法。
API 管理本身就是一個(gè)詳細(xì)的討論。因此,我有一篇關(guān)于Kafka 和 API Management 之間關(guān)系的專(zhuān)門(mén)博客文章 。
幻燈片和視頻:游戲行業(yè)中的 Kafka
以下是更詳細(xì)地討論游戲行業(yè)中 Apache Kafka 的幻燈片和點(diǎn)播視頻:
點(diǎn)播視頻可以在這里 觀看。
正如您在這篇文章中了解到的,Kafka 在游戲行業(yè)中無(wú)處不在。無(wú)論您是專(zhuān)注于游戲、投注還是視頻流。