1. 程式人生 > 其它 >TDSQL:從自主可控金融級資料庫看騰訊“智慧+”技術中臺之路

TDSQL:從自主可控金融級資料庫看騰訊“智慧+”技術中臺之路

作為“網際網路+”和“智慧+”的主要技術供應商,騰訊提出了“雲化”已經成為重要的創新模式,各行各業都將進入“網際網路+”的下一站——“智慧+”階段。在此過程中,騰訊雲將充分發揮“聯結器”的作用,用“智慧”連線各行各業。

2019年,3月12日,騰訊雲全新發布自主可控金融業務支撐平臺,該平臺融合了可支撐數百萬虛機的專有云平臺TCE、服務過380億賬戶的分散式資料庫TDSQL,以及在騰訊海量業務場景淬鍊出來的微服務平臺TSF、大資料及人工智慧平臺TBDS&Ti等在內的優勢能力,幫助金融機構打造自主可控,安全穩定的金融雲平臺。

騰訊雲這套自主可控金融業務支撐平臺最顯著的特點是以主流開放開源技術標準為核心,降低金融機構在基礎設施及應用場景中對單一技術方的過度依賴,為行業提供一站式技術服務能力。其中的TCE和TDSQL支援國產晶片及作業系統部署,是自主可控的“智慧+”技術中臺。國內首家雲上銀行微眾銀行在騰訊金融雲的自主可控核心技術上構建了全行級分散式技術架構,實現了可支撐億量級客戶的高併發交易核心系統,截止2017末累計向1200萬人線上發放貸款8700億,貸款不良率為0.64%、低於銀行業平均水平,是普惠金融的代表。

TDSQL金融級分散式資料庫是騰訊雲基於開源和自研的分散式技術代表,其領先的產品效能、自主可控的核心特性以及完備的產品化體系,充分打消了國內金融行業擁抱開源技術時對可持續性、開發和運維能力以及安全等問題上的顧慮。作為騰訊雲自主可控金融業務支撐平臺的核心技術代表,TDSQL在騰訊內部支撐計費及金融業務日均交易量超10億次,充分體現了騰訊的“智慧+”技術中臺特色。2018年11月,TDSQL以總成績第一,成為了首批通過資料中心聯盟金融分散式事務資料庫評測的資料庫產品。

騰訊雲資料庫技術發展歷程

作業系統、資料庫和中介軟體是三大企業級基礎軟體,任何一款基礎軟體產品必須經過多年的沉澱,資料庫也不例外。在3月12日騰訊雲舉辦的自主可控金融業務支撐平臺釋出會現場,騰訊雲資料庫產品總監王義成和騰訊雲分散式資料庫TDSQL負責人潘安群給我們分享了騰訊雲資料庫的自主可控發展之路。

騰訊雲金融級分散式資料庫是一套完整的體系,包括核心功能以及運營配套服務,可滿足當前金融行業對於資料的分散式和高一致性需求。

TDSQL架構圖

TDSQL的萌芽階段在2002年左右,也是騰訊首次接觸計費的時候。此前,由於QQ業務的關係,騰訊以Key Value非關係型NoSQL開源資料庫為主,NoSQL資料庫主要針對網際網路和遊戲的海量網頁檔案儲存等業務場景。因此,騰訊歷史上也沒有采用過Oracle等商用資料庫,而是從一開始就採用開源資料庫。

到了2007年左右,騰訊計費業務的規模日益變大,Q幣等資料資產要像銀行那樣不能丟失資料,對高一致性和可靠性的要求越來越高。騰訊在2007年的時候開發了一款完全自研的簡化版分散式資料庫,當時很好地滿足了騰訊業務的發展。當時的騰訊資料庫技術在保證了資料高可靠性、一致性的情況下,還可以快速地進行水平分散式擴充套件。

2009年騰訊正式開放平臺,大量的新客戶和新業務場景湧入,實現了騰訊第二次騰飛的同時,也對資料庫技術產生了新的要求。2009年那一年,騰訊僅計費業務一年對資料庫進行了近900次擴容,很好的支援了業務的快速增長。

2012年,隨著騰訊開放平臺和技術的發展,從最開始的遊戲業務到各行各業的應用,騰訊發現有很多場景是之前沒有考慮到,而且之前的資料庫是基於騰訊業務場景的定製化解決方案,無法滿足更多的合作伙伴訴求,當時的金融業務對關係型資料庫的要求比較高,騰訊當時考慮到業務的規模越來越大而導致要求系統的水平擴充套件能力,最終決定在開源技術上自研的道路。2012年,騰訊啟動TDSQL,希望在高可靠性、高一致性的前提下,做到更加通用化、適用更多的業務場景,也就是瞄準Oracle或DB2這樣的通用關係型資料庫產品。

兩年後,2014年微眾銀行開始籌建,在調研了國內外分散式關係型資料庫之後,認為騰訊TDSQL最能滿足自主可控以及銀行業務需求。2015年,TDSQL在騰訊公有云上線,2016年推出了面向專有云的版本,到2018年TDSQL已經服務超過500家的公有云客戶和28家的專有云客戶。

本次騰訊雲自主可控金融業務支撐平臺釋出,TDSQL也新發布了1.13版本,效能較上一版提升了80%,同時完全支援國產化作業系統、晶片和伺服器,使得核心資料庫平臺的可控性達到新的高度。基於MySQL以及MariaDB開源關係型資料庫技術的TDSQL,讓騰訊雲以及國內金融行業使用者可以跟進未來的業務發展趨勢,做到超前的自主可控。

除了面向私有云版本的TDSQL外,騰訊雲還在公有云上提供了分散式資料庫服務CynosDB,基於共同的分散式金融級資料庫技術,滿足金融機構的多種需求。

高度產品化的TDSQL

TDSQL是騰訊雲在開源關係型資料庫MySQL、MariaDB以及Percona基礎之上的綜合自研資料庫解決方案。在全球資料庫排行榜DB-Engines上,MySQL是全球排名第一的開源關係型資料庫,MariaDB和Percona都是MySQL的可替代分支改進版本,其中MariaDB全球排名12左右、PerconaServer for MySQL排名90左右,這二者對MySQL有著各自的改進。

TDSQL全稱為TencentDistributed SQL,是騰訊雲資料庫團隊維護的金融級分散式架構和MySQL核心分支的統稱,騰訊90%的金融、計費、交易類業務核心系統都承載在TDSQL 中,也應用到眾多政府、銀行、保險、製造業、物流、電商等客戶的核心繫統。TDSQL可以交付關係型資料庫、分散式資料庫、分析型資料庫等形態的資料庫技術,也提供強同步資料複製、執行緒池、熱點更新、核心優化等能力,以及事前、事中、事後的全維度安全方案等。

TDSQL相容絕大多數常用的MySQL語法,通過分散式事務、全域性唯一序列、支援資料交換格式JSON等有效彌補了分散式架構的不足,解決了因分散式架構而導致的資料庫高階功能與資料庫效能之間的矛盾。TDSQL深度定製開發了MySQL核心,例如:支援三種資料讀寫分離方案,以有效實現讀資料的水平規模擴充套件;自研了基於MySQL協議的非同步多執行緒強同步複製方案,在保證資料強一致的同時,做到自動化管理叢集節點、每個節點可隨時切換、無需共享儲存裝置;對業務層的無感知、無侵入,通過邏輯表遮蔽了物理層的資料處理,業務層無需做任何改變,在資料庫層就能實現強一致、讀寫分離等功能,從而達到高度產品化。

作為支援金融級核心交易業務場景的資料庫,TDSQL也是MPP大規模並行處理架構,其分散式架構中的每個分片都各自承擔部分分散式任務,從而實現大規模的併發效能、處理能力和支援儲存容量的線性增長。TDSQL進行了多種系統核心計算負載優化,通過sysbench的壓力測試可達到單個分佈純寫入操作超過12萬+TPS(每秒交易處理量)、純查詢操作效能超過48萬QPS(每秒查詢率),效能是當前主要使用的MySQL 5.6版的4倍、5.7版本的2倍以上。

TDSQL的核心模組主要包括:排程叢集(Tschedule)、物理節點組(SET)和接入閘道器叢集(OLTP-Proxy)、決策叢集(TzooKeeper)以及赤兔自動化運維平臺。TDSQL支援線上實時擴容,採用騰訊自研的自動再均衡技術以保證自動化的穩定擴容,無需業務停機,並經過騰訊內外部海量業務遷移實踐。在支援金融級高可用性方面,傳統金融機構都要求兩地三中心架構,而在騰訊內部的金融業務方面很早就實現兩地四中心,即同城三中心多活的架構,達到更高可用性和更低成本。

騰訊雲TDSQL資料庫有很多管理模組,可以更好的方式管理資料庫,達到國際資料庫產品水準。打包在TDSQL產品中的赤兔自動化運維平臺,讓80%-90%的資料庫運維操作都能夠通過外部網頁介面完成,就像使用公有云的體驗一樣,降低了客戶的使用門檻,不需要掌握大量知識就能運維TDSQL資料庫。

在資料庫故障檢測方面,TDSQL專門積累了騰訊十多年來超過20億資料庫例項運維的專家知識庫,以智慧DBA的方式提供給客戶,能在故障檢測和維護時做到快速定位問題、以高效和高可用方式解決問題。

運營管理是大部分國產資料庫產品化時容易忽略的方面。資料庫的核心功能再強,但也要讓客戶使用起來。以前國產資料庫往往交付給客戶十幾頁到幾十頁的使用手冊,而赤兔自動化運維平臺則一鍵就可以搞掂資料庫運維,不需要太複雜的命令和操作,誤操作的可能性非常小。另外,赤兔自動化運維平臺也是開放架構,可以與企業內部的OA系統、許可權管理系統等打通,實現審批流操作等,對銀行來說達到更高的系統可控性。

除了自動化運維外,騰訊雲還將在2019年釋出TDSQL認證體系,未來將對合作夥伴進行資質認證。通過廣大認證的合作伙伴,讓客戶在實施交付資料庫的時候更加放心,推進產品化的服務體系。

走過了那些坑兒

騰訊雲資料庫產品總監王義成介紹,在做TDSQL研發的初期,當業務壓力來臨撐不住的時候就要做讀寫分離,讀寫分離之後發現賬單業務的讀延遲比較大,導致大量的業務部門投訴,因為有延遲就相當於錢上的損失,當時想倒逼業務層面做容錯,但業務部門認為應該由資料庫負責,因此就反逼資料庫花了很長時間開發MySQL開源社群裡沒有的功能,“逼著我們往前看”。

經過長時間的積累,騰訊資料庫運維人員逐漸理解了就算資料庫技術再好,也要讓業務層無感知,即壓力在資料庫技術核心層面解決後,讓業務可簡單接入。而在效能方面,因為騰訊的海量業務場景,即使效能優化10%、硬體成本降低10%,一年可能就是幾千萬、上億的成本節省。TDSQL在效能方面“摳”了很多點,在儲存、引擎、效能等方面的優化,降低成本的同時,確保滿足金融行業需求。

當時的騰訊資料庫運維人員有一個目標叫做安心喝咖啡,即底層技術運維人員不再擔心半夜被叫起來處理故障。“以前騰訊有同學就說,游泳都不敢去,因為游泳時手機不能放在身邊,手機也不能防水,當時也沒有手環。”後來,故障處理多了,就知道突發流量對資料庫的要求是什麼,怎樣才能滿足幾十倍峰值流量的衝擊。潘安群表示,現在整個騰訊的資料庫產品和運營體系都很完善,實現了故障的秒級自動切換,運維人員收到告警也不需要像以前那麼急,多睡一會兒也沒有關係,只需要起來的時候看一下故障原因再分析就可以了。

值得一提的是,最開始基於MySQL開發適應金融場景的TDSQL時,那個時候的MySQL在資料複製上其實不具備金融級要求,TDSQL在資料強一致複製等方面進行了大量的自研創新。TDSQL的水平伸縮功能也經歷了幾個版本,最開始在實際運營過程中並不太穩定,TDSQL團隊進行了徹底的效能優化,最終滿足騰訊海量業務場景的要求。在Oracle比較擅長的ACID金融交易事務處理方面,TDSQL開發了分散式事務處理,為了保障在故障時的交易事務成功,TDSQL團隊7X24不停執行自我破壞性模擬,包括機房斷電、宕機等異常,確保銀行轉帳等交易事務的健壯性。

總體而言,騰訊分散式資料庫TDSQL在設計理念上,對MySQL等開源資料庫的高度相容,實現在分散式架構下資料強一致性、高可用以及水平擴充套件,是高度產品化的開源自研分散式金融級資料庫產品。騰訊金融雲總經理胡利明強調,包括TDSQL在內的騰訊雲金融業務支撐平臺,降低了金融機構在基礎設施及應用場景中對單一技術方的過度依賴,為行業提供一站式技術服務能力。

“到去年2018年底為止,騰訊申請的專利數達到25000,在全世界的網際網路公司當中排名第二,僅次於谷歌,其中AI的專利達到了3000個。在雲端計算領域申請通過的專利數,也在國內網際網路公司中排名第一,同時在雲端計算最核心的虛擬化領域,騰訊在開源社群的程式碼貢獻在國內雲廠商中連續兩年排名第一。”胡利明強調,騰訊2014年幫助微眾銀行構建了第一家全行分散式架構系統,“當時引起了很大的轟動,為國內銀行業自主可控轉型提供了強心劑”。

從TDSQL的開發歷程中,可以看出騰訊“智慧+”技術中臺之路:開源+自研的高度產品化,發揮騰訊的產品化基因,以開源生態和開源技術為聯結器,廣泛連線企業級技術和客戶,實現企業級“數字生態共同體”,從而成為自主可控“智慧+”的基石。