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