前言
隨著騰訊產(chǎn)品與技術(shù)的發(fā)展,幾乎任何一個與用戶相關(guān)的在線業(yè)務(wù)的數(shù)據(jù)量都在億級別,每日系統(tǒng)調(diào)用次數(shù)從億到百億,對海量數(shù)據(jù)的高效插入和快速讀取變得越來越重要。而傳統(tǒng)關(guān)系型數(shù)據(jù)庫模式固定、強調(diào)參照完整性、數(shù)據(jù)的邏輯與物理形式相對獨立等,比較適用于中小規(guī)模的數(shù)據(jù),但對于數(shù)據(jù)的規(guī)模和并發(fā)讀寫方面進行大規(guī)模擴展時,RDBMS性能會大大降低,分布式更為困難。
為什么會選擇HBase?
高可靠性。HBase是運行在Hadoop上的NoSQL數(shù)據(jù)庫,它的數(shù)據(jù)由HDFS做了數(shù)據(jù)冗余,具有高可靠性。同時TDW(騰訊分布式數(shù)據(jù)倉庫)五年的穩(wěn)定運行,8800臺的集群規(guī)模,證明了其服務(wù)于海量數(shù)據(jù)的能力。
高并發(fā)讀寫。使用日志文件(HLOG)和內(nèi)存存儲來將隨機寫轉(zhuǎn)換成順序?qū)?,保證穩(wěn)定的數(shù)據(jù)插入速率;讀寫?yīng)毩ⅲ@兩種操作沒有沖突。
優(yōu)雅的伸縮性。HBase服務(wù)能力可以隨服務(wù)器的增長而線性增長;HBase中表的數(shù)據(jù)表按Key 值范圍自動分片,散布于不同的機器上,實現(xiàn)自動負載均衡;支持百億行×百萬列×上萬個版本。
低延遲。數(shù)據(jù)按列存儲,數(shù)據(jù)即索引。
低成本。歷史數(shù)據(jù)不能輕易刪除,數(shù)據(jù)量變得越來越多,尤其是對于日志類存儲,寫多讀少。而HBase可構(gòu)建在廉價的PC上,此外,HBase支持較多的壓縮算法。
本篇文章將對HBase在騰訊大數(shù)據(jù)的應(yīng)用情況做一個介紹。
HBase易用性建設(shè)
數(shù)據(jù)接入-方便、靈活
接入前臺化、可配置化。只需在前臺配置入庫任務(wù),按配置約定規(guī)范上報數(shù)據(jù),即可實現(xiàn)將數(shù)據(jù)入庫HBase,方便、簡潔、快速。
與騰訊大數(shù)據(jù)的各平臺(TDBank、TDW、TRC)打通,數(shù)據(jù)流轉(zhuǎn)方便。
接入方式多樣靈活。業(yè)務(wù)也可根據(jù)HBase提供的API自己編寫代碼,實現(xiàn)數(shù)據(jù)寫入HBase。在寫入量較大的情況下,業(yè)務(wù)側(cè)還需要維護一批寫入客戶端,維護成本較高。一般不推薦使用這種方式。
數(shù)據(jù)查詢-接口簡單、易用
避免用戶重復(fù)編碼、方便業(yè)務(wù)查詢HBase中的數(shù)據(jù),我們封裝并提供了兩種查詢接口:HTTP查詢接口和TCP查詢接口。同時支持點查詢和范圍查詢兩種查詢方式。
HTTP查詢接口:
通過發(fā)送HTTP POST請求方式查詢數(shù)據(jù)。適用于輕量查詢需求,例如客服業(yè)務(wù)受理查詢,客戶只要開發(fā)一個自己的界面就可以使用。返回的數(shù)據(jù)格式支持json、xml、text、idip(游戲業(yè)務(wù)定制的數(shù)據(jù)格式)四種。
TCP查詢接口:
通過發(fā)送TCP請求建立長連接來查詢數(shù)據(jù)。適用于大并發(fā)查詢需求,例如營銷活動、用戶畫像類數(shù)據(jù)查詢需求等。返回的數(shù)據(jù)格式只提供protobuf格式。
安全建設(shè)
權(quán)限控制。每個接入業(yè)務(wù)均分配一個用戶ID、IP白名單機制,只有在開通了白名單的服務(wù)器上,使用用戶ID才可以訪問歸屬業(yè)務(wù)的HBase表,當(dāng)多個業(yè)務(wù)共用一個HBase的情況下,權(quán)限控制尤其必要。針對敏感數(shù)據(jù)(如用戶畫像數(shù)據(jù)),權(quán)限進一步控制到列級別。即只有在開通了白名單的服務(wù)器上,使用用戶ID才可以訪問開通了權(quán)限的HBase表中的某些列。
流量控制??刂茊喂P查詢的數(shù)據(jù)量大小以及查詢返回行數(shù)限制,同時監(jiān)控大查詢。在多個小業(yè)務(wù)公用一個HBase情況,可有效控制非必要場景下大量get數(shù)據(jù)業(yè)務(wù)間查詢相互影響的問題。
業(yè)務(wù)應(yīng)用情況
1.游戲營銷活動新渠道
數(shù)據(jù)的實時性對于營銷活動的效果有著十分明顯的影響,由于數(shù)據(jù)延遲而帶來的不良用戶體驗會導(dǎo)致玩家喪失繼續(xù)參與活動的耐心從而使活動效果大打折扣。HBase在近幾次營銷活動(如炫舞拉新活動、天天酷跑新版預(yù)熱活動、英雄聯(lián)盟3周年活動、天天酷跑周年活動、英雄聯(lián)盟拉新活動)中,從幾十億甚至百億條數(shù)據(jù)中實時拉取數(shù)據(jù)的毫秒級響應(yīng),成為營銷活動的一個新渠道。
2.廣告日志處理
廣告成為互聯(lián)網(wǎng)公司的一個主要收入來源。我們現(xiàn)在每天通過HBase處理百億級廣告的請求和曝光日志,訪問HBase的延遲,80%在20ms之內(nèi),保證了數(shù)據(jù)的秒級實時回流,實現(xiàn)檢索、曝光、點擊和效果日志百億數(shù)據(jù)的實時關(guān)聯(lián),提供完整豐富的用戶特征數(shù)據(jù)。精細的特征數(shù)據(jù)會帶來更好的模型,產(chǎn)生更好的廣告效果,進而提升廣告收入。
3.業(yè)務(wù)受理查詢
業(yè)務(wù)受理系統(tǒng)受限于MySQL數(shù)據(jù)庫容量與性能,僅能查詢最近一段時間的日志,使游戲在核實客戶投訴上較為被動。游戲業(yè)務(wù)受理系統(tǒng)由MySQL遷移到HBase后,用業(yè)務(wù)的評價來總結(jié)下MySQL遷移HBase的效果:“業(yè)務(wù)受理對客服的查詢需求服務(wù)提升了一個檔次”。
4.此外,HBase在其他點擊交互日志或監(jiān)控日志系統(tǒng)上也有較多應(yīng)用,如網(wǎng)絡(luò)會話數(shù)據(jù)、秒級監(jiān)控平臺日志、微信支付日志等。
結(jié)束語
隨著業(yè)務(wù)的發(fā)展以及HBase在騰訊的較多的成功應(yīng)用案例與推廣,HBase的應(yīng)用還將繼續(xù)增多以及向核心應(yīng)用靠近的趨勢。總的來說,我們的目標(biāo),降低接入使用門檻以及使用成本,使HBase能穩(wěn)定地部署到更多的應(yīng)用中去, 以助力業(yè)務(wù)更快發(fā)展。
(審核編輯: 智匯小蟹)
分享