HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。然而,隨著業(yè)務(wù)需求的變化,HBase在某些功能上顯現(xiàn)出不足。針對(duì)HBase歷史業(yè)務(wù)場(chǎng)景的核心痛點(diǎn),騰訊云數(shù)據(jù)庫(kù)產(chǎn)品TDSQL MySQL版(TDStore引擎)提供了適配方案,助力業(yè)務(wù)成功上云,并解決了業(yè)務(wù)多年來(lái)的瓶頸,實(shí)現(xiàn)了成本與性能的雙重優(yōu)勢(shì)。
一、引言
HBase是一個(gè)建立在Hadoop之上的分布式KV數(shù)據(jù)庫(kù)系統(tǒng),首個(gè)獨(dú)立版本于2010年2月發(fā)布。憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,HBase迅速成為物聯(lián)網(wǎng)、社交網(wǎng)絡(luò)和監(jiān)控?cái)?shù)據(jù)存儲(chǔ)的首選方案,并在大規(guī)模數(shù)據(jù)分析領(lǐng)域得到廣泛應(yīng)用。然而,隨著業(yè)務(wù)需求變化,HBase在某些功能上顯現(xiàn)不足,如缺乏二級(jí)索引和不支持跨行事務(wù)等。與此同時(shí),隨著數(shù)據(jù)庫(kù)技術(shù)不斷進(jìn)步,NewSQL日益嶄露頭角,TDSQL MySQL版(TDStore引擎)采用了主流NewSQL架構(gòu),具備容器化云原生管理能力,并100%兼容MySQL 8.0語(yǔ)法。此外,TDStore支持原生Online DDL,可動(dòng)態(tài)更改表結(jié)構(gòu),并具備高效的壓縮存儲(chǔ)能力,降低成本的同時(shí)支持海量存儲(chǔ)。本文將深入探討在歷史庫(kù)場(chǎng)景中使用TDStore替換HBase所帶來(lái)的成本和性能優(yōu)勢(shì)。
二、使用HBase的業(yè)務(wù)場(chǎng)景和痛點(diǎn)
HBase在擴(kuò)展性以及存儲(chǔ)方面具備一定優(yōu)勢(shì),能夠滿(mǎn)足業(yè)務(wù)系統(tǒng)的歷史庫(kù)使用需求。在過(guò)去的十多年里,許多大型公司和組織使用HBase作為海量數(shù)據(jù)的首選存儲(chǔ)方案。例如,在金融領(lǐng)域,監(jiān)管機(jī)構(gòu)要求金融機(jī)構(gòu)對(duì)交易記錄、客戶(hù)信息等敏感數(shù)據(jù)進(jìn)行長(zhǎng)期保存,以便在必要時(shí)進(jìn)行追溯和核查。
騰訊金融科技業(yè)務(wù)系統(tǒng)的歷史庫(kù)也曾廣泛采用HBase,但使用HBase后也出現(xiàn)了一些核心痛點(diǎn)。
1)、業(yè)務(wù)背景
上圖是騰訊金融科技的一個(gè)充值記錄類(lèi)型業(yè)務(wù)的架構(gòu)圖:
-通過(guò)binlog采集以及DTS傳輸服務(wù),增量數(shù)據(jù)消費(fèi)雙寫(xiě)到歷史數(shù)據(jù)的兩個(gè)HBase集群:一主一備,分布在兩個(gè)城市,具備跨可用區(qū)的容災(zāi)能力。
-超出保留時(shí)間的數(shù)據(jù)會(huì)從MySQL集群中刪除,這些數(shù)據(jù)保存在HBase中成為靜態(tài)歷史數(shù)據(jù)。
-在線庫(kù)熱數(shù)據(jù)的查詢(xún)占比95%,歷史庫(kù)HBase冷數(shù)據(jù)的查詢(xún)占比5%。
-為方便業(yè)務(wù)開(kāi)發(fā),統(tǒng)一使用HBase Proxy通過(guò)SQL訪問(wèn)歷史數(shù)據(jù)。
-歷史數(shù)據(jù)需要長(zhǎng)期保存,不能刪除;隨著數(shù)據(jù)的不斷增長(zhǎng),使用成本在快速擴(kuò)張。
2)、業(yè)務(wù)痛點(diǎn)
-組件多,運(yùn)維復(fù)雜
1.HBase組件眾多,支持復(fù)雜查詢(xún)等功能還需引入額外工具,運(yùn)維復(fù)雜。
2.此外,HBase社區(qū)發(fā)展停滯,促使我們尋找更好的解決方案。
-不支持二級(jí)索引
3.業(yè)務(wù)需要先查詢(xún)索引表,再查詢(xún)主表,鏈路長(zhǎng)、延遲高。
-不支持跨行事務(wù)
4.只能保證單行的原子性,主表與索引表的一致性無(wú)法保證。
-容災(zāi)依賴(lài)雙寫(xiě)
5.跨可用區(qū)容災(zāi)依賴(lài)雙寫(xiě),加大了程序的復(fù)雜性,且難以保證主備HBase的數(shù)據(jù)一致性。
-使用成本
6.主備2套HBase集群,需配置5-6個(gè)副本,存儲(chǔ)成本高昂。
7.壓縮算法默認(rèn)為Snappy,如使用壓縮率更優(yōu)的ZSTD需依賴(lài)Hadoop 3.0,存在Core Dump的概率。
面對(duì)業(yè)務(wù)使用HBase的局限性,TDStore團(tuán)隊(duì)主動(dòng)深入分析業(yè)務(wù)痛點(diǎn),最終為其提供了一套更合適的解決方案,采用TDStore替代HBase。
三、遷移后的性能和效率比較
在上述提到的充值記錄業(yè)務(wù)場(chǎng)景中,我們已經(jīng)成功地將HBase數(shù)據(jù)(使用Snappy壓縮)遷移到了TDStore(使用LZ4+ZSTD壓縮)。以下是遷移后性能和效率的對(duì)比分析:
1)存儲(chǔ)成本大幅降低
結(jié)果顯示,單副本(不包括索引)的壓縮率達(dá)到了47%,顯著降低了騰訊金融科技業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)使用成本。
同時(shí),由于原先需要雙寫(xiě)主備兩套HBase集群,現(xiàn)在只需一套TDStore實(shí)例即可滿(mǎn)足跨AZ的高可用。在副本數(shù)上兩者也有明顯差異,將其納入計(jì)算后,成本進(jìn)一步降低。
2)業(yè)務(wù)訪問(wèn)延遲降低
遷移前,業(yè)務(wù)需要先查詢(xún)HBase的索引表,再查詢(xún)主表,導(dǎo)致鏈路較長(zhǎng),平均耗時(shí)達(dá)到150毫秒。而遷移至TDStore后,平均耗時(shí)縮短至37毫秒,執(zhí)行效率顯著提升。
3)業(yè)務(wù)數(shù)據(jù)規(guī)范性大幅提升
HBase作為KV數(shù)據(jù)庫(kù),其數(shù)據(jù)結(jié)構(gòu)只有鍵和值兩個(gè)元素,沒(méi)有預(yù)定義的數(shù)據(jù)結(jié)構(gòu),任何可以轉(zhuǎn)換為字節(jié)數(shù)組的內(nèi)容都可以存儲(chǔ)在HBase的單元格中;這就導(dǎo)致如果執(zhí)行了錯(cuò)誤的PUT操作,HBase會(huì)無(wú)條件保存數(shù)據(jù),并依賴(lài)滯后的數(shù)據(jù)校驗(yàn)程序去發(fā)現(xiàn)和校正。
TDStore作為關(guān)系型數(shù)據(jù)庫(kù),使用表格形式來(lái)組織數(shù)據(jù),每個(gè)表都有預(yù)定義的列,并且每列都有預(yù)定義的數(shù)據(jù)類(lèi)型。這種結(jié)構(gòu)化的數(shù)據(jù)組織方式使得數(shù)據(jù)更加規(guī)范,也避免了日常繁雜的數(shù)據(jù)校驗(yàn)工作。
四、總結(jié)
四、總結(jié)作為T(mén)DSQL新一代引擎,TDSQL TDStore版具有以下的特點(diǎn):
1)透明分布式
兼容性:兼容原生MySQL 8.0語(yǔ)法,對(duì)用戶(hù)業(yè)務(wù)層無(wú)入侵。
分布式:業(yè)務(wù)層無(wú)須手動(dòng)分庫(kù)分表,使用時(shí)無(wú)需指定分片鍵,單機(jī)MySQL上的業(yè)務(wù)可以無(wú)損遷移到TDStore上。
2)高性能計(jì)算+海量存儲(chǔ)
計(jì)算層:不同于傳統(tǒng)的M-S模式,TDStore為多主模式,每個(gè)節(jié)點(diǎn)均可讀寫(xiě);單實(shí)例可支撐千萬(wàn)級(jí)QPS,幫助用戶(hù)應(yīng)對(duì)突如其來(lái)的業(yè)務(wù)峰值壓力。
存儲(chǔ)層:采用高壓縮比的分布式存儲(chǔ)引擎,海量數(shù)據(jù)業(yè)務(wù)的性?xún)r(jià)比首選。
3)容器化云原生的彈性擴(kuò)縮容
基于容器化平臺(tái)的管控系統(tǒng)具備云原生能力,可根據(jù)業(yè)務(wù)需求彈性擴(kuò)縮容,支持業(yè)務(wù)動(dòng)態(tài)負(fù)載以及容量彈性伸縮。
4)原生Online DDL支持業(yè)務(wù)的頻繁變化
支持在線加減列操作,支持在線加減索引,支持大部分DDL操作以原生Online方式執(zhí)行。使用者在業(yè)務(wù)運(yùn)行過(guò)程中有動(dòng)態(tài)更改表結(jié)構(gòu)的需求時(shí),無(wú)須依賴(lài)如pt或ghost等外部工具組件。
也是因?yàn)門(mén)DStore有這些特點(diǎn),歷史庫(kù)場(chǎng)景下的HBase業(yè)務(wù)非常適合遷移至TDStore。TDStore與HBase的功能相比,主要具有以下特征:
-長(zhǎng)期數(shù)據(jù)保存:TDStore具有極易擴(kuò)展性。
-提高數(shù)據(jù)質(zhì)量:TDStore具有嚴(yán)格約束,避免問(wèn)題或錯(cuò)誤數(shù)據(jù)存入庫(kù)中。從而節(jié)省修復(fù)數(shù)據(jù)的時(shí)間。
-成本敏感:TDStore具有更高的壓縮比,并在滿(mǎn)足容災(zāi)需求的情況下減少副本數(shù)量,從而大幅降低使用成本。
-統(tǒng)一SQL訪問(wèn):上游數(shù)據(jù)來(lái)自MySQL,業(yè)務(wù)希望統(tǒng)一使用SQL訪問(wèn)兩側(cè)數(shù)據(jù)庫(kù),HBase需要加裝phoenix或其他中間件來(lái)支持SQL,TDStore原生支持SQL接口,且性能更佳。
-更便捷的運(yùn)維體驗(yàn):TDStore自主研發(fā),依托容器化管控平臺(tái),在日常運(yùn)維和升級(jí)工作中更為便捷。
TDStore正在快速發(fā)展,其在歷史庫(kù)場(chǎng)景中替代HBase的實(shí)踐僅是成本效益和性能優(yōu)勢(shì)的一部分。未來(lái),我們將致力于提升產(chǎn)品性能和用戶(hù)體驗(yàn)。作為騰訊云數(shù)據(jù)庫(kù)長(zhǎng)期戰(zhàn)略的核心,TDStore將始終以業(yè)務(wù)需求為導(dǎo)向,專(zhuān)注產(chǎn)品打磨,為用戶(hù)提供更高效、更穩(wěn)定的服務(wù)。