《林佳-網易游戲基于Flink的支付環境全關聯分析實踐.pdf》由會員分享,可在線閱讀,更多相關《林佳-網易游戲基于Flink的支付環境全關聯分析實踐.pdf(75頁珍藏版)》請在三個皮匠報告上搜索。
1、林佳/網易互娛技術中心計費實時業務技術負責人Apache Flink Contributor網易游戲基于網易游戲基于FlinkFlink的支付環境全關聯分析實踐的支付環境全關聯分析實踐Practice of Analyzing Heterogeneous Data From Pay Environment based on Flink in NetEase Game基礎設施&數據業務游戲游戲氪金!#1#1從一次從一次APPAPP內購買支付聊起內購買支付聊起一次一次AppApp內購買內購買客戶端渠道計費中心游戲服一次一次AppApp內購買內購買客戶端渠道計費中心游戲服一次一次AppApp內購買內
2、購買客戶端渠道計費中心游戲服一次一次AppApp內購買內購買客戶端渠道計費中心游戲服一次一次AppApp內購買內購買客戶端渠道計費中心游戲服來源、結構、時間步調都不一樣!一次一次AppApp內購買內購買客戶端渠道計費中心游戲服網關網關日志數據庫運行時指標日志數據庫運行時指標支付數據特性支付數據特性數據持續而大量產生數據與數據間存在會話關聯關系數據來源的異構數據結構的異構數據時間步調的不一致原有的體系下的解決方法原有的體系下的解決方法數據持續而大量產生數據與數據間存在會話關聯關系數據來源的異構數據結構的異構數據時間步調的不一致ELK體系持續采集T+1 全量離線分析網盤同步/rsync/接口推送/
3、多以業務特制腳本處理各種數據的ETLT+1 Spark離線處理原有的體系下的問題原有的體系下的問題技術使用資源方式粗糙離線任務資源常擠兌或空置組件繁多技術棧割裂定制代碼多公共邏輯復用度低下時效性低問題暴露與處理被動作業配置方式各不相同業務資源原有的體系下的問題原有的體系下的問題代碼能效較低數據與人力能效較低機器資源能效較低技術使用資源方式粗糙離線任務資源常擠兌或空置組件繁多技術棧割裂定制代碼多公共邏輯復用度低下時效性低問題暴露與處理被動作業配置方式各不相同業務資源離線計算的資源能效離線計算的資源能效07.51522.53037.512:0015:0018:0021:0024:0003:0006
4、:0009:00機器數量空閑機器占用機器處理數據處理數據:最少機器數量最少機器數量:結果結果交付交付9 9時時近近100T100T3030如果可以實時如果可以實時07.51522.53037.512:0015:0018:0021:0024:0003:0006:0009:00機器數量空閑機器占用機器最少機器數量最少機器數量:結果交結果交付付實時實時5 5處理數據處理數據:近近100T100T用更少的資源算更多的數據能更早的交付如何實時化以提升能效?Flink選擇Flink數據持續而大量產生數據與數據間存在會話關聯關系數據來源的異構數據結構的異構數據時間步調的不一致高效率實時消費處理窗口計算豐富的
5、已有連接器、易于自定義的接口豐富的API進行便捷轉化業務事件時間+延遲處理+水位機制調研結論調研結論#2 2實時實時SDKSDK與平臺化的雙線發展與平臺化的雙線發展實時業務架構的雙線發展實時業務架構的雙線發展JFlink實時業務架構的雙線發展實時業務架構的雙線發展可用 作業配置化 統一非結構化數據處理引擎 JavaScript Embedded RDB Source/Sink,ES Source,gRPC Sink 實用 RDB Async Join/Redis Join etc.動態配置和動態流控 異構數據和異構時間步調Join 對通數據地圖,統一異構數據訪問 愛用 全異構數據即席查詢 配置
6、 from Flink SQL 大批數據計算效率對齊已有離線方式 可用 基于YARN的Flink Cluster作業管理 作業配置的版本化管理 統一非結構化數據描述界面和配置生成器 運行日志和指標查詢 實用 全面K8S獨立集群化、多租戶支持 基于K8S的作業精細化資源調配 作業全生命周期管理 風險分析與監控 愛用 交互式全異構數據SQL即席查詢 交互式數據血緣 交互式復雜關聯作業配置 運維平臺化開發SDK化201720172018201820192019202020202021202120222022SDKSDK讓每一個實時作業都基于相同的配置語義SDKSDK模塊化+配置化封裝內置或拓展的Co
7、nnector封裝異構數據轉化為SDK統一處理語義的流轉對象封裝各種處理流轉對象的函數提供一個統一的配置文法,以注入這些封裝模塊的配置,并構成DAGSDKSDK與配置文法與配置文法模塊化+配置化【從哪來、到哪去】封裝內置或拓展的Connector【是什么】封裝異構數據轉化為SDK統一處理語義的流轉對象【怎么變化】封裝各種處理流轉對象的函數提供一個統一的配置文法,以注入這些封裝模塊的配置,并構成DAGConnector(Source)UDF1UDF2Connector(Sink)RoamMessageSDKSDK與配置文法與配置文法SDKSDK與配置文法與配置文法KafkaSourceWindo
8、wAggregate UDFTiDBSinkJsonViewMessageJsonViewMessageSDKSDK與配置文法與配置文法KafkaSourceWindowAggregate UDFTiDBSinkJsonViewMessageJsonViewMessageSDKSDK與配置文法與配置文法即便DAG復雜如斯,亦是通過配置文法生成讓代碼模塊復用成為日常功能模塊化功能模塊化讓每個人理解每一個作業作業配置化作業配置化讓異構數據能為每種模塊處理數據視圖化數據視圖化讓歷史離線作業過渡上Flink流批一體化流批一體化SDKSDK與配置文法與配置文法一站式平臺化一站式平臺化JFlink Web
9、配置與調度中心數據地圖日志中心監控中心JFlink Service NodesJFlink Jar RepositoryFlink on KubernetesJFlink-SDKBusinessJarsFlink JM PodFlink TM PodsFlinkMini ClusterNamespacesK8S組件NEXUSZooKeeperKubernetesHDFS一站式平臺化一站式平臺化JFlink Web配置與調度中心數據地圖日志中心監控中心JFlink Service NodesJFlink Jar RepositoryFlink on KubernetesJFlink-SDKBus
10、inessJarsFlink JM PodFlink TM PodsFlinkMini ClusterNamespacesK8S組件NEXUSZooKeeperKubernetesHDFS一站式平臺化一站式平臺化JFlink Web配置與調度中心數據地圖日志中心監控中心JFlink Service NodesJFlink Jar RepositoryFlink on KubernetesJFlink-SDKBusinessJarsFlink JM PodFlink TM PodsFlinkMini ClusterNamespacesK8S組件NEXUSZooKeeperKubernetesHD
11、FS一站式平臺化一站式平臺化JFlink Web配置與調度中心數據地圖日志中心監控中心JFlink Service NodesJFlink Jar RepositoryFlink on KubernetesJFlink-SDKBusinessJarsFlink JM PodFlink TM PodsFlinkMini ClusterNamespacesK8S組件NEXUSZooKeeperKubernetesHDFS一站式平臺化一站式平臺化JFlink Web配置與調度中心數據地圖日志中心監控中心JFlink Service NodesJFlink Jar RepositoryFlink on
12、 KubernetesJFlink-SDKBusinessJarsFlink JM PodFlink TM PodsFlinkMini ClusterNamespacesK8S組件NEXUSZooKeeperKubernetesHDFS一站式平臺化一站式平臺化一站式平臺化一站式平臺化一站式平臺化一站式平臺化作業批量啟停、定時保存點一應俱全全生命周期一站式管理124653多租戶權限控制與程序包版本管理租戶業務細分的版本控制啟動即自動接入平臺所有運維配套設施自動接入日志/監控/告警體系每個作業運行在適合自身資源和配置需求的獨占式微集群上K8S獨立集群基于SDK統一配置文法的友好交互可視化作業配置自
13、動分析作業歷史執行情況和異常風險控制#3 3走向實時全關聯走向實時全關聯支付環境下的業務實時化支付環境下的業務實時化日志分析監控通用數據ETL全鏈路監控用戶畫像支付環境關聯分析支付環境下的業務實時化支付環境下的業務實時化日志分析監控通用數據ETL全鏈路監控用戶畫像支付環境關聯分析從點到線到面,實時關聯所有支付環境數據支付環境下的業務實時化支付環境下的業務實時化日志分析監控客戶端渠道計費中心游戲服2018年初支付環境下的業務實時化支付環境下的業務實時化日志分析監控ts:“2021-05-01 00:00:00.123,uid:1000,item:A,count:1_ts:2021-05-01T0
14、0:00:23+0800,uid:1000,item:A,count:2ts=2021-05-01%2000:00:45&account_id=1001&buy_item=B&buy_count=10ts:2021-05-01 00:00:58,account_id:1002,buy_item:B,buy_count:5?ts=2021-05-01%2000:01:12u0026account_id=1002u0026buy_item=Au0026buy_count=7ts:2021-05-01 00:01:18,account_id:1000,buy_item:A,buy_count:5ts
15、:2021-04-28T08:23:18Z,uid:1050,buy_item:A,buy_count:12JsonViewMessage event_ts:2021-05-01T00:00:23+0800,uid:1000,item:A,count:2支付環境下的業務實時化支付環境下的業務實時化日志分析監控Parse將非結構日志轉結構數據Aggregate按規則窗口聚合計算指標ES-TSDB Sink按異構數倉格式存儲JsonView MsgJFlink-SDKJFlink Mini Cluster on KubernetesJsonView Msg支付環境下的業務實時化支付環境下的業務實時
16、化日志分析監控點:接口訪問量/時延/返回碼/在線分布支付環境下的業務實時化支付環境下的業務實時化日志分析監控點:接口訪問量/時延/返回碼/在線分布降低監控發現延遲提升監控發現率支付環境下的業務實時化支付環境下的業務實時化通用數據ETL2018-2019Parse將非結構日志轉結構數據JavaScript高自由度的ETL邏輯DataPoint Sink按異構數倉格式存儲JsonView MsgJFlink-SDKJFlink Mini Cluster on KubernetesJsonView Msg支付環境下的業務實時化支付環境下的業務實時化通用數據ETLParse異構數據轉統一流轉對象Jav
17、aScript高自由度的ETL邏輯DataPoint Sink按異構數倉格式存儲JsonView MsgJFlink-SDKJFlink Mini Cluster on KubernetesJsonView Msg支付環境下的業務實時化支付環境下的業務實時化通用數據ETL支付環境下的業務實時化支付環境下的業務實時化日志分析監控通用數據ETL點:支付環境中每個接口、每條日志、每行數據庫記錄支撐實時聚合/入庫/監控/反查業務30000000000/d支付環境下的業務實時化支付環境下的業務實時化全鏈路監控2019年起點 關聯為 線?支付環境下的業務實時化支付環境下的業務實時化全鏈路監控渠道計費中心游
18、戲服網關網關日志日志日志日志支付環境下的業務實時化支付環境下的業務實時化全鏈路監控client_startchannel_payfee_checkgame_shipfee_finishclient_gain客戶端日志渠道日志計費日志游戲服日志網關日志nginx_access支付環境下的業務實時化支付環境下的業務實時化全鏈路監控Keyed Stream+Session Window?支付環境下的業務實時化支付環境下的業務實時化全鏈路監控Trackeron FlinkLog Linking ModelServiceParameter UpdateGraph DB/RDBDynamic LoadDa
19、ilySpark Job支付環境下的業務實時化支付環境下的業務實時化全鏈路監控Trackeron FlinkServiceParameter UpdateGraph DB/RDBDynamic LoadDailySpark JobLambda ArchitectureLog Linking Model支付環境下的業務實時化支付環境下的業務實時化全鏈路監控支付環境下的業務實時化支付環境下的業務實時化用戶畫像2020年起聚線成面,進一步挖掘實時數據的價值支付環境下的業務實時化支付環境下的業務實時化用戶畫像2020年起User profile on Flink實時的道具購買情況實時的支付充值偏好實時
20、的購買頁停留趨勢實時的用戶特征分群實時的歷史充值情況T+1 報表形式支付環境下的業務實時化支付環境下的業務實時化用戶畫像2020年起User profile on Flink實時的道具購買情況實時的支付充值偏好實時的購買頁停留趨勢實時的用戶特征分群實時的歷史充值情況禮包推薦精細化運營福利禮品發放營收分析與預測提升收益支付環境下的業務實時化支付環境下的業務實時化用戶畫像異構源日志 統一流轉對象SDK UDFs基于SDK的實時處理DataPoint Sink(TiDB)按異構數倉格式存儲JsonView MsgJFlink-SDKJFlink Mini Cluster on KubernetesJ
21、sonView MsgFS+SDK Parser:日志 統一流轉對象MQ+SDK Parser:記錄行 統一流轉對象CDC/RDB Source:支付環境下的業務實時化支付環境下的業務實時化用戶畫像RedisTiDBSDKAsync RedisJoin UDFSDKAsync RDBJoin UDF-用戶ID-消費道具包ID-消費時間-用戶ID-消費道具包ID-消費時間-道具包金額-道具包明細項目-SDKAggregator/ML UDFsAsync IOFeature與維度表關聯-用戶ID-消費道具包ID-消費時間-道具包金額-道具包明細項目-用戶名-是否成年玩家-歷史充值總額-是否回流-進
22、一步產生微觀數據/宏觀報表支付環境下的業務實時化支付環境下的業務實時化用戶畫像玩家角色級別的微觀指標查詢宏觀級別的報表查詢支付環境下的業務實時化支付環境下的業務實時化用戶畫像支付環境下的業務實時化支付環境下的業務實時化支付環境關聯分析2021年起一套完整的上下文有關實時分析解決方案支付環境下的業務實時化支付環境下的業務實時化支付環境關聯分析JFlink-SDKSDK MQSourceParser ETLAssignTime&WatermarkContextLinkingSDK CDCSourceJS ETLAssignTime&WatermarkContextLinkingContextInt
23、erval Join表數據日志數據支付環境下的業務實時化支付環境下的業務實時化支付環境關聯分析ContextLinkingContextLinking預下單記錄付款記錄開始支付下單完成下單失敗發貨完畢基于SDK的關聯拓撲配置支付環境下的業務實時化支付環境下的業務實時化支付環境關聯分析ContextInterval Join預下單記錄付款記錄開始支付下單完成下單失敗發貨完畢99.9%99.8%100%99.9%30%基于SDK的關聯結果合并配置支付環境下的業務實時化支付環境下的業務實時化支付環境關聯分析ContextInterval Join預下單記錄付款記錄開始支付下單完成下單失敗發貨完畢99.9%99.8%100%99.9%30%發貨服務異常?支付環境下的業務實時化支付環境下的業務實時化支付環境關聯分析基于Flink的支付環境全關聯分析實踐JFlink-SDKSQL支持多租戶K8S獨立Flink集群一站式作業管理平臺自動接入監控數據地圖統一配置文法實時日志分析監控通用數據ETL支付全鏈路質量監控實時用戶指標與畫像實時支付環境關聯分析