TDSQL在微信支付數(shù)據(jù)密集型應(yīng)用落地實(shí)踐TDSQL在微信支付數(shù)據(jù)密集型應(yīng)用中的實(shí)踐日前,騰訊云數(shù)據(jù)庫開源產(chǎn)品TDSQL PG版(開源代碼TBase)宣布重磅升級——經(jīng)過一年半的打磨,在訪問數(shù)萬張表的場景下,內(nèi)存占用節(jié)省60%;查詢性能提高了一百倍;SQL語句兼容性得到了增強(qiáng)。同時,原數(shù)據(jù)庫版本在分布式場景下的可用性大......
日前,騰訊云數(shù)據(jù)庫開源產(chǎn)品TDSQL PG版(開源代碼TBase)宣布重磅升級——經(jīng)過一年半的打磨,在訪問數(shù)萬張表的場景下,內(nèi)存占用節(jié)省60%;查詢性能提高了一百倍;SQL語句兼容性得到了增強(qiáng)。同時,原數(shù)據(jù)庫版本在分布式場景下的可用性大大提高。
TDSQL PG版是騰訊多年來不斷研發(fā)的具有HTAP能力的數(shù)據(jù)庫產(chǎn)品。是騰訊云數(shù)據(jù)庫團(tuán)隊在開源PostgreSQL基礎(chǔ)上開發(fā)的企業(yè)級分布式HTAP數(shù)據(jù)庫管理系統(tǒng),可以提供成熟的一站式解決方案。騰訊云數(shù)據(jù)庫技術(shù)總監(jiān)李躍森表示,“在開源的前10天,TDSQL PG版的Star數(shù)量已經(jīng)達(dá)到500多個。很快,開源就受到了歐洲航天局、美國國家天文臺以及醫(yī)療健康、零售等行業(yè)用戶的青睞?!?/p>
作為新一代分布式企業(yè)數(shù)據(jù)庫管理系統(tǒng),TDSQL一直應(yīng)用于微信支付的核心系統(tǒng),支持微信支付實(shí)現(xiàn)高性能、高可用、數(shù)字化的應(yīng)用。近年來,微信支付基于TDSQL PG版構(gòu)建了數(shù)據(jù)密集型應(yīng)用,可以輕松突破單表數(shù)據(jù)的TB級海量存儲。TDSQL PG版高吞吐量、高并發(fā)、自動擴(kuò)容,完全滿足微信支付的業(yè)務(wù)場景需求。
微信支付在應(yīng)用TDSQL PG版的過程中經(jīng)歷了哪些故事TDSQL PG在微信支付系統(tǒng)中有哪些典型的應(yīng)用案例
1微信支付和TDSQL PG版的伴隨教程
“如果要用一個形容詞來形容微信支付和TDSQL PG版的關(guān)系,那就是‘你嫉妒我’?!彬v訊高級工程師萬志英在介紹微信支付案例時表示,“TDSQL PG版為我們提供了武器,而微信支付為TDSQL PG版提供了充足的試用戰(zhàn)場?!?/p>
以微信支付的商戶服務(wù)平臺為例,主要是數(shù)千萬商戶下載明細(xì)賬單、查詢賬單復(fù)雜情況、進(jìn)行統(tǒng)計分析的平臺。起初,平臺使用開源的MySQL作為底層存儲。但隨著JD.COM等大商戶的接入,交易筆數(shù)逐漸增多,單機(jī)對于數(shù)據(jù)增長的存儲能力有限,微信支付遇到嚴(yán)重的容量瓶頸和性能瓶頸。在當(dāng)時的技術(shù)背景下,微信支付急需一個好的解決方案,所以選擇了TDSQL PG版。
TDSQL很好的解決了微信支付中遇到的問題。容量問題上,TDSQL提供海量數(shù)據(jù)存儲的在線線性擴(kuò)容;在大商戶的數(shù)據(jù)傾斜問題上,TDSQL基于雙密鑰分發(fā)機(jī)制解決了數(shù)據(jù)存儲的均勻分布問題。在分頁查詢性能上,TDSQL提供了基于Index only掃描索引的相關(guān)優(yōu)化方案,解決了傳統(tǒng)web應(yīng)用分頁場景下總頁數(shù)查詢耗時高的問題。
“在交易系統(tǒng)基礎(chǔ)上進(jìn)一步應(yīng)用的過程中,我們發(fā)現(xiàn)TDSQL PG版本的相關(guān)特性非常適合數(shù)據(jù)倉庫中的維度表存儲。于是在2021年,微信支付構(gòu)建了基于TDSQL PG版的數(shù)據(jù)倉庫的維度表管理系統(tǒng),使其成為大數(shù)據(jù)生態(tài)中的重要組成部分。”萬志英介紹。
2 TD SQL PG版在微信支付中的應(yīng)用實(shí)踐
近年來,TDSQL PG版幫助微信支付搭建數(shù)據(jù)密集型應(yīng)用,不斷拓展應(yīng)用場景,在多個領(lǐng)域展現(xiàn)比較優(yōu)勢,保障業(yè)務(wù)的穩(wěn)定性和連續(xù)性。以報表系統(tǒng)和維度表系統(tǒng)為例,介紹了TDSQL PG版在微信支付中的應(yīng)用實(shí)踐。
微信報表系統(tǒng)有兩種典型的讀寫模式:一種是基于spark離線計算平臺的周期性寫,比如一天寫一次,每次寫的數(shù)據(jù)很少,但也有可能寫的數(shù)據(jù)量是十億或者百億。另一種方式是通過消息隊列實(shí)時寫入,構(gòu)建實(shí)時報表。由于寫入端是大數(shù)據(jù)系統(tǒng),每次寫入的數(shù)據(jù)量極大,所以對底層數(shù)據(jù)存儲的寫入性能要求很高。與開源的MySQL相比,TDSQL PG版在并行寫入方面優(yōu)勢明顯,具有更好的并行寫入性能和吞吐量,可以大大減少我們數(shù)據(jù)入庫的完成時間,還可以支持實(shí)時報表等場景的需求。
與開源的MySQL相比,TDSQL PG在從報表頁面讀取數(shù)據(jù)時有更豐富的索引類型支持。比如微信支付就有一個業(yè)務(wù)場景,從幾百億的數(shù)據(jù)中模糊檢索商戶名稱。在引入TDSQL PG版本之前,這個場景的查詢時間需要將近17秒。優(yōu)化后,這個場景的時間消耗直接降低到50毫秒以內(nèi),性能大幅提升。
到目前為止,TDSQL PG已經(jīng)積累了微信支付3600+報表的數(shù)據(jù)寫入、存儲、讀取,報表打開時間可以穩(wěn)定控制在3秒以內(nèi),大大提升了整個報表平臺的性能。
微信還基于TDSQL PG版搭建維度表系統(tǒng)。維度表是描述一個事物的不同角度,比如男女性別。寫代碼時的枚舉值也可以認(rèn)為是一個維度表。接下來以枚舉值為例,闡述微信支付如何基于TDSQL PG版構(gòu)建維度表系統(tǒng)。
微信支付所有系統(tǒng)的枚舉值都是基于績效建表系統(tǒng)統(tǒng)一錄入的。目前共有2700+枚舉值,將由下游OLTP數(shù)據(jù)倉庫、報表系統(tǒng)和操作系統(tǒng)中的計算任務(wù)讀取。如果枚舉值在上游被修改或添加,但在下游沒有被感知,將對整個系統(tǒng)的穩(wěn)定性產(chǎn)生嚴(yán)重后果。
為了解決這類問題,微信支付在TDSQL PG版本的基礎(chǔ)上,開辟了集成OLTP系統(tǒng)和OLAP能力的維度表系統(tǒng)。在OLTP維度表管理系統(tǒng)中輸入或更新維度表數(shù)據(jù)后,無論是在線業(yè)務(wù)、Spark計算還是報表系統(tǒng),都可以實(shí)時引用最小枚舉值數(shù)據(jù)參與計算。同時,數(shù)據(jù)用戶也可以直接看到數(shù)據(jù)倉庫中每個枚舉值字段的枚舉值,而不必逐層查詢,這樣可以控制枚舉值管理的復(fù)雜度,降低相應(yīng)的質(zhì)量風(fēng)險,滿足金融應(yīng)用的需求,也可以大大提高我們的維護(hù)效率。
在整體運(yùn)營中,目前TDSQL PG版微信支付的存儲容量已經(jīng)達(dá)到400TB+,每秒請求數(shù)超過24萬?;旧?9.6%的請求都可以用不到10毫秒,完全滿足微信支付在性能和穩(wěn)定性方面的高要求。
TD是騰訊云的企業(yè)級分布式數(shù)據(jù)庫,涵蓋金融級分布式、云原生、分析等多引擎的完整數(shù)據(jù)庫產(chǎn)品體系。提供業(yè)界領(lǐng)先的金融級高可用、計算與存儲分離、數(shù)據(jù)倉庫、企業(yè)級安全等能力。同時擁有智能運(yùn)維平臺、無服務(wù)器版等完整的產(chǎn)品服務(wù)體系。
到2020年,TDSQL已服務(wù)數(shù)千家金融政企機(jī)構(gòu),同時廣泛覆蓋游戲、電商、移動互聯(lián)網(wǎng)、云開發(fā)等泛互聯(lián)網(wǎng)業(yè)務(wù)場景,幫助新零售、教育、SaaS、廣告等行業(yè)超過4000家客戶進(jìn)行數(shù)字化升級。
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部