克拉克拉(KilaKila):大規模實時計算平台架構實戰


克拉克拉(KilaKila):大規模實時計算平台架構實戰

一、產品背景:
克拉克拉(KilaKila)是國內專注二次元、主打年輕用戶的娛樂互動內容社區軟件。KilaKila推出互動語音直播、短視頻配音、對話小說等功能,滿足當下年輕用戶個性化、碎片化的文娛需求。App用戶等級體系作為克拉克拉社區化打造的核心業務,在增強社區活躍度、提高產品留存方面起到至關重要的作用。隨着業務規模增長,海量用戶行為日志實時采集與計算的瓶頸也日益突出,由於單台服務器的處理能力有限,海量數據分析需要分布式計算模型來替代。通過技術調研與架構選型,最終解決方案采用基於阿里雲日志服務(Log Service)與 開源技術Storm為組合的基礎架構。

二、實時日志采集:
LogHub 支持客戶端、網頁、協議、SDK/API等多種日志無損采集方式,所有采集方式均基於Restful API實現,除此之外也可以通過API/SDK實現新的采集方式。對於克拉克拉來說,業務日志會實時輸出到本地服務器,通過在日志服務器部署Logtail,即可完成日志的無丟失采集。因業務場景不同,對日志可以根據不同的Topic進行分類,從而滿足不同業務的個性化計算需求。此外,LogHup可通過配置自帶的投遞服務,將海量日志同步到數據倉庫中永久存儲。

_1

圖一:日志采集流程圖

通過Logtail來采集Nginx上用戶行為的日志到Logstore只需要簡單配置相應日志所在的機器組和日志的絕對路徑,其從日志落盤服務器到采集工作的完成控制在1秒內。同時Logstore支持多功能的日志檢索服務,可以為后續明確用戶行為提供快捷的查詢服務。其中我們將不同topic的日志存儲在不同的Logstore中,供后續不同業務有針對性的實時消費。

_2

圖二:克拉克拉topic日志結構圖

_3

圖三:日志檢索

三、實時業務場景:
為滿足克拉克拉用戶社區目標,該業務主要針對APP用戶在直播、小說、視頻三大業務線100多種行為場景下完成用戶經驗值的實時計算,也就是數據值的增刪改查。在實時計算層,克拉克拉選擇了Storm開源的分布式實時大數據處理框架,而阿里雲日志服務對於Storm有着非常好的兼容與支持。
_4

圖四:克拉克拉實時計算框架

_5

圖五:LogHup 與 Storm關系


上圖中紅色虛線框中就是LogHub Storm Spout,每個Storm Topology會有一組Spout,同組內的Spout共同負責讀取Logstore中全部數據。不同Topology中的Spout相互不干擾。每個Topology需要選擇唯一的LogHub Consume Group名字來相互標識,同一 Topology內的Spout通過 Consumer Library來完成負載均衡和自動failover。Spout從LogHub中實時讀取數據之后,發送至Topology中的Bolt節點,定期保存消費完成位置作為checkpoint到LogHub服務端。

四、實時數據存儲
克拉克拉實時計算框架中存在諸多數據緩存、永久存儲等場景需求。面對該問題,克拉克拉采用了阿里雲OTS組件方案。OTS也稱為表格存儲(Table Store)是阿里雲自研的NoSQL多模型數據庫,提供海量結構化數據存儲以及快速的查詢和分析服務。表格存儲的分布式存儲和強大的索引引擎能夠提供PB級存儲、千萬TPS以及毫秒級延遲的服務能力。通過使用OTS所提供的Java SDK開發包實現了Storm計算過程中所涉及到的數據存儲需求。

_6

圖六:克拉克拉OTS存儲示例


五、項目總結
該項目以實時性和數據的精確度作為評判指標,所面臨的挑戰主要是用戶行為的高並發,平均每秒百萬級別的用戶計算量;而針對不同的Logstore的日志處理量將會達到用戶計算量的十倍左右。通過基於阿里雲日志服務、OTS表格存儲組件所搭建的克拉克拉實時計算平台綜合能力表現良好,符合產品業務預期。
六、未來展望
以Storm為計算中心的框架雖可滿足克拉克拉業務訴求,但相關項目研發效率還可進一步提升。對此,后續將重點調研阿里雲另一個高效實時計算組件Blink。Blink 是阿里雲實時計算方案,基於開源的Apache Flink。 該技術方案的最大亮點是通過SQL腳本語言來代替現有Java語言所開發的計算邏輯。從研發效率上來講,SQL腳本更容易上手且運維成本更低,相信到時公司整體實時計算框架的性能將會得到顯著的提升。

 


原文鏈接
本文為雲棲社區原創內容,未經允許不得轉載。  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM