女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TDSQL是如何滿足了金融級場景的數據庫要求

1ujk_Tencent_TE ? 來源:騰訊技術工程官方號 ? 2019-12-08 10:54 ? 次閱讀

2014年:基于分布式的基礎架構

微眾銀行在2014年成立之時,就非常有前瞻性的確立了微眾銀行的IT基礎架構的方向:摒棄傳統的基于商業IT產品的集中架構模式,走互聯網模式的分布式架構。眾所周知,傳統銀行IT架構體系非常依賴于傳統的商業數據庫,商業存儲以及大中型服務器設備,每年也需要巨大的IT費用去維護和升級,同時這種集中式的架構,也不便于進行高效的實現水平擴展。從過往經驗來看,當時除了oracle等少數傳統的商業數據庫,能滿足金融級銀行場景的數據庫產品并不多。當時騰訊有一款金融級的分布式數據庫產品TDSQL,主要承載騰訊內部的計費和支付業務,其業務場景和對數據庫的可靠性要求,和銀行場景非常類似,同時也經受了騰訊海量計費業務場景的驗證。微眾銀行基礎架構團隊,經過多輪的評估和測試,最終確定和騰訊TDSQL團隊合作,共同將TDSQL打造為適合銀行核心場景使用的金融級分布式數據庫產品,并將TDSQL用于微眾銀行的核心系統數據庫。

Why TDSQL?

為什么會選用TDSQL,作為微眾銀行的核心數據庫呢?本章節將會詳細介紹TDSQL架構、以及TDSQL的核心特性,看看TDSQL是如何滿足了金融級場景的數據庫要求。

TDSQL架構介紹

TDSQL是基于MySQL/Mariadb社區版本打造的一款金融級分布式數據庫集群方案。在內核層面,TDSQL針對MySQL 社區版本和Mariadb 社區版本的內核,在復制模塊做了系統級優化,使得其具備主備副本數據強一致同步的特性,極大提升了數據安全性,同時相對原生的半同步復制機制,TDSQL強一致復制的性能也有極大提升。

TDSQL集成了TDSQL Agent、TDSQL SQLEngineSQLEngine、TDSQL Scheduler等多個模塊,實現了讀寫分離、AutoSharding、自動主備強一致性切換、自動故障修復、實時監控、實時冷備等一系列功能。TDSQL架構模型如圖1所示:

圖1 TDSQL架構模型與SET模型

我們可以從橫向和縱向兩個維度來理解TDSQL的架構。

橫向是TDSQL的請求處理路徑,請過通過APP發出,經過負載均衡模塊,轉發到TDSQL SQLEngine集群;TDSQL SQLEngine收到請求后,進行請求解析,然后轉發到set單元內的數據庫實例節點上(寫請求到master,讀請求可以到master或slave);數據庫實例處理好請求后,回包給TDSQL SQLEngine,TDSQL SQLEngine再通過負載均衡模塊回包給app。

縱向是TDSQL集群的管理路徑:TDSQL的一個管理單元稱為一個set,每個set單元的每個數據庫實例上,都會部署一個TDSQL Agent模塊。Agent模塊會收集所在數據庫實例的所有監控信息(包括節點主備角色信息/節點存活狀態/請求量/TPS/CPU負載/IO負載/慢查詢/連接數/容量使用率等等),上報到zookeeper集群;zookeeper相當于整個TDSQL集群元數據存儲管理中心,保存了集群所有元數據信息;TDSQL Scheduler模塊會監控zookeeper的所存儲的上報信息,并根據集群狀態啟動不同的調度任務,相當于TDSQL集群的大腦,負責整個集群的管理和調度。

TDSQL noshard與shard模式

TDSQL提供了noshard與shard兩種使用模式,如圖2所示。

所謂noshard模式,就是單實例模式,不做自動的分庫分表,在語法和功能上完全兼容于MySQL,缺點是只支持垂直擴容,這會受限于單實例服務器的性能和容量上限,無法進行水平擴展。

Shard模式即AutoSharding模式。通過TDSQL SQLEngine模塊,實現數據庫的Sharding和分布式事務功能,底層的數據打散在多個數據庫實例上,對應用層還是統一的單庫視圖。Shard模式可以實現容量和性能的水平擴展,通過兩階段XA支持分布式事務和各種關聯操作,但是目前還不支持存儲過程,同時在建表的時候需要業務指定shard key,對部分業務開發來說覺得會有一定的侵入性 。

圖2 TDSQL noshard與shard模式

微眾銀行當時在做系統架構的時候充分考慮了是采用shard版本的純分布式數據庫還是從應用層的角度來做分布式,通過大量的調研分析,最終覺得采用應用做分布式是最可控,最安全,最靈活,最可擴展的模式,從而設計了基于DCN的分布式可擴展架構,通過在應用層做水平拆分,數據庫采用TDSQL noshard模式,保證了數據庫架構的簡潔性和業務層兼容性,這個后面會詳述。

主備強一致切換與秒級恢復

TDSQL通過針對mysql內核源碼的定制級優化,實現真正意義上的多副本強一致性復制,通過主備部署模式,可以實現RPO=0,即數據0丟失,這對于金融場景是至關重要也是最基礎的要求;同時基于TDSQL Agent和Scheduler等模塊,也實現了自動化的主備強一致切換,在30秒內可以完成整個主備切換流程,實現故障RTO的秒級恢復。

Watch節點模式

TDSQL slave節點提供了兩種角色,一種是follower節點,一種是watch節點。Fllower節點與watch節點都從master節點實時同步數據,但watch節點不參與主備選舉和主備切換,只作為觀察者同步數據。Follower節點和watch節點的角色可以在線實時調整。

自動化監控與運維

TDSQL配套提供了赤兔管理平臺系統,來支持整個TDSQL集群的可視化、自動化的監控和運維功能。如圖3所示,為TDSQL赤兔管理平臺的運行界面。

圖3 TDSQL赤兔管理平臺

通過TDSQL赤兔管理平臺,可以實現監控數據的采集與顯示,告警和策略配置,日常運維操作(主備切換,節點替換,配置更改等),數據庫備份與恢復,慢查詢分析,性能分析等一系列功能,極大的提升了運維效率和運維準確性。

基于以上的TDSQL的架構和特性,我們認為TDSQL很好了滿足金融業務場景中對數據庫的高可用、高可靠、可運維的要求,同時基于MySQL和X86的軟硬件平臺,也能極大的降低數據庫層面的IT成本,從而極大降低戶均成本,非常適用互聯網時代的新一代銀行架構。

基于DCN的分布式擴展架構

前文提到,微眾銀行為了實現業務規模的水平擴展,設計了基于DCN的分布式可擴展架構,從而即實現了擴展性,也保證了數據庫層面架構以的簡潔性。

DCN,即Data Center Node(數據中心節點),是一個邏輯區域概念,DCN是一個自包含單位,包括了完整的應用層,接入層和數據庫庫。可以通俗的理解為,一個DCN,即為一個微眾銀行的線上的虛擬分行,這個虛擬分行只承載微眾銀行某個業務的一部分客戶。通過一定的路由規則(比如帳戶號分段),將不同的客戶劃分到不同的DCN內。一旦某個DCN所承載的客戶數達到規定的上限,那么這個DCN將不再增加新的客戶。這時通過部署新的DCN,來實現容量的水平擴展,保證業務的持續快速發展。

不同的客戶保存在不同的DCN,那么就需要有一個系統來保留全局的路由信息,記錄某個客戶到底在哪個DCN,這個系統就是GNS(Global Name Service),應用模塊會先請求GNS,拿到對應客戶的DCN信息,然后再去請求對應的DCN。GNS使用了redis緩存,以保證較高的查詢QPS性能,同時采用TDSQL做持久化存儲,以保證數據的安全性。

RMB(Reliable Message Bug),可靠消息總線,是DCN架構的另一個核心模塊,主要負責各個業務系統之間高效、準確、快速的消息通信。DCN的整體架構如圖4所示

圖4 DCN架構模型

微眾銀行IDC架構

有了基于DCN的基礎架構模型,下一步就是基礎物理環境的建設。微眾銀行經過4年多的發展,目前已發展成為兩地六中心的架構,如圖5所示:

圖5 微眾銀行IDC架構

其中兩地位于深圳和上海,深圳作為生產中心,在深圳同城有5個IDC機房,上海作為跨城異地容災,有1個IDC機房。深圳5個同城IDC,通過多條專線兩兩互聯,保證極高的網絡質量和帶寬,同時任何兩個IDC之間的距離控制在10~50公里左右,以保證機房間的網絡ping延遲控制在2ms左右。這一點非常重要,是實現TDSQL同城跨IDC部署的前提。

基于TDSQL的同城應用多活

基于以上的 DCN 架構和 IDC 架構,我們設計了TDSQL數據庫在微眾銀行的部署架構。如圖6所示:

圖6 微眾銀行基于TDSQL的同城多活架構

我們采用同城3副本+跨城2副本的3+2 noshard部署模式。同城3副本為1主2備,分別部署同城的3個IDC中,副本之間采用TDSQL強一致同步,保證同城3 IDC之間的RPO=0,RTO秒級恢復。跨城的2副本通過同城的一個slave進行異步復制,實現跨城的數據容災。基于以上架構,我們在同城可以做到應用多活,即聯機的業務流量,可以同時從3個IDC接入,任何一個IDC故障不可用,都可以保證數據0丟失,同時在秒級內可以恢復數據庫服務。

在同一IDC內,服務器之間的ping延遲通常在0.1ms以內,而同城跨IDC之間服務器的ping延遲會大大增加,那是否會影響TDSQL主備強同步的性能呢?另外IDC之間的網絡穩定性能否保證呢?我們通過以下幾個措施來消除或者規避這個問題。

首先,在基礎設施層面,我們會保證同城的三個IDC之間的距離控制在10~50公里左右,控制網絡延遲在2ms左右;同時在IDC之間建設多條專線,保證網絡傳輸的質量和穩定性;其次,TDSQL針對這種跨IDC強同步的場景,作了大量的內核級優化,比如采用隊列異步化,以及并發復制等技術。通過基準測試表明,跨IDC強同步對聯機OLTP的性能影響僅在10%左右。

從我們實際生產運營情況來看,這種同城跨IDC的部署模式,對于聯機OLTP業務的性能影響,完全是可以接受的,但對于集中批量的場景,因為累積效應,可能最終會對批量的完成時效產生較大影響。如果批量APP需要跨IDC訪問數據庫,那么整個批量期間每次訪問數據庫的網絡延遲都會被不斷累積放大,最終會嚴重影響跑批效率。為了解決這個問題,我們利用了TDSQL的watch節點的機制,針對參與跑批的TDSQL SET,我們在原來一主兩備的基礎上,額外部署了一個與主節點同IDC的WATCH節點,同時保證批量APP與主節點部署在同一APP。如圖7所示:

圖7 TDSQL帶WATCH節點的部署模式

WATCH節點與主節點同IDC部署,從主節點異步同步數據。因為是WATCH節點是異步同步,所以主節點的binlog會確保同步到跨IDC的另外兩個備節點事務才算成功,這樣即使主節點所在的IDC整個宕掉,仍能保證數據的完整性,不會影響IDC容災特性。當主節點發生故障時,scheduler模塊對對比watch節點和其他2個強同步備機的數據一致性,如果發現watch節點的數據跟另外2個idc數據一樣新(這是常態,因為同IDC一般都比跨IDC快),則優先會將這個watch節點提升為主機。這就保證了批量APP與數據庫主節節點盡量處于同一個IDC,避免了跨IDC訪問帶來的時延影響。

通過以上部署架構,我們實現了同城跨IDC級別的高可用,以及同城跨IDC的應用多活,極大提升了微眾銀行基礎架構的整體可用性與可靠性。

TDSQL集群規模

微眾銀行成立4年多以來,業務迅速發展,目前有效客戶數已過億級,微粒貸,微業貸等也成為行業的明星產品。在業務規模迅速增長的過程中,我們的數據庫規模也在不斷的增長。當前微眾銀行的TDSQL SET個數已達350+(生產+容災),數據庫實例個數已達到1700+, 整體數據規模已達到PB級,承載了微眾銀行數百個核心系統。在以往的業務高峰中,最高達到日3.6億+的金融交易量,最高的TPS也達到了10萬+。如圖8所示:

圖8 微眾銀行TDSQL業務規模

在過去4年多的運營中,TDSQL也從未出現過大的系統故障,或者數據安全問題,同時基于TDSQL的X86的軟硬件架構,幫助微眾銀行極大的降低IT戶均成本,極大提升了微眾銀行的行業競爭力。微眾銀行通過實踐證明,TDSQL作為金融級的核心數據庫,是完全勝任的。

微眾銀行數據庫現狀及未來發展

目前,TDSQL承載了微眾銀行99%以上線上數據庫業務,同時我行也大量采用了redis作為緩存,以解決秒殺,搶購等熱點場景,另外還有少量的mongodb滿足文檔類的存儲需求。同時我行從去年開始,也嘗試引入了NEWSQL數據庫TiDB,解決少部分無法拆分DCN,但同時又對單庫存儲容量或吞吐量有超大需求的業務場景。整體來看,我行目前的數據庫主要有TDSQL,TIDB以及Redis/MongoDB,TDSQL主要承載核心系統業務 ,TIDB作為補充解決單庫需要超大容量或超大吞吐量的非聯機業務需求,Reids和MongoDB則主要是提供緩存及文檔型的存儲。

當然我們并不會止步于此,微眾銀行數據庫團隊和騰訊云TDSQL團隊未來會有更加深入的合作。比如我們和騰訊云TDSQL團隊合作的TDSQL智能運維-扁鵲項目,目前已在微眾銀行灰度上線,可以實時分析TDSQL的運行狀態和性能問題,是提升運維效率的利器。我們和也在和TDSQL研發團隊共同調研和評估MySQL 8.0版本,以及MySQL基于MGR的高可用功能,未來可能會嘗試將MySQL 8.0和MGR集成到TDSQL系統中,并嘗試在銀行核心系統中試用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3903

    瀏覽量

    65816
  • 金融
    +關注

    關注

    3

    文章

    455

    瀏覽量

    16150
  • tdsql
    +關注

    關注

    0

    文章

    2

    瀏覽量

    3489

原文標題:TDSQL在微眾銀行的大規模實踐之路

文章出處:【微信號:Tencent_TEG,微信公眾號:騰訊技術工程官方號】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    SQLSERVER數據庫是什么

    SQL Server 是由微軟公司開發的一款 關系型數據庫管理系統(RDBMS) ,用于存儲、管理和檢索結構化數據。它是企業應用中廣泛使用的數據庫解決方案之一,尤其適用于Window
    的頭像 發表于 05-26 09:19 ?215次閱讀

    MySQL數據庫是什么

    開發、企業應用和大數據場景。以下是其核心特性和應用場景的詳細說明: 核心特性 關系型數據庫模型 數據以 表(Table) 形式組織,表由行(
    的頭像 發表于 05-23 09:18 ?230次閱讀

    數據庫數據恢復——MongoDB數據庫文件拷貝后服務無法啟動的數據恢復

    MongoDB數據庫數據恢復環境: 一臺Windows Server操作系統虛擬機上部署MongoDB數據庫。 MongoDB數據庫故障: 管理員在未關閉MongoDB服務的
    的頭像 發表于 04-09 11:34 ?235次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復——MongoDB<b class='flag-5'>數據庫</b>文件拷貝后服務無法啟動的<b class='flag-5'>數據</b>恢復

    數據庫數據恢復—SQL Server附加數據庫提示“錯誤 823”的數據恢復案例

    SQL Server數據庫附加數據庫過程中比較常見的報錯是“錯誤 823”,附加數據庫失敗。 如果數據庫有備份則只需還原備份即可。但是如果沒有備份,備份時間太久,或者其他原因導致備份
    的頭像 發表于 02-28 11:38 ?414次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server附加<b class='flag-5'>數據庫</b>提示“錯誤 823”的<b class='flag-5'>數據</b>恢復案例

    MySQL數據庫的安裝

    MySQL數據庫的安裝 【一】各種數據庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介紹
    的頭像 發表于 01-14 11:25 ?500次閱讀
    MySQL<b class='flag-5'>數據庫</b>的安裝

    數據庫是哪種數據庫類型?

    數據庫是一種部署在虛擬計算環境中的數據庫,它融合云計算的彈性和可擴展性,為用戶提供高效、靈活的數據庫服務。云數據庫主要分為兩大類:關系型
    的頭像 發表于 01-07 10:22 ?418次閱讀

    數據庫數據恢復—Mysql數據庫表記錄丟失的數據恢復流程

    Mysql數據庫故障: Mysql數據庫表記錄丟失。 Mysql數據庫故障表現: 1、Mysql數據庫表中無任何數據或只有部分
    的頭像 發表于 12-16 11:05 ?533次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—Mysql<b class='flag-5'>數據庫</b>表記錄丟失的<b class='flag-5'>數據</b>恢復流程

    數據庫數據恢復—MYSQL數據庫ibdata1文件損壞的數據恢復案例

    mysql數據庫故障: mysql數據庫文件ibdata1、MYI、MYD損壞。 故障表現:1、數據庫無法進行查詢等操作;2、使用mysqlcheck和myisamchk無法修復數據庫
    的頭像 發表于 12-09 11:05 ?535次閱讀

    多維表格數據庫Teable的適用場景

    Teable多維表格數據庫是一款功能強大的云端數據庫和協作工具,結合電子表格的靈活性和數據庫的強大功能,適用企業內部項目管理 數據收集與整
    的頭像 發表于 10-31 15:48 ?711次閱讀

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    一個運行在存儲上的SQLServer數據庫,有1000多個文件,大小幾十TB。數據庫每10天生成一個NDF文件,每個NDF幾百GB大小。數據庫包含兩個LDF文件。 存儲損壞,數據庫
    的頭像 發表于 10-31 13:21 ?618次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>

    Oracle數據恢復—異常斷電后Oracle數據庫報錯的數據恢復案例

    Oracle數據庫故障: 機房異常斷電后,Oracle數據庫報錯:“system01.dbf需要更多的恢復來保持一致性,數據庫無法打開”。數據
    的頭像 發表于 09-30 13:31 ?657次閱讀
    Oracle<b class='flag-5'>數據</b>恢復—異常斷電后Oracle<b class='flag-5'>數據庫</b>啟<b class='flag-5'>庫</b>報錯的<b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

    SQL Server數據庫故障: SQL Server附加數據庫出現錯誤823,附加數據庫失敗。數據庫沒有備份,無法通過備份恢復數據庫
    的頭像 發表于 09-20 11:46 ?638次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—SQL Server<b class='flag-5'>數據庫</b>出現823錯誤的<b class='flag-5'>數據</b>恢復案例

    基于WDS證券行業建設金融信創云承載數據庫類關鍵應用

    基于WDS證券行業建設金融信創云承載數據庫類關鍵應用
    的頭像 發表于 09-03 10:07 ?451次閱讀
    基于WDS證券行業建設<b class='flag-5'>金融</b>信創云承載<b class='flag-5'>數據庫</b>類關鍵應用

    基于分布式存儲WDS的金融信創云承載數據庫類關鍵應用

    基于分布式存儲WDS的金融信創云承載數據庫類關鍵應用
    的頭像 發表于 08-16 09:42 ?517次閱讀
    基于分布式存儲WDS的<b class='flag-5'>金融</b>信創云承載<b class='flag-5'>數據庫</b>類關鍵應用

    數據庫安全審計系統:滿足數據安全治理合規要求

    、等級保護、業務連續性安全和大數據安全產品解決方案與相關技術研究開發的領軍企業——國聯易安自主研發的數據庫安全審計系統,可以幫助政府、企事業單位在重要會議和活動期間滿足數據安全治理合規要求
    的頭像 發表于 07-04 13:04 ?516次閱讀