一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

億級(jí)用戶、跨千公里數(shù)據(jù)中心異地雙活的實(shí)踐丨中國(guó)電信甜橙金融

 南彥軍 2018-05-18

接收程序員的技術(shù)早餐

作者|張小虎
編輯|小智

天翼電子商務(wù)有限公子(簡(jiǎn)稱“甜橙金融”)是中國(guó)電信的全資子公司,2011 年 3 月成立于北京,現(xiàn)賬戶用戶已突破 1.5 億,成為國(guó)內(nèi)最大的民生繳費(fèi)平臺(tái)、移動(dòng)支付領(lǐng)域 5 強(qiáng)、互聯(lián)網(wǎng)金融領(lǐng)域 16 強(qiáng)。甜橙金融技術(shù)團(tuán)隊(duì)在經(jīng)歷 2016 年成功“上云”后,便開始著手建設(shè)新華南機(jī)房。新華南機(jī)房的設(shè)計(jì)目標(biāo)是與當(dāng)前的兩個(gè)華東機(jī)房一起,形成符合甜橙金融業(yè)務(wù)快速發(fā)展需要兼顧迎檢要求的“兩地三中心”異地雙活架構(gòu)。

本文系統(tǒng)介紹了我們?cè)跇I(yè)務(wù)需求驅(qū)動(dòng)下的數(shù)據(jù)中心建設(shè)的演進(jìn)過程,以及我們?cè)诖嘶A(chǔ)上進(jìn)行的 “ 異地雙活 ” 探索和驗(yàn)證,其中“ 異地雙活 ”主要是基于數(shù)據(jù)訪問層( Data Access Layer,DAL )和數(shù)據(jù)層庫(kù)( Database )兩個(gè)方面展開介紹, 希望在雙活建設(shè)上能給大家?guī)硇碌乃悸贰?/p>

數(shù)據(jù)中心建設(shè)演進(jìn)


圖 1. 甜橙金融 IDC 機(jī)房架構(gòu)演進(jìn)

1. 本地?cái)?shù)據(jù)中心階段(2011 年 -2013 年)

最初的機(jī)房架構(gòu)比較單一。華東、華南兩地各有一個(gè)本地機(jī)房,且各本地機(jī)房主要負(fù)責(zé)華東、華南兩個(gè)研發(fā)中心自身的發(fā)展需求。兩個(gè)本地機(jī)房之間通過 CN2 和 DCN 直連。


圖 2. 甜橙金融本地?cái)?shù)據(jù)中心架構(gòu)

在發(fā)展初期,這樣的 IDC 機(jī)房架構(gòu)加上兩地研發(fā)中心,使得我們的業(yè)務(wù)在短時(shí)間內(nèi)得以快速開發(fā)迭代、部署落地,一定程度上滿足了當(dāng)時(shí)的業(yè)務(wù)需求。

架構(gòu)痛點(diǎn):2013 年后期,在經(jīng)歷了幾次大型促銷活動(dòng)引發(fā)的一系列故障后,本地機(jī)房架構(gòu)的短板逐漸浮現(xiàn),如業(yè)務(wù)沒有跨機(jī)房冗余,在出現(xiàn)緊急事件時(shí)無(wú)法繼續(xù)提供必要服務(wù)等。因此,經(jīng)過內(nèi)部討論評(píng)估,我們初步制定了 IDC 機(jī)房架構(gòu)的演進(jìn)策略,開始著手建設(shè)同城機(jī)房。

2. 同城冷備階段(2014 年 -2015 年)

這一階段我們?cè)谌A東地區(qū)規(guī)劃并建設(shè)了兩個(gè)同城機(jī)房,兩個(gè)華東數(shù)據(jù)中心均可以為華東研發(fā)中心提供業(yè)務(wù)相關(guān)服務(wù)。之所以依舊定義為同城冷備主要還是基于數(shù)據(jù)層面,因?yàn)閺臄?shù)據(jù)層面上說這種機(jī)房架構(gòu)仍屬于冷備架構(gòu)。雖然兩個(gè)數(shù)據(jù)中心的應(yīng)用服務(wù)都可以接受并處理用戶請(qǐng)求,但用戶對(duì)數(shù)據(jù)的請(qǐng)求則同一時(shí)間只在固定的數(shù)據(jù)中心中讀寫。由于同城機(jī)房的網(wǎng)絡(luò)延時(shí)基本可以忽略,兩個(gè)數(shù)據(jù)中心則通過數(shù)據(jù)庫(kù)層面進(jìn)行異步數(shù)據(jù)同步。


圖 3. 甜橙金融同城冷備數(shù)據(jù)中心架構(gòu)

同城冷備架構(gòu)讓我們的個(gè)人賬戶等核心業(yè)務(wù)有了必要的業(yè)務(wù)容災(zāi)條件,同時(shí)由于兩個(gè)數(shù)據(jù)中心都可以處理正常業(yè)務(wù)請(qǐng)求,所以數(shù)據(jù)中心整體的資源處理能力也成倍擴(kuò)充。

架構(gòu)痛點(diǎn): 添加新的數(shù)據(jù)中心除了帶來 IDC、線路、維護(hù)成本上的增加外,并沒有解決我們?nèi)A南數(shù)據(jù)中心業(yè)務(wù)無(wú)冗余的困境,且由于其中一個(gè)數(shù)據(jù)中心的數(shù)據(jù)是冷備數(shù)據(jù),當(dāng)出現(xiàn)嚴(yán)重故障時(shí),冷備數(shù)據(jù)是否可以直接拉起使用也因業(yè)務(wù)差異而定。

隨著甜橙金融業(yè)務(wù)的發(fā)展,我們認(rèn)為華東數(shù)據(jù)中心同城冷備架構(gòu)已無(wú)法滿足我們業(yè)務(wù)發(fā)展的需求,但是受限于當(dāng)時(shí)的基礎(chǔ)技術(shù)儲(chǔ)備能力,因此我們計(jì)劃進(jìn)行全業(yè)務(wù)改造,逐步滿足建立異地雙活機(jī)房條件。

3. 同地區(qū)冷備階段(2016 年 10 月 -2017 年 4 月)

為了逐步建立異地雙活機(jī)房架構(gòu),我們?cè)?2015 年底便首先啟動(dòng)全業(yè)務(wù)的上云改造。到 2016 年 10 月底,在經(jīng)過 1 年多的業(yè)務(wù)改造及數(shù)據(jù)中心基礎(chǔ)建設(shè)后,甜橙金融將原有的兩個(gè)華東同城百公里內(nèi)數(shù)據(jù)中心改造為兩個(gè)同地區(qū)四百公里內(nèi)數(shù)據(jù)中心。這樣做的目的是為了進(jìn)一步驗(yàn)證同城冷備架構(gòu)在異地是否繼續(xù)可行,并且對(duì)遠(yuǎn)距離數(shù)據(jù)同步中出現(xiàn)的問題進(jìn)行調(diào)研。

兩個(gè)同地區(qū)數(shù)據(jù)中心的地位和之前也有區(qū)別:在保持原同城冷備方案的前提下,華東新數(shù)據(jù)中心定位為主數(shù)據(jù)中心,主要負(fù)責(zé)處理甜橙金融核心業(yè)務(wù);華東容災(zāi)數(shù)據(jù)中心則負(fù)責(zé)生產(chǎn)數(shù)據(jù)的異地容災(zāi)備份。

在這一階段,我們的新華南數(shù)據(jù)中心也通過調(diào)研,加緊建設(shè)中。


圖 4. 甜橙金融同地區(qū)冷備數(shù)據(jù)中心架構(gòu)

4. 異地冷備階段(2017 年 4 月至今)

新華南數(shù)據(jù)中心建成后,我們開始將同地區(qū)數(shù)據(jù)中心的冷備架構(gòu)下線,并同期建設(shè)為數(shù)據(jù)容災(zāi)中心。新的華南數(shù)據(jù)中心則規(guī)劃為可以承載部分公共業(yè)務(wù)的應(yīng)用級(jí)異地雙活。

在這一階段建設(shè)初期,我們繼續(xù)沿用已經(jīng)比較成熟的應(yīng)用級(jí)雙活經(jīng)驗(yàn),將華東、華南兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)訪問全部集中在華東主數(shù)據(jù)中心。業(yè)務(wù)上則針對(duì)跨千公里的網(wǎng)絡(luò)環(huán)境進(jìn)行相應(yīng)改造。畢竟在原有的應(yīng)用設(shè)計(jì)時(shí),一些業(yè)務(wù)判斷會(huì)強(qiáng)依賴數(shù)據(jù)返回時(shí)延,跨千公里網(wǎng)絡(luò)時(shí)延一般在 20-50ms 內(nèi),這個(gè)對(duì)某些業(yè)務(wù)會(huì)產(chǎn)生較大影響。


圖 5. 甜橙金融異地冷備數(shù)據(jù)中心架構(gòu)

架構(gòu)痛點(diǎn): 在跨千公里數(shù)據(jù)中心數(shù)據(jù)同步方面,由于華南副中心的數(shù)據(jù)只是冷備數(shù)據(jù),所以設(shè)計(jì)之初我們便定義其數(shù)據(jù)可用級(jí)別為 T 1 日。當(dāng)然,這樣的設(shè)計(jì)在數(shù)據(jù)恢復(fù)上存在一定問題,比如華南的副中心由于網(wǎng)絡(luò)擁堵導(dǎo)致數(shù)據(jù)同步延遲較大,這時(shí)如果華東主數(shù)據(jù)中心出現(xiàn)災(zāi)難性故障,則副中心只能有限接管業(yè)務(wù)——數(shù)據(jù)時(shí)延最大可能一天。

故障的恢復(fù)會(huì)采用以下兩種方案:

  1. 重新拉起華東主數(shù)據(jù)中心。

  2. 華東數(shù)據(jù)容災(zāi)中心恢復(fù)增量備份到華南副數(shù)據(jù)中心。

不管采用哪種方案,這樣的數(shù)據(jù)恢復(fù)時(shí)長(zhǎng)對(duì)于核心業(yè)務(wù)來說是無(wú)法忍受的,這也是我們當(dāng)前只在公共業(yè)務(wù)里采用異地應(yīng)用級(jí)雙活架構(gòu)的原因。

異地雙活架構(gòu)面臨的問題

在數(shù)據(jù)中心建設(shè)告一段落后,我們將重點(diǎn)轉(zhuǎn)移到如何實(shí)現(xiàn)真正的異地雙活上來,在實(shí)現(xiàn)異地雙活架構(gòu)時(shí)所面臨的問題主要包括以下幾個(gè):

  1. 跨千公里網(wǎng)絡(luò)時(shí)延。

  2. 業(yè)務(wù)改造復(fù)雜。

  3. 各數(shù)據(jù)中心數(shù)據(jù)一致性問題,包括臟數(shù)據(jù)寫入、數(shù)據(jù)沖突、是否需要改造全局鍵等。

其中,跨千公里數(shù)據(jù)異地同步的難度在業(yè)內(nèi)有著廣泛共識(shí),受限于現(xiàn)在市面中的主流關(guān)系型數(shù)據(jù)庫(kù)都是基于 CAP 理論做底層設(shè)計(jì)(注:CAP 理論是指一款數(shù)據(jù)產(chǎn)品在數(shù)據(jù)一致性、可用性和分區(qū)耐受性三者中只能同時(shí)滿足其中任意兩者。),因此數(shù)據(jù)異地同步就需要對(duì) CAP 理論進(jìn)行規(guī)避。

針對(duì)上述的問題,我們制定了兩種類型方案并著手進(jìn)行方案驗(yàn)證:

  1. 消息分發(fā) & DAL 層改造

  2. 數(shù)據(jù)層改造(MongoDB、TiDB)

異地雙活方案
消息分發(fā) & DAL 層改造

采用消息進(jìn)行異地?cái)?shù)據(jù)同步在業(yè)內(nèi)已有很多成功案例。在我們的技術(shù)方案里,首先要做的是將被選定進(jìn)行異地雙活改造的應(yīng)用入口逐漸收攏,從多入口(域名)訪問改造為統(tǒng)一的入口路由。這樣,入口級(jí)應(yīng)用 MAPI 應(yīng)運(yùn)而生,它上線后將之前相對(duì)零散的業(yè)務(wù)訪問統(tǒng)一起來,這也為后面我們針對(duì) MAPI 做流量分發(fā)及控制提供了必要條件。


圖 6. 甜橙金融異地雙活方案之消息分發(fā) & DAL 層改造

MAPI 通過 DNS 解析將入口流量進(jìn)行多機(jī)房分發(fā),業(yè)務(wù)請(qǐng)求生成的消息會(huì)寫入到兩地的機(jī)房中。接下來本地機(jī)房的消費(fèi)者會(huì)通過 DAL 層將落盤數(shù)據(jù)分發(fā)到相應(yīng)的數(shù)據(jù)分片里,然后通過數(shù)據(jù)庫(kù)自身的復(fù)制機(jī)制,有延時(shí)的將本地?cái)?shù)據(jù)中心的數(shù)據(jù)同步一份到異地?cái)?shù)據(jù)中心。這樣既可保證每個(gè)數(shù)據(jù)中心都會(huì)保留一份全量數(shù)據(jù),也可以保證以華東主數(shù)據(jù)中心為主,向華東容災(zāi)數(shù)據(jù)中心。

Consumer 和 DAL 的改造是該方案的難點(diǎn)。在實(shí)施時(shí),我們根據(jù)業(yè)務(wù)的性質(zhì)進(jìn)行了單元化劃分,這也是業(yè)內(nèi)實(shí)現(xiàn)雙活架構(gòu)的常用方案。將不能進(jìn)行單元化的業(yè)務(wù)以全局區(qū)域存放,而可以單元化處理的業(yè)務(wù)模塊則放入本地區(qū)域。


圖 7. Global Zone 和 Local Zone

數(shù)據(jù)層改造

如前文所述,面對(duì)異地雙活最大的技術(shù)難點(diǎn)數(shù)據(jù)一致性問題,其實(shí)主要還是受限于關(guān)系型數(shù)據(jù)及 CAP 原理。因此,通過一些技術(shù)手段對(duì) CAP 原理進(jìn)行規(guī)避也能夠達(dá)到滿足業(yè)務(wù)的數(shù)據(jù)一致性要求。

這里,我有兩個(gè)數(shù)據(jù)層改造的思路分享給大家:

1. 基于 MongoDB 副本集的異地雙活架構(gòu):

MongoDB 是天然提供分片的 NoSQL 數(shù)據(jù)庫(kù),這樣的天然分片被稱為副本集。副本集的存在為每個(gè) MongoDB 的分片節(jié)點(diǎn)提供了相應(yīng)的高可用。

它在寫入持久性和讀取一致性上提供了更強(qiáng)的處理能力。比如,通過 write concern 來指定寫入副本的數(shù)量,無(wú)論采用應(yīng)答式寫入還是非應(yīng)答式寫入,均可保證跨數(shù)據(jù)中心的集群發(fā)生故障時(shí),總會(huì)有相應(yīng)的副本存在以保證寫安全。另外,MongoDB 是滿足 BASE 理論設(shè)計(jì)的,因此可以從一定程度上規(guī)避 CAP 理論帶來的問題。


圖 8. 基于 MongoDB 副本集的雙活架構(gòu)

MongoDB 還有一個(gè)適合多數(shù)據(jù)中心部署的特征是其故障自動(dòng) Failover。這一特性對(duì)于異地雙活有重要意義,數(shù)據(jù)庫(kù)運(yùn)維人員可以不用太在意各數(shù)據(jù)中心的數(shù)據(jù)庫(kù)節(jié)點(diǎn)的狀態(tài)。我們?cè)谶M(jìn)行的方案驗(yàn)證時(shí),當(dāng)集群中的節(jié)點(diǎn)發(fā)生故障或出現(xiàn)網(wǎng)絡(luò)中斷,MongoDB 基本可以在 5 秒內(nèi)完成故障的 Failover 過程,這主要依賴集群對(duì)整個(gè)副本集的配置,發(fā)生故障后可以在剩余的副本集中選擇一個(gè)新的主 shards。

2. 基于分布式數(shù)據(jù)庫(kù)(NewSQL)的異地雙活架構(gòu):

從 Google 的 Spanner & F1 論文放出后,業(yè)內(nèi)對(duì)于如何打造一套跨數(shù)據(jù)中心的強(qiáng)一致性分布式數(shù)據(jù)庫(kù)的工程實(shí)踐方法有了深刻的認(rèn)識(shí)和理解。

在開源數(shù)據(jù)庫(kù)領(lǐng)域,目前有兩個(gè)受 Google Spanner & F1 影響并建立發(fā)展的分布式關(guān)系數(shù)據(jù)庫(kù) (NewSQL) 尤其引人矚目。他們分別是來自國(guó)內(nèi)的 PingCAP 團(tuán)隊(duì)做的 TiDB 分布式關(guān)系數(shù)據(jù)庫(kù)項(xiàng)目和美國(guó)團(tuán)隊(duì)的 CockroachDB 分布式關(guān)系數(shù)據(jù)庫(kù)項(xiàng)目。這兩個(gè)根據(jù) Spanner & F1 體系打造的分布式關(guān)系數(shù)據(jù)庫(kù) (NewSQL) 目前在全球頂級(jí)開源分布式數(shù)據(jù)庫(kù)領(lǐng)域展開了直接的競(jìng)爭(zhēng)。

我們?cè)谔剿鞫嘀行碾p活數(shù)據(jù)中心架構(gòu)演進(jìn)的時(shí)候,考慮到開源社區(qū)的穩(wěn)定及活躍程度,重點(diǎn)調(diào)研和關(guān)注 TiDB 在多中心架構(gòu)多活模式中的技術(shù)價(jià)值和架構(gòu)探討。TiDB 在數(shù)據(jù)庫(kù)領(lǐng)域?qū)儆谧钚碌牡谌植际疥P(guān)系數(shù)據(jù)庫(kù),其具備如下 NewSQL 核心特性:

  1. SQL 支持 (尤其與 MySQL 兼容性,使得其面對(duì)業(yè)務(wù)完全透明)

  2. 水平在線彈性擴(kuò)展

  3. 支持分布式事務(wù)

  4. 跨數(shù)據(jù)中心數(shù)據(jù)強(qiáng)一致性保證

  5. 故障自恢復(fù)的高可用

  6. 應(yīng)用解耦,沒有業(yè)務(wù)侵入性

TiDB 整個(gè)項(xiàng)目和產(chǎn)品的運(yùn)作方式以標(biāo)準(zhǔn)的國(guó)際開源項(xiàng)目在運(yùn)營(yíng)和發(fā)展,這點(diǎn)也是我們重點(diǎn)圍繞 TiDB 做探索性研究論證的主要?jiǎng)右颍粋€(gè)健康發(fā)展的開源項(xiàng)目能夠使得我們?cè)趹?yīng)用其到比如多中心多活這樣的業(yè)務(wù)場(chǎng)景中,更有信心和保障。

TiDB 數(shù)據(jù)庫(kù)的主要架構(gòu)如下:


圖 9.TiDB 架構(gòu)(圖出自 TiDB 官網(wǎng))

TiDB Server (分布式計(jì)算集群):TiDB Server 負(fù)責(zé)接收 SQL 請(qǐng)求,處理 SQL 相關(guān)的邏輯,并通過 PD 找到存儲(chǔ)計(jì)算所需數(shù)據(jù)的 TiKV 地址,與 TiKV 交互獲取數(shù)據(jù)。

TiKV Server (數(shù)據(jù)分布式存儲(chǔ)集群):TiKV Server 負(fù)責(zé)存儲(chǔ)數(shù)據(jù),從外部看 TiKV 是一個(gè)分布式的提供事務(wù)的 Key-Value 存儲(chǔ)引擎。

PD Server (管理集群):Placement Driver (簡(jiǎn)稱 PD) 是整個(gè)集群的管理模塊,其主要工作有三個(gè): 一是存儲(chǔ)集群的元信息(某個(gè) Key 存儲(chǔ)在哪個(gè) TiKV 節(jié)點(diǎn));二是對(duì) TiKV 集群進(jìn)行調(diào)度和負(fù)載均衡(如數(shù)據(jù)的遷移、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務(wù) ID。

結(jié)合我們?nèi)A東主數(shù)據(jù)中心、容災(zāi)數(shù)據(jù)中心和華南數(shù)據(jù)的三中心布局,在異地多活的場(chǎng)景中,我們?cè)O(shè)計(jì)的甜橙金融基于 TiDB 數(shù)據(jù)庫(kù)的雙活架構(gòu)如下所示:


圖 10. 甜橙金融異地雙活架構(gòu)

TiDB 分布式數(shù)據(jù)庫(kù)在多中心多活的部署和運(yùn)行模式下,依靠其核心調(diào)度 PD 對(duì)跨 1000 公里以上集群的調(diào)度管理。我們?cè)趯?shí)驗(yàn)后,總結(jié)了以下重要特點(diǎn):

  • 標(biāo)簽系統(tǒng) (Label) :   TiDB 內(nèi)置有一套標(biāo)簽系統(tǒng),可以為一套集群的不同節(jié)點(diǎn),按照 Site (數(shù)據(jù)中心),Rack (同中心內(nèi)不同機(jī)架),Host (不同物理機(jī)節(jié)點(diǎn)) 來對(duì)應(yīng)設(shè)置標(biāo)簽信息,從而實(shí)現(xiàn)將集群的跨數(shù)據(jù)中心物理拓?fù)浜图赫{(diào)度連接起來。

  • PD 集群調(diào)度器,根據(jù)對(duì)物理拓?fù)涞挠成洌纬煽鐢?shù)據(jù)中心的實(shí)際數(shù)據(jù)和計(jì)算調(diào)度策略。

  • TiKV 存儲(chǔ)引擎中的數(shù)據(jù)管理最小單位是 Region,每一個(gè) Region 都通過 Raft 產(chǎn)生多個(gè)強(qiáng)一致性副本,在整個(gè)數(shù)據(jù)存儲(chǔ)空間內(nèi),形成多個(gè) Raft Group ( Region 和其副本所組成的同步組) 。同一個(gè) Raft Group 中,會(huì)選舉出一個(gè) Leader Region, 來自 TiDB SQL 引擎的物理數(shù)據(jù)讀寫,都會(huì)訪問所有 Raft Group 中的 Leader Region。

  • PD 集群調(diào)度器 根據(jù)調(diào)度策略,會(huì)動(dòng)態(tài)調(diào)度 所有的 Leader Region 按照 業(yè)務(wù)要求在三個(gè)中心中分布。

  • 華東兩個(gè)數(shù)據(jù)中心 (主數(shù)據(jù)中心及華東容災(zāi)中心)與華南數(shù)據(jù)中心的網(wǎng)絡(luò)通訊條件理想的情況下,PD 可以將數(shù)據(jù)分布中的 Leader Region 動(dòng)態(tài)分布到三個(gè)中心的節(jié)點(diǎn)上。每個(gè)中心都可以以統(tǒng)一視角訪問和操作數(shù)據(jù)庫(kù),TiDB 引擎上的 Multi-Raft 復(fù)制機(jī)制會(huì)在不同中心的數(shù)據(jù)區(qū)域進(jìn)行強(qiáng)一致性復(fù)制 ( Raft Log based) 。

  • 華東兩個(gè)數(shù)據(jù)中心 (主數(shù)據(jù)中心及華東容災(zāi)中心)與華南數(shù)據(jù)中心的網(wǎng)絡(luò)通訊條件不夠理想的情況下,PD 可以將數(shù)據(jù)分布中的 Leader Region 動(dòng)態(tài)分布到華東的兩個(gè)數(shù)據(jù)中心中,而在異地保留 Follower Region 作為高可用保護(hù)。

  • 三個(gè)中心內(nèi)的數(shù)據(jù)管理單位 Region 都是可以在線的做動(dòng)態(tài)的分布改變。

  • 每個(gè)中心的節(jié)點(diǎn)擴(kuò)容,通過 TiDB 自身的動(dòng)態(tài)在線擴(kuò)容機(jī)制,也可以實(shí)現(xiàn)動(dòng)態(tài)水平擴(kuò)展,擴(kuò)展后的集群中的數(shù)據(jù),會(huì)根據(jù) PD 調(diào)度的管理,自動(dòng)在后臺(tái)完成數(shù)據(jù)重平衡工作,對(duì)業(yè)務(wù)連續(xù)性不產(chǎn)生影響。

下面就 整個(gè)多中心多活的具體可用性實(shí)現(xiàn)做一個(gè)拆解分析,我們的雙活架構(gòu)如下圖所示:


圖 11. 基于 TiDB 的異地雙活架構(gòu)

業(yè)務(wù)應(yīng)用接入層高可用設(shè)計(jì)

業(yè)務(wù)應(yīng)用通過 F5 , HAProxy , LVS 之類常規(guī)提供 4-7 層的負(fù)載均衡設(shè)備接入,負(fù)載均衡器通過流量接入后,通過流量轉(zhuǎn)發(fā),直接發(fā)往 TiDB 分布式 SQL 引擎層進(jìn)行業(yè)務(wù)計(jì)算。接入層的高可用,可以通過常規(guī)負(fù)載均衡的后向服務(wù)探測(cè),完成檢測(cè)和流量切換。對(duì)業(yè)務(wù)應(yīng)用透明。

TiDB 分布式 SQL 引擎計(jì)算層高可用設(shè)計(jì)

TiDB 分布式 SQL 引擎為無(wú)狀態(tài)服務(wù),即任意一個(gè)集群節(jié)點(diǎn)不保留狀態(tài)數(shù)據(jù)??梢噪S時(shí)增加節(jié)點(diǎn)和減少節(jié)點(diǎn)。節(jié)點(diǎn)發(fā)生故障后,通過前向服務(wù)探測(cè)和感知,可以自動(dòng)隔離故障節(jié)點(diǎn),剩余的 SQL 引擎服務(wù)實(shí)例可以正常的工作不受影響。對(duì)業(yè)務(wù)透明。

TiKV 分布式存儲(chǔ)引擎層高可用設(shè)計(jì)


圖 12.TiDB 底層 Region 設(shè)計(jì)原理

TiKV 分布式存儲(chǔ)引擎層也是高可用集群架構(gòu),內(nèi)置多種高可用底層保障機(jī)制,最核心的 Raft 機(jī)制確保位于每臺(tái)服務(wù)器上的每個(gè) TiKV 服務(wù)實(shí)例中都有數(shù)據(jù)的副本存在,整個(gè) TiKV 集群 如同 RAID 磁盤陣列,每個(gè)節(jié)點(diǎn)上都有業(yè)務(wù)數(shù)據(jù),同時(shí)也有部分的校驗(yàn)數(shù)據(jù) (在 TiDB 中為數(shù)據(jù)副本)。

默認(rèn)副本配置為 3 個(gè),低于 50% 的節(jié)點(diǎn)故障都可以透明容忍,對(duì)業(yè)務(wù)應(yīng)用的訪問沒有任何影響。

故障節(jié)點(diǎn)被新節(jié)點(diǎn)替換或修復(fù)后重新上線后,集群調(diào)度器會(huì)自動(dòng)建立數(shù)據(jù)的重平衡分配任務(wù)。這個(gè)過程對(duì)業(yè)務(wù)完全透明。

PD 集群調(diào)度器高可用設(shè)計(jì)


圖 13.PD 設(shè)計(jì)原理

PD 集群調(diào)度器是整個(gè)集群的管理節(jié)點(diǎn),自身也是一套高可用集群的設(shè)計(jì)。PD 集群保存有整個(gè)集群的管理元數(shù)據(jù),PD 節(jié)點(diǎn)之間通過 Raft 建立強(qiáng)一致性數(shù)據(jù)復(fù)制,任意 PD 的損壞或故障均可通過內(nèi)部的高可用機(jī)制重新選舉 Leader 對(duì)外繼續(xù)提供服務(wù)。Leader 選舉過程非常短暫,且選舉過程本身對(duì)業(yè)務(wù)應(yīng)用無(wú)影響,PD 所在節(jié)點(diǎn)的存儲(chǔ)設(shè)備(如磁盤)物理?yè)p壞,既不會(huì)影響 PD 中集群元數(shù)據(jù)的安全(Raft 復(fù)制機(jī)制保證),也不會(huì)影響真實(shí)的業(yè)務(wù)數(shù)據(jù)的安全性。

寫在最后

在新技術(shù)的嘗試和引入時(shí),甜橙金融內(nèi)部采取更包容的心態(tài),以期待新技術(shù)可以帶給業(yè)務(wù)更可靠、便捷的基礎(chǔ)服務(wù),以應(yīng)對(duì)更快速的業(yè)務(wù)增長(zhǎng)和更嚴(yán)峻的技術(shù)挑戰(zhàn)。甜橙金融成立 7 年來,從數(shù)據(jù)中心演進(jìn)建設(shè)到數(shù)據(jù)層雙活探索,過程中的探索和思考是我最想和大家分享的。希望我們正在做的一些嘗試,能給正在進(jìn)行“兩地三中心”建設(shè)的同學(xué)在數(shù)據(jù)中心建設(shè)、應(yīng)用級(jí)雙活和數(shù)據(jù)級(jí)雙活上帶來一些新的思路,歡迎業(yè)內(nèi)有此方面研究的朋友一起交流。

作者介紹

張小虎,現(xiàn)任甜橙金融技術(shù)總監(jiān),運(yùn)維技術(shù)中心負(fù)責(zé)人,在數(shù)據(jù)庫(kù)內(nèi)核、云高可用架構(gòu)以及 Devops 上有深入研究。當(dāng)前負(fù)責(zé)甜橙金融運(yùn)維體系設(shè)計(jì)及前沿基礎(chǔ)技術(shù)研究。目前主要工作集中在異地多活架構(gòu)實(shí)施及 AIOPS 上。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    99久久精品免费看国产高清| 国产成人精品国内自产拍| 欧美日韩一区二区午夜| 久久综合日韩精品免费观看| 少妇丰满a一区二区三区| 五月婷婷亚洲综合一区| 中文人妻精品一区二区三区四区| 国产一区二区三区av在线| 国产精品欧美在线观看| 日本一二三区不卡免费| 国产欧美日韩视频91| 成人欧美精品一区二区三区| 午夜福利在线观看免费| 亚洲香艳网久久五月婷婷| 欧美国产日韩在线综合| 欧美大黄片在线免费观看| 亚洲成人精品免费在线观看| 亚洲国产成人久久一区二区三区| 国产精品第一香蕉视频| 日本欧美在线一区二区三区| 婷婷一区二区三区四区| 日韩精品视频一二三区| 冬爱琴音一区二区中文字幕| 五月激情五月天综合网| 欧洲精品一区二区三区四区| 丝袜av一区二区三区四区五区| 大香蕉久久精品一区二区字幕| 日木乱偷人妻中文字幕在线| 国产精品久久三级精品| 日本女人亚洲国产性高潮视频| 日本午夜精品视频在线观看| 国产视频福利一区二区| 人妻偷人精品一区二区三区不卡| 亚洲精品伦理熟女国产一区二区| 欧美乱码精品一区二区三| 欧美日韩国产午夜福利| 国产精品流白浆无遮挡| 亚洲一区二区三区四区性色av| 国产又色又爽又黄又大| 欧美在线观看视频免费不卡| 欧美午夜性刺激在线观看|