- 資訊首頁(yè) > 互聯(lián)網(wǎng) >
- 286萬(wàn)QPS!騰訊云TDSQL打造數據庫領(lǐng)域的“超音速戰
2017年,Bloodhound SSC超音速汽車(chē)將陸地極限速度提升到1678公里/小時(shí),號稱(chēng)陸地“超音速戰斗機”。無(wú)獨有偶,同樣也在2017年,在英特爾?、騰訊金融云團隊的共同見(jiàn)證下,騰訊云數據庫TDSQL采用英特爾?提供的高端平臺,跑出了創(chuàng )造歷史的最快性能數據——峰值286萬(wàn)QPS。相比于上一代處理器,性能提升了近4倍,是32核/220GB實(shí)例的38倍,騰訊云TDSQL正在打造數據庫領(lǐng)域的“超音速戰機”。
此次測試的TDSQL,是由騰訊云數據庫團隊、金融云團隊和騰訊TEG團隊共同維護的金融級分布式架構和MySQL內核分支的統稱(chēng)。目前,騰訊90%的金融、計費、交易、區塊鏈等業(yè)務(wù)核心都承載在TDSQL架構中,并已成功應用于政府、銀行、保險、制造業(yè)、物流、電商等用戶(hù)。TDSQL提供專(zhuān)有云、公有云兩種部署方案,可以分配關(guān)系型數據庫(CDB)、分布式數據庫(DCDB)、分析性數據庫(ADB)實(shí)例。
TDSQL強大的性能,離不開(kāi)軟硬件的共同支持,騰訊云技術(shù)團隊通過(guò)對分布式架構和數據庫內核的深度優(yōu)化,同時(shí)借助英特爾?先進(jìn)技術(shù),讓TDSQL已經(jīng)成為金融企業(yè)互聯(lián)網(wǎng)轉型的一大“利器”。
分布式架構與數據庫內核深度優(yōu)化
與傳統行業(yè)技術(shù)架構不同,大型互聯(lián)網(wǎng)企業(yè)更傾向于使用分布式數據庫(DCDB),這是因為互聯(lián)網(wǎng)應用大多都面臨著(zhù)高并發(fā)數據處理,海量數據存儲的需求;而分布式數據庫底層將實(shí)際計算和存儲數據的物理表進(jìn)行自動(dòng)水平拆分,通過(guò)讓負載均勻的分布到每個(gè)數據庫物理節點(diǎn)中,有效的提高了數據庫的擴展能力。目前,騰訊充值及其相關(guān)合作伙伴的日流水量超過(guò)150億,托管賬戶(hù)接近280個(gè)億,而其中類(lèi)似于春節紅包,節日大促,營(yíng)銷(xiāo)活動(dòng),其訪(fǎng)問(wèn)流量經(jīng)常超過(guò)日均值的2倍、10倍或更多,如果用傳統方案來(lái)支撐,性能和成本將無(wú)法想象。
在內核層面,騰訊云數據庫團隊對數據庫內核進(jìn)行了深度優(yōu)化,增強了在性能,數據復制方面的能力,包括:
l 優(yōu)化線(xiàn)程池調度算法:?jiǎn)⒂脭祿炀€(xiàn)程池能夠很好的提升在高并發(fā)、短事務(wù)場(chǎng)景下,數據庫整體吞吐量,并且能夠有效的控制數據庫內部工作線(xiàn)程的數量,降低開(kāi)銷(xiāo)。數據庫團隊在此基礎上針對線(xiàn)程池的調度算法進(jìn)行了優(yōu)化,減少無(wú)謂的線(xiàn)程切換,減少請求在隊列中的等待時(shí)間,解決查詢(xún)和更新請求在線(xiàn)程組間分布不均衡等情況。負載越高,性能優(yōu)化效果越明顯,如下圖TDSQL與MySQL在英特爾?平臺進(jìn)行對比測試,隨著(zhù)負載和CPU核數的增加,TDSQL的性能變化更接近于線(xiàn)性增長(cháng)的趨勢,高負載情況下性能仍然能領(lǐng)先1.4倍并仍可繼續提升。
l 組提交異步化:在寫(xiě)入數據時(shí),Binlog事務(wù)組提交是數據庫開(kāi)銷(xiāo)較大的過(guò)程,Binlog組提交的基本思想是引入隊列機制保證innodb commit順序與binlog落盤(pán)順序一致,并將事務(wù)分組,組內的binlog刷盤(pán)動(dòng)作交給一個(gè)事務(wù)進(jìn)行,以實(shí)現組提交目的。在此過(guò)程中,一個(gè)組所有連接的工作線(xiàn)程,只有leader線(xiàn)程在工作,所有其他線(xiàn)程都需要等待leader線(xiàn)程完成工作。我們優(yōu)化了在engine prepare期間不刷engine 事務(wù)日志,而是在執行binlog寫(xiě)入之前,一次性flush engine事務(wù)日志。簡(jiǎn)單來(lái)講,即數據庫的工作線(xiàn)程在其會(huì )話(huà)狀態(tài)進(jìn)入組提交隊列后,不再阻塞等待組提交的Leader線(xiàn)程完成提交,而是直接返回處理下一個(gè)請求,實(shí)現異步化。在英特爾?高端平臺中,為了更充分的利用機器資源的目的,我們引入多租戶(hù)場(chǎng)景(4個(gè)實(shí)例并發(fā)),并采用OLTP RW(讀寫(xiě)混合)納入到測試場(chǎng)景, 4實(shí)例并發(fā)穩定峰值為19萬(wàn) TPS。
在資源擴展性上,隨著(zhù)英特爾?至強? CPU核數的不斷增加,TDSQL的整體性能表現也不斷提升,基本處于線(xiàn)性增長(cháng)的趨勢。
l 異步強同步復制:針對金融場(chǎng)景對數據強一致的需求,有效解決MySQL同步機制問(wèn)題,TDSQL結合中斷思路,實(shí)現了用戶(hù)線(xiàn)程異步化,當用戶(hù)線(xiàn)程執行到寫(xiě)binlog,將會(huì )話(huà)保存到session時(shí),就緊接著(zhù)異步去處理其他請求。這樣就能有效利用CPU資源,避免因等待備機應答而造成的線(xiàn)程阻塞,充分利用線(xiàn)程池中的線(xiàn)程。目前,對于OLTP類(lèi)事務(wù),TDSQL強同步復制性能(TPS/QPS)已與異步復制模式已無(wú)差別。同樣,在OLTP RW(讀寫(xiě)混合,主從架構),且開(kāi)啟強同步場(chǎng)景(MySQL 5.7為異步),相較于社區版mysql5.7,性能提升約1.2倍。
l
為進(jìn)一步驗證強同步數據一致性,我們在每秒插入2萬(wàn)行數據的場(chǎng)景下,直接殺掉主機數據庫進(jìn)程,并在切換備機后導出流水做對比,發(fā)現數據完全一致。
硬件與軟件的強強結合,充分發(fā)揮數據庫性能
此次測試,英特爾?為騰訊云提供了英特爾? 至強? 可擴展處理器、英特爾? 傲騰* 固態(tài)盤(pán)產(chǎn)品等先進(jìn)產(chǎn)品。依托這些先進(jìn)產(chǎn)品的優(yōu)秀表現,在另一項針對數據庫讀寫(xiě)性能的測評中,與上一代機型相比,英特爾? 至強? 可擴展處理器與英特爾?傲騰* 固態(tài)盤(pán)產(chǎn)品使寫(xiě)性能提高3倍,峰值達到了109萬(wàn)TPS(Transactions Per Second,每秒事務(wù)數),讀性能提高4倍,峰值達到了286萬(wàn)QPS(Queries Per Second,每秒查詢(xún)率)。
通過(guò)以上性能數據我們可以看出,TDSQL在高并發(fā)場(chǎng)景下的良好表現,可以輕松支撐起億級用戶(hù)的訪(fǎng)問(wèn)需求。而如果您追求兼容性,可選擇關(guān)系型數據庫(CDB )實(shí)例,如果您追求超高性能彈性擴展可選擇分布式數據庫(DCDB)。當前,基于TDSQL的騰訊金融云已在眾多金融領(lǐng)域關(guān)鍵業(yè)務(wù)場(chǎng)景獲得廣泛應用,已成為國內提供金融科技服務(wù)最重要的平臺之一。
附錄
實(shí)測的硬件/操作系統配置如下。
指標 型號 CPU Intel(R) Xeon(R) Platinum 8164 CPU @ 2.00GHz 4*26 cores 內存 512G 硬盤(pán) 英特爾?傲騰*固態(tài)盤(pán) 網(wǎng)卡 萬(wàn)兆網(wǎng)卡 Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 OSCentOS 7.3 3.10.0-514.21.2.el7.x86_64
性能測試工具及用例采用sysbench OLTP。相關(guān)命令行參數如下。
OLAP POINT SELECT
LD_PRELOAD=/usr/lib64/libjemalloc.so ./src/sysbench
--num-threads=1024 --test=./tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000
--oltp-dist-type=uniform --max-requests=0 --max-time=900
--mysql-socket=/root/prod/mysql.sock --mysql-user=root --mysql-password=123456
--mysql-db=sbtest --mysql-table-engine=INNODB --db-driver=mysql
--oltp-point-selects=1 --oltp-simple-ranges=0 --oltp-sum-ranges=0
--oltp-order-ranges=0 --oltp-distinct-ranges=0 --oltp-skip-trx=on
--oltp-read-only=on --oltp_tables_count=8 --percentile=99 --report-interval=1 run
OLTP RW
LD_PRELOAD=/usr/lib64/libjemalloc.so ./src/sysbench --num-threads=1024
--test=./tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000
--oltp-dist-type=uniform --max-requests=0 --max-time=900
--mysql-socket=/root/ prod/mysql.sock --mysql-user=root --mysql-password=123456
--mysql-db=sbtest --mysql-table-engine=INNODB
--db-driver=mysql --oltp-point-selects=1 --oltp-simple-ranges=0 --oltp-sum-ranges=0
--oltp-order-ranges=0 --oltp-distinct-ranges=0 --oltp-skip-trx=on --oltp-read-only=off
--oltp_tables_count=8 --oltp-index-updates=1 --oltp-non-index-updates=0
--percentile=99 --report-interval=1 run
強同步測試用例方案參考。相關(guān)命令行參數如下。
1,準備100萬(wàn)測試數據,數據要求為有序流水數據,有自增主鍵的表,如下表語(yǔ)句
create table cdat
(
seq INT(20),
id INT(20) not null AUTO_INCREMENT,
primary key (id)
);
2,模擬2萬(wàn)行/秒插入數據,確保TDSQL強同步開(kāi)啟,采用一主二從架構。
3,插入數據過(guò)程中,模擬主機故障(如殺掉mysql進(jìn)程,或直接拔網(wǎng)線(xiàn))。
3,切換備機后導出流水,自增主鍵與有序流水保持一致($1為自增序列,$2mysql自增主鍵),第一行的seq與插入順序強一致。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站