摘要:臨近年中,銀行重要系統(tǒng)的建設(shè)進(jìn)入投產(chǎn)沖刺階段,本次上線又有多個(gè)系統(tǒng)對(duì)接,為了優(yōu)化集群資源分配,引發(fā)了這次分享的主題線上系統(tǒng)的縮容的遷移,本文主要針對(duì)本次的縮容遷移過(guò)程進(jìn)行梳理總結(jié)。
作者:Dan
本文轉(zhuǎn)載自公眾號(hào)「白噪聲OG」。
經(jīng)歷了上禮拜漫長(zhǎng)的上線周期,終于有時(shí)間總結(jié)一下期間發(fā)生的故事。TiDB 是一款非常優(yōu)秀的國(guó)產(chǎn)分布式 NewSQL 數(shù)據(jù)庫(kù),因其支持水平擴(kuò)展性、強(qiáng)一致性、高可用性,從 18 年 3 月起已在國(guó)內(nèi)銀行的賬務(wù)、支付類核心系統(tǒng)得到應(yīng)用。
臨近年中,銀行重要系統(tǒng)的建設(shè)進(jìn)入投產(chǎn)沖刺階段,本次上線又有多個(gè)系統(tǒng)對(duì)接 TiDB,為了優(yōu)化集群資源分配,引發(fā)了這次分享的主題——線上系統(tǒng) TiKV 的縮容、region 的遷移,本文主要針對(duì)本次 TiKV 的縮容、遷移過(guò)程進(jìn)行梳理總結(jié)。
TiDB 數(shù)據(jù)庫(kù)的擴(kuò)容已在官方文檔進(jìn)行了詳細(xì)的說(shuō)明(https://pingcap.com/docs-cn/op-guide/horizontal-scale/)并被各路大咖廣泛提及,但縮容遷移并在銀行交易系統(tǒng)上的實(shí)踐卻少有分享,這也是本文的目的之一。
進(jìn)入主題,先交代下環(huán)境,服務(wù)器集群采用 NVMe+SSD 的存儲(chǔ)方案構(gòu)建了 16 個(gè) TiKV 實(shí)例,作為重要的核心支付類系統(tǒng),兩地三中心五副本不可少,每個(gè) TiKV 上 8K+ 個(gè) region。整個(gè)遷移過(guò)程歷時(shí) 5 個(gè)小時(shí),過(guò)程中沒(méi)有停止系統(tǒng)對(duì)外服務(wù),很是順滑平穩(wěn)。
接下來(lái)還是看一下遷移的過(guò)程:
(一) TiKV 采用 Raft 一致性算法保證副本強(qiáng)一致性,遷移過(guò)程本質(zhì)上是擴(kuò)容的逆過(guò)程,確定下線的 TiKV 打上 label 后,將 region 搬移到最終保留下來(lái)的 TiKV 上。
(二) 接下來(lái)聚焦 region 1 的 Raft Group,對(duì)其副本進(jìn)行搬移,實(shí)際上所有 region 的數(shù)據(jù)是一樣的,只是在保留的 TiKV 內(nèi)進(jìn)行 region 數(shù)據(jù)的復(fù)制,新產(chǎn)生的副本由于數(shù)據(jù)不完整,作為 Raft Group 中的 learner。
(三) Learner 創(chuàng)建后,PD 會(huì)在這樣的一個(gè) Raft Group(5 個(gè)全副本 region + 2 個(gè) learner)中發(fā)起選舉:
選舉會(huì)增加 label 限制,確保 leader 最終在保留的 TiKV 中產(chǎn)生;
由于 learner 沒(méi)有投票權(quán),選舉實(shí)際還是個(gè) 5 副本選主,多數(shù)派 (N+1)/2 仍為 3。
(四) 這樣新的 leader 選出來(lái)了,當(dāng)兩個(gè)新副本數(shù)據(jù)追平后,將刪除下線 TiKV 中的 region。
(五) 這樣一個(gè)新的 5 副本 Raft Group 我們就獲得了。
這里再說(shuō)幾點(diǎn):
1. 磁盤 IO 對(duì)遷移的效率影響還是很大的,測(cè)試環(huán)境使用普通的 SAS 盤,在更高并發(fā)的條件下,耗時(shí)長(zhǎng)了很多。
2.(二)、(三)、(四)的過(guò)程并非原子化操作,當(dāng)然 learner 的數(shù)據(jù)本身也不具備一致性,但對(duì) raft 的改造最終要保證一致性,與 PingCAP 的開發(fā)同學(xué)確認(rèn)后,這些會(huì)在之后加入。
3. 我認(rèn)為最有意思,也最有意義的一點(diǎn),learner 的引入是本次遷移過(guò)程中非常巧妙的設(shè)計(jì),解決了數(shù)據(jù)不一致副本在選舉過(guò)程中的尷尬地位,而 learner 也是 Multi-Raft 協(xié)議中的重要角色,HTAP 引擎 TiFlash&TiSpark 也以此引入列存副本,非常期待?TiDB 3.0。
PS:本次上線的重頭戲 Cloud TiDB 在平穩(wěn)運(yùn)行后,希望有機(jī)會(huì)進(jìn)行總結(jié)分享。TiDB 自上線后實(shí)現(xiàn)了多次重要變更操作,均未暫停系統(tǒng)對(duì)外服務(wù),從一只開發(fā)狗的角度看 TiDB 在金融級(jí) NewSQL 數(shù)據(jù)庫(kù)的方向上的確投入了很多。
最后,感謝 PingCAP Gin 同學(xué)和研發(fā)大神們的支持,感謝運(yùn)維爸爸們直到凌晨 4 點(diǎn)的奮斗。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/18009.html
摘要:本文整理自于振華老師在上的演講實(shí)錄,演講主題為在銀行核心金融領(lǐng)域的研究與實(shí)踐。年月,我們投產(chǎn)了行業(yè)內(nèi)首個(gè)面向核心金融業(yè)務(wù)的分布式數(shù)據(jù)庫(kù),采用的是兩地三中心五副本的架構(gòu)模式。 作者介紹:于振華,北京銀行軟件開發(fā)部資深架構(gòu)師,長(zhǎng)期從事銀行核心系統(tǒng)研發(fā)、規(guī)劃,參與過(guò)多個(gè)核心信息系統(tǒng)建設(shè)工作,包括一、二代支付系統(tǒng)、第四代銀行核心系統(tǒng)建設(shè)、分布式核心系統(tǒng)建設(shè)等企業(yè)級(jí)項(xiàng)目工作。當(dāng)前主要研發(fā)方向集中...
摘要:作為一個(gè)開源的分布式數(shù)據(jù)庫(kù)產(chǎn)品,具有多副本強(qiáng)一致性的同時(shí)能夠根據(jù)業(yè)務(wù)需求非常方便的進(jìn)行彈性伸縮,并且擴(kuò)縮容期間對(duì)上層業(yè)務(wù)無(wú)感知。另外本身維護(hù)了數(shù)據(jù)多副本,這點(diǎn)和分布式文件系統(tǒng)的多副本是有重復(fù)的。 作者:鄧栓來(lái)源:細(xì)說(shuō)云計(jì)算 作為一款定位在 Cloud-native 的數(shù)據(jù)庫(kù),現(xiàn)如今 TiDB 在云整合上已取得了階段性的進(jìn)展。日前 Cloud TiDB 產(chǎn)品在 UCloud 平臺(tái)正式開啟...
閱讀 2703·2021-11-25 09:43
閱讀 2790·2021-11-04 16:09
閱讀 1783·2021-10-12 10:13
閱讀 932·2021-09-29 09:35
閱讀 937·2021-08-03 14:03
閱讀 1828·2019-08-30 15:55
閱讀 3062·2019-08-28 18:14
閱讀 3652·2019-08-26 13:43