分布式數(shù)據(jù)庫(kù)單元業(yè)務(wù)應(yīng)用研究報(bào)告_第1頁(yè)
分布式數(shù)據(jù)庫(kù)單元業(yè)務(wù)應(yīng)用研究報(bào)告_第2頁(yè)
分布式數(shù)據(jù)庫(kù)單元業(yè)務(wù)應(yīng)用研究報(bào)告_第3頁(yè)
分布式數(shù)據(jù)庫(kù)單元業(yè)務(wù)應(yīng)用研究報(bào)告_第4頁(yè)
分布式數(shù)據(jù)庫(kù)單元業(yè)務(wù)應(yīng)用研究報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩102頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目 錄景 1構(gòu) 1型 3化 5析 8)析 8)析 9)求 12案 16分 16計(jì) 26案 31求 47案例 55例 55例 62例 71例 76例 86一、研究背景(一)單元化概念及架構(gòu)1、單元化概念單元是指一個(gè)能完成特定業(yè)務(wù)操作的自閉環(huán)集合在這個(gè)集合中包含了特定業(yè)務(wù)所需的關(guān)鍵服務(wù)以及分配給這個(gè)單元的數(shù)據(jù)一個(gè)單元是可以獨(dú)立運(yùn)行特定業(yè)務(wù)的最小集合單元化架構(gòu)就是把單元作為部署的基本單位在全棧所有機(jī)房中部署若干單元每個(gè)機(jī)房里的單元數(shù)目不定任意一個(gè)單元都部署了系統(tǒng)所需的特定應(yīng)用,數(shù)據(jù)則是全量數(shù)據(jù)按照某種維度劃分后的一部分。單元是一個(gè)縮小版整站部署了特定業(yè)務(wù)應(yīng)用但他不是全量的數(shù)據(jù)因?yàn)橐粋€(gè)單元只能操作部分?jǐn)?shù)據(jù)以銀行賬戶核心的存貸款服務(wù)為例單元化架構(gòu)之后一個(gè)單元可以只存儲(chǔ)個(gè)人存款服務(wù)這個(gè)特定業(yè)務(wù)應(yīng)用的部分客戶號(hào)相關(guān)的數(shù)據(jù)但這些客戶號(hào)所有或絕大部分的個(gè)人存款服務(wù)都可以在這個(gè)單元中完成。2、單元化架構(gòu)單元化架構(gòu)是從并行計(jì)算領(lǐng)域發(fā)展而來(lái)在分布式服務(wù)設(shè)計(jì)領(lǐng)域一個(gè)單(Ce就是滿足某個(gè)分區(qū)所有業(yè)務(wù)操作的自包含集合。而一個(gè)分區(qū)(Shrd),則是整體數(shù)據(jù)集的一個(gè)子集,如果你用賬號(hào)來(lái)劃分用戶那同樣尾號(hào)的那部分用戶就可以認(rèn)為是一個(gè)分區(qū)單元化就是將一個(gè)服務(wù)設(shè)計(jì)改造讓其符合單元特征的過(guò)程。能夠單元化的系統(tǒng)很容易在多機(jī)房中擴(kuò)展且不受機(jī)房建設(shè)上限限制因?yàn)榭梢暂p易地把幾個(gè)單元部署在一個(gè)機(jī)房而把另外幾個(gè)部署在其他機(jī)房如圖1所示通過(guò)在業(yè)務(wù)入口處設(shè)置一個(gè)流量調(diào)配器,可以調(diào)整業(yè)務(wù)流量在單元之間的比例。圖1圖單元化架構(gòu)要求系統(tǒng)須具備數(shù)據(jù)分區(qū)能力數(shù)據(jù)分區(qū)承載了各個(gè)單元的業(yè)務(wù)流量比例數(shù)據(jù)分區(qū)即是把全局?jǐn)?shù)據(jù)按照某一個(gè)維度水平劃分開(kāi)來(lái)每個(gè)分區(qū)的數(shù)據(jù)內(nèi)容互不重疊每個(gè)數(shù)據(jù)節(jié)點(diǎn)有自己應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)。從全行系統(tǒng)的角度看單元化按照技術(shù)或者業(yè)務(wù)等一定方式將系統(tǒng)拆分到不同的機(jī)房里面去使業(yè)務(wù)鏈路盡可能在單機(jī)房?jī)?nèi)完成其效果是既降低了鏈路耗時(shí)又實(shí)現(xiàn)了多機(jī)房多活且為多機(jī)房擴(kuò)展提供基礎(chǔ)。從技術(shù)拆分的角度來(lái)看單元可以分成可拆分和不可拆分兩類如賬務(wù)存款貸款資產(chǎn)交換等絕大多數(shù)銀行業(yè)務(wù)是按照人維度可以進(jìn)行拆分的如客戶限額等存在多個(gè)維度或者非人的維度,因此不可拆分;客戶登錄可存在身份證號(hào)、銀行卡號(hào)、手機(jī)號(hào)、郵箱等多個(gè)維度。(二)單元類型目前業(yè)內(nèi)對(duì)于單元的命名方式有多種例如郵儲(chǔ)銀行分區(qū)單元(DUS)、民生銀行分區(qū)單元(DU/UZne)、網(wǎng)商銀行分區(qū)單元(G//CZoe)、微眾銀行標(biāo)準(zhǔn)化部署節(jié)點(diǎn)(DCN)、光大銀行分區(qū)單(DU及其他企業(yè)分區(qū)單(SE不同的金融機(jī)構(gòu)實(shí)際的DUS劃分方式可能會(huì)有些不同,但基本思想大體一致,本文為了方便論述,統(tǒng)一使用分區(qū)單元(DU)來(lái)表述。圖2見(jiàn)DS圖如上圖2所示,常見(jiàn)的DS劃分主要如下:1全局路由單元(G-DUS)包含網(wǎng)關(guān)服務(wù),處理外聯(lián)系統(tǒng)的服務(wù)請(qǐng)求,提供服務(wù)路由,將外部請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)部的業(yè)務(wù)單元的應(yīng)用服務(wù)實(shí)例典型的應(yīng)用服務(wù)為聯(lián)機(jī)網(wǎng)關(guān)服務(wù)、文件網(wǎng)關(guān)服務(wù)、外呼等。業(yè)務(wù)服務(wù)單元(B-DUS)包含多個(gè)客戶的業(yè)務(wù)數(shù)據(jù)以及為此類客戶提供服務(wù)支持的應(yīng)用實(shí)例負(fù)責(zé)完成客戶的業(yè)務(wù)處理典型的應(yīng)用服務(wù)為聯(lián)機(jī)服務(wù)、批量主控服務(wù)、批量處理服務(wù)、批量轉(zhuǎn)聯(lián)機(jī)服務(wù)。序號(hào)管理單元(S-DUS)為全部服務(wù)處理單元提供系統(tǒng)服務(wù)支持如賬號(hào)等序列號(hào)生產(chǎn)服務(wù)該單元的特點(diǎn)是在核心系統(tǒng)內(nèi)以單點(diǎn)方式提供服務(wù)典型的應(yīng)用服務(wù)為全局序列號(hào)管理服務(wù)。公共服務(wù)單元(C-DUS)為全部業(yè)務(wù)處理單元提供支撐的應(yīng)用服務(wù)以及與自動(dòng)化運(yùn)維管理平臺(tái)相對(duì)接的相關(guān)數(shù)據(jù)包括批量調(diào)度服務(wù)日志聚合信息、監(jiān)控?cái)?shù)據(jù)等。典型的應(yīng)用服務(wù)為分布式批量調(diào)度服務(wù)。本地資源管理單元(L-DUS)包括針對(duì)單個(gè)數(shù)據(jù)中心內(nèi)的業(yè)務(wù)處理單元所提供的公共數(shù)據(jù)以及該數(shù)據(jù)的管理服務(wù)包括映射數(shù)據(jù)非客戶維度的參(業(yè)務(wù)技術(shù)參數(shù)以及此類數(shù)據(jù)的管理服務(wù)典型的應(yīng)用服務(wù)為參數(shù)管理服務(wù)服務(wù)注冊(cè)管理服務(wù)映射關(guān)系管理服務(wù)配置信息管理服務(wù)。本課題更多關(guān)注單元化與分布式數(shù)據(jù)庫(kù)的結(jié)合所以后續(xù)對(duì)于單元拆分方式將聚焦在業(yè)務(wù)服務(wù)單元(B-US)的拆分方案。(三)分布式數(shù)據(jù)庫(kù)與單元化分布式數(shù)據(jù)庫(kù)系統(tǒng)通常使用較小的計(jì)算機(jī)系統(tǒng)每臺(tái)計(jì)算機(jī)可單獨(dú)放在一個(gè)地方,每臺(tái)計(jì)算機(jī)中都可能有DBS的一份完整拷貝副本或者部分拷貝副本并具有自己局部的數(shù)據(jù)庫(kù)位于不同地點(diǎn)的許多計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)互相連接,共同組成一個(gè)完整的、邏輯上集中、物理上分布的大型數(shù)據(jù)庫(kù)。典型通用的分布式數(shù)據(jù)庫(kù)架構(gòu)如圖3所示分為計(jì)算層和存儲(chǔ)層計(jì)算層包含多個(gè)計(jì)算節(jié)點(diǎn)存儲(chǔ)層包含眾多數(shù)據(jù)節(jié)點(diǎn)計(jì)算節(jié)點(diǎn)的作用不同分布式數(shù)據(jù)庫(kù)略有些差異,本文不展開(kāi)論述;而作為各個(gè)分布式數(shù)據(jù)庫(kù)的共性點(diǎn)數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)業(yè)務(wù)單元數(shù)據(jù)數(shù)據(jù)節(jié)點(diǎn)將以多副本數(shù)據(jù)冗余的方式提供業(yè)務(wù)數(shù)據(jù)的高可靠用于存儲(chǔ)一份數(shù)據(jù)多個(gè)副本的數(shù)據(jù)節(jié)點(diǎn)我們稱為節(jié)點(diǎn)組或數(shù)據(jù)節(jié)點(diǎn)組,本文的后續(xù)部分將會(huì)多次提及節(jié)點(diǎn)組或數(shù)據(jù)節(jié)點(diǎn)組。圖3圖分布式數(shù)據(jù)庫(kù)在單元業(yè)務(wù)下部署有助于保障線上系統(tǒng)日常業(yè)務(wù)的高效能高安全高迭代的平穩(wěn)運(yùn)行同時(shí)有助于金融機(jī)構(gòu)金融企業(yè)提升信息化綜合能力此外還有助于提升國(guó)產(chǎn)數(shù)據(jù)庫(kù)領(lǐng)域的支撐能力對(duì)于金融機(jī)構(gòu)金融企業(yè)完善技術(shù)平臺(tái)逐步實(shí)現(xiàn)基礎(chǔ)軟件自主可控有重要的現(xiàn)實(shí)意義。單元化架構(gòu)與分布式數(shù)據(jù)庫(kù)技術(shù)的融合作為一個(gè)新興的技術(shù)架構(gòu),也伴隨著眾多的難點(diǎn)與挑戰(zhàn),包括但不限于鏈路延遲、高可靠與容災(zāi)單元拆分以及整體運(yùn)維體系復(fù)雜度的提升而這些也是本課題需要進(jìn)一步研究和討論的。在銀行業(yè)客戶體驗(yàn)和數(shù)字科技創(chuàng)新雙輪驅(qū)動(dòng)推進(jìn)下傳統(tǒng)銀行基礎(chǔ)架構(gòu)加速向微服務(wù)與單元化轉(zhuǎn)型向支撐更加開(kāi)放與靈活的業(yè)務(wù)架構(gòu)演進(jìn)。同時(shí)隨著國(guó)家基礎(chǔ)軟件自主可控浪潮的推進(jìn),分布式數(shù)據(jù)庫(kù)技術(shù)也越來(lái)越多地應(yīng)用在了銀行業(yè)各類重要/核心系統(tǒng)中微服務(wù)單元化架構(gòu)與分布式數(shù)據(jù)庫(kù)技術(shù)的融合成為一個(gè)重要的技術(shù)趨勢(shì)。為此北京金融科技產(chǎn)業(yè)聯(lián)盟在分布式數(shù)據(jù)庫(kù)專委會(huì)內(nèi)開(kāi)展了單元業(yè)務(wù)下應(yīng)用場(chǎng)景的調(diào)研并組織編寫《分布式數(shù)據(jù)庫(kù)單元業(yè)務(wù)應(yīng)用場(chǎng)景研究報(bào)告為各金融機(jī)構(gòu)與分布式數(shù)據(jù)庫(kù)廠商提供參考。二、場(chǎng)景分析(一)單元化場(chǎng)景分析應(yīng)用需求簡(jiǎn)述對(duì)本課題相關(guān)參與單位反饋的調(diào)研結(jié)果進(jìn)行分析研究發(fā)現(xiàn)單元化架構(gòu)與分布式數(shù)據(jù)庫(kù)技術(shù)融合的技術(shù)路線已作為主要基礎(chǔ)架構(gòu)在部分金融機(jī)構(gòu)中進(jìn)行試點(diǎn)或落地同時(shí)有大量金融機(jī)構(gòu)正在調(diào)研中并且將單元化和分布式數(shù)據(jù)庫(kù)的結(jié)合作為重要的技術(shù)選型架構(gòu)方向之一整理金融機(jī)構(gòu)分布式數(shù)據(jù)庫(kù)在單元化業(yè)務(wù)應(yīng)用場(chǎng)景部署實(shí)施需求及特性需求對(duì)于各金融機(jī)構(gòu)與分布式數(shù)據(jù)庫(kù)廠商均具有參考價(jià)值。本報(bào)告分析的分布式數(shù)據(jù)庫(kù)在單元業(yè)務(wù)中的應(yīng)用場(chǎng)景需求匯總?cè)缦卤?所示:表1總號(hào)求1型元架業(yè)拆方式2元分式據(jù)分的署應(yīng)系3元整程中務(wù)務(wù)元分式據(jù)配的型施案括向縱擴(kuò)、元分合。4行位拆后布數(shù)庫(kù)本高靠城活多地備部的型案總分式據(jù)多本高靠技。5元架下務(wù)灰發(fā)過(guò)與布數(shù)庫(kù)灰發(fā)過(guò)程6元架下布數(shù)庫(kù)外供據(jù)步總典技方案7究理元架下布數(shù)庫(kù)用典運(yùn)解方案含場(chǎng)下鏈性檢、份復(fù)技方。單元化場(chǎng)景應(yīng)用痛點(diǎn)本課題在實(shí)際調(diào)研過(guò)程中針對(duì)國(guó)內(nèi)多家銀行金融機(jī)構(gòu)的應(yīng)用情況總結(jié)得到在生產(chǎn)應(yīng)用中需要采用單元化方式解決的痛點(diǎn)有:跨異地跨機(jī)房多活容災(zāi)類似兩地三中心三地五中心部署架構(gòu),通過(guò)架構(gòu)單元化改造實(shí)現(xiàn)業(yè)務(wù)全局的異地多活。業(yè)務(wù)地域拆分與負(fù)載均衡通過(guò)單元化架構(gòu)將業(yè)務(wù)按照地域進(jìn)行單元拆分實(shí)現(xiàn)有效的負(fù)載拆分多地多活業(yè)務(wù)高可靠與負(fù)載均衡。隔離故障提升系統(tǒng)整體穩(wěn)定性單元化本身就有一定的隔離性這樣在單一業(yè)務(wù)或系統(tǒng)出現(xiàn)故障時(shí)不會(huì)影響其他的業(yè)務(wù)系統(tǒng)或數(shù)據(jù)最小范圍的系統(tǒng)風(fēng)險(xiǎn)同時(shí)多個(gè)或者所有單元同時(shí)出現(xiàn)故障的可能性大大降低另外也減少了故障的排查恢復(fù)時(shí)間。通過(guò)靈活的橫向擴(kuò)展能力滿足業(yè)務(wù)發(fā)展要求。針對(duì)現(xiàn)有業(yè)務(wù)原有系統(tǒng)的在性能擴(kuò)展性可用性安全性等方面的問(wèn)題,通過(guò)單元化的重構(gòu)改造進(jìn)行改進(jìn)以實(shí)現(xiàn)高性能高可用高安全、高可擴(kuò)展的目標(biāo)。(二)分布式數(shù)據(jù)庫(kù)分析應(yīng)用場(chǎng)景分布式數(shù)據(jù)庫(kù)是為單元化業(yè)務(wù)改造提供重要支撐的核心技術(shù)和產(chǎn)品本文針“分布式單元化場(chǎng)景在銀行內(nèi)部是否需要、“分布式單元化場(chǎng)景在銀行內(nèi)部是否有場(chǎng)景“分布式單元化場(chǎng)景是否是銀行關(guān)心或迫切需要改進(jìn)的問(wèn)題等進(jìn)行了調(diào)研經(jīng)過(guò)與多家銀行金融機(jī)構(gòu)溝通目前銀行金融機(jī)構(gòu)采用或有意向在單元化業(yè)務(wù)中下采用分布式數(shù)據(jù)庫(kù)的比較有代表性的應(yīng)用場(chǎng)景包括聯(lián)機(jī)交易批量處理前置系統(tǒng)和客戶服務(wù)系統(tǒng)這四個(gè)場(chǎng)景:聯(lián)機(jī)交易是系統(tǒng)對(duì)外直接提供的交易該類交易具有以下特征:事務(wù)性—分布式強(qiáng)一致讀寫;實(shí)時(shí)性—交易有生命周期并有超時(shí)機(jī)制等調(diào)用方需實(shí)時(shí)等待被調(diào)方的反饋,成功或失敗皆有反饋;并發(fā)性—同一類甚至同一個(gè)交易可同時(shí)被多個(gè)線程調(diào)用相互間有鎖處理機(jī)制可將同一類或者同一個(gè)交易類型進(jìn)行單元化處理將其整個(gè)流程封裝成一個(gè)閉環(huán)單元供多個(gè)線程調(diào)用保證單元之間相互隔離。批量處理時(shí)該交易相關(guān)的參數(shù)系統(tǒng)狀態(tài)已經(jīng)鎖定系統(tǒng)需要進(jìn)行的操作具有統(tǒng)一性使用相同的規(guī)則處理大量數(shù)據(jù)批量交易具有串行性并不是說(shuō)批量交易中不能有并發(fā)而是有固定的步驟逐步操作每一步都有對(duì)某些條件的依賴可將規(guī)則封裝成單元化每個(gè)規(guī)則相對(duì)獨(dú)立同時(shí)在做批量交易時(shí)可按照一定的步驟,逐個(gè)執(zhí)行單元,類似面向?qū)ο蠡蛎嫦蚪M件的思路。前置系統(tǒng)是處理銀行和銀聯(lián)之前的交換業(yè)務(wù)的系統(tǒng)主要負(fù)責(zé)行內(nèi)系(如行內(nèi)渠道前置行內(nèi)交換平臺(tái)行內(nèi)ESB系統(tǒng)、CU(銀聯(lián)交換系統(tǒng)間的報(bào)文格式轉(zhuǎn)換同時(shí)對(duì)交易異常做處理以保證聯(lián)機(jī)交易的完整性和數(shù)據(jù)一致性。將前置系統(tǒng)單元化,形成統(tǒng)一的報(bào)文格式轉(zhuǎn)換可保證整個(gè)聯(lián)機(jī)交易的事務(wù)完整性和數(shù)據(jù)一致性。客戶服務(wù)系統(tǒng)將銀行內(nèi)流程進(jìn)行梳理和統(tǒng)一并將其單元化形成獨(dú)立的個(gè)體將具體的業(yè)務(wù)辦理系(自動(dòng)或人工與客戶服務(wù)系統(tǒng)形成接口對(duì)接便于以后的更新升級(jí)和遷移等操作。架構(gòu)分析通過(guò)調(diào)研分析單元化業(yè)務(wù)場(chǎng)景中分布式數(shù)據(jù)庫(kù)的典型部署場(chǎng)景見(jiàn)圖4。圖4圖單元化業(yè)務(wù)的單元內(nèi)數(shù)據(jù)存儲(chǔ)在分布式數(shù)據(jù)庫(kù)集群的1組存儲(chǔ)層節(jié)點(diǎn)中不同的單元存儲(chǔ)在不同的存儲(chǔ)層節(jié)點(diǎn)組中但他們都屬于同一個(gè)分布式數(shù)據(jù)庫(kù)集群,共享調(diào)度/計(jì)算層。如圖所示每個(gè)單元存儲(chǔ)所用的1組存儲(chǔ)層節(jié)點(diǎn)可以是分布式數(shù)據(jù)庫(kù)的1個(gè)帶數(shù)據(jù)高可靠的數(shù)據(jù)分片同時(shí)針對(duì)較大的業(yè)務(wù)單(例如按地域劃分單元后的熱點(diǎn)地域1組存儲(chǔ)節(jié)點(diǎn)也可以是多個(gè)帶數(shù)據(jù)高可靠的數(shù)據(jù)分片單元與單元間通過(guò)使用物理上隔離的存儲(chǔ)層節(jié)點(diǎn),實(shí)現(xiàn)單元間數(shù)據(jù)的隔離。(三)部署難點(diǎn)與要求部署難點(diǎn)基于本次調(diào)研表的反饋信息整理單元化業(yè)務(wù)場(chǎng)景中與分布式數(shù)據(jù)庫(kù)部署結(jié)合時(shí)有如下部署實(shí)施難點(diǎn)或需求:?jiǎn)卧鸱峙c分布式數(shù)據(jù)庫(kù)分片技術(shù)的融合單位化架構(gòu)需要業(yè)務(wù)方按照業(yè)務(wù)單位化進(jìn)行拆分單元化架構(gòu)需與分布式數(shù)據(jù)庫(kù)的分片技術(shù)相結(jié)合進(jìn)行單位化拆分處理單元的拆分需要做好事前預(yù)估測(cè)試與后期監(jiān)測(cè)工作目前調(diào)研反饋主要的單元拆分方式包括:地域(含分行)、客戶信息(含編號(hào)、賬號(hào)等)等。單元與分布式數(shù)據(jù)庫(kù)分片的部署對(duì)應(yīng)關(guān)系也是下一步的研究整理內(nèi)容。例如一個(gè)單元對(duì)應(yīng)一個(gè)分片或一個(gè)單元對(duì)應(yīng)多個(gè)分片,也有分庫(kù)分表分集群的部署方案。單元化架構(gòu)的單元調(diào)整與分布式數(shù)據(jù)庫(kù)技術(shù)的融合隨著業(yè)務(wù)規(guī)模的擴(kuò)展初始劃分的單元無(wú)法繼續(xù)長(zhǎng)期支撐就需要進(jìn)行單元擴(kuò)容增加新的單元擴(kuò)展單元的過(guò)程除了單元業(yè)務(wù)的擴(kuò)展外也涉及分布式數(shù)據(jù)庫(kù)的擴(kuò)展存在業(yè)務(wù)復(fù)雜度增加導(dǎo)致的單元內(nèi)負(fù)載增加的情形這種場(chǎng)景下常見(jiàn)的方法是進(jìn)行單元縱向擴(kuò)容,例如增加機(jī)器配置;同時(shí)如果主要是數(shù)據(jù)庫(kù)側(cè)負(fù)載的增加,也可能存在分布式數(shù)據(jù)庫(kù)層擴(kuò)容的需求包括橫向擴(kuò)容和縱向擴(kuò)容。單元化架構(gòu)高可靠與容災(zāi)與分布式數(shù)據(jù)庫(kù)技術(shù)的融合單元化架構(gòu)增加了由于單個(gè)單元出現(xiàn)故障對(duì)整體可用性影響的概率,但是由于多個(gè)單元同時(shí)不可用的概率降低因此系統(tǒng)整體的可用指標(biāo)大大提高以分布式數(shù)據(jù)庫(kù)為例數(shù)據(jù)庫(kù)每個(gè)分片的數(shù)據(jù)副本數(shù)與數(shù)據(jù)副本的部署方式以及不同部署方式與業(yè)務(wù)重要度的對(duì)應(yīng)關(guān)系每個(gè)單元內(nèi)分布式數(shù)據(jù)庫(kù)本身的數(shù)據(jù)高可靠技術(shù)是單元化高可靠的基礎(chǔ),原則上,數(shù)據(jù)庫(kù)RO必須為0,RTO時(shí)間需可控。單元化架構(gòu)灰度發(fā)布過(guò)程與分布式數(shù)據(jù)庫(kù)技術(shù)的融合灰度發(fā)布是在線業(yè)務(wù)持續(xù)運(yùn)行的基本要求之一??鐔卧獢?shù)據(jù)同步匯總與分布式數(shù)據(jù)庫(kù)技術(shù)融合對(duì)于單元化架構(gòu)下對(duì)跨單元的數(shù)據(jù)進(jìn)行同步匯總以支持將部分批量或分析處理的業(yè)務(wù)需求可以在線下其他的技術(shù)架構(gòu)中進(jìn)行支撐這個(gè)過(guò)程涉及從單元化下數(shù)據(jù)存儲(chǔ)的分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)抽取、同步、驗(yàn)證等技術(shù)。能力要求本次調(diào)“單元化業(yè)務(wù)場(chǎng)景下是否有對(duì)分布式數(shù)據(jù)庫(kù)操作需求”,從單元內(nèi)、跨單元以及數(shù)據(jù)同步匯三個(gè)維度進(jìn)行了收集。其中數(shù)據(jù)匯總部分已經(jīng)“單元化場(chǎng)景與分布式數(shù)據(jù)庫(kù)結(jié)合的部署實(shí)施需求章節(jié)中進(jìn)行了覆蓋而跨單元操作的需求普遍較少,所以重點(diǎn)關(guān)注單元內(nèi)的數(shù)據(jù)庫(kù)特性需求:?jiǎn)卧髥卧獌?nèi)數(shù)據(jù)存取性能與監(jiān)測(cè)單元化改造特別是基于微服務(wù)改造后服務(wù)模塊間調(diào)度鏈路增加SL語(yǔ)句交互次數(shù)也增加??煽啃耘c容災(zāi)參“單元化場(chǎng)景與分布式數(shù)據(jù)庫(kù)結(jié)合的部署實(shí)施需求”章節(jié)中相關(guān)內(nèi)容。擴(kuò)展性參“單元化場(chǎng)景與分布式數(shù)據(jù)庫(kù)結(jié)合的部署實(shí)施需求”章節(jié)中相關(guān)內(nèi)容。易用易維護(hù)單元化架構(gòu)改造后從運(yùn)維角度由于機(jī)器與節(jié)點(diǎn)數(shù)的增加整體運(yùn)維復(fù)雜度也大幅增強(qiáng)如何確保多個(gè)單元之間的運(yùn)維一致性對(duì)運(yùn)維能力提出更高的要求。三、應(yīng)用方案以下方案描述中使用的術(shù)語(yǔ)及定義參考表2。表2 義關(guān)鍵術(shù)語(yǔ)定義解釋元一能成定務(wù)作自環(huán)合這集中含特定務(wù)需關(guān)服,及配這單的據(jù)。務(wù)務(wù)(B-U)含個(gè)戶業(yè)數(shù)以為類戶供務(wù)持應(yīng)實(shí)例,責(zé)成戶業(yè)處。點(diǎn)組或據(jù)點(diǎn))于儲(chǔ)份據(jù)個(gè)本數(shù)節(jié)我稱節(jié)組。單元個(gè)元署分式據(jù)的個(gè)據(jù)點(diǎn)上。單元個(gè)元署一套布數(shù)庫(kù)群上。CMDB置理?yè)?jù)庫(kù)。(一)單元業(yè)務(wù)拆分拆分策略業(yè)務(wù)服務(wù)單元的拆分策略主要分為兩大類垂直拆分與水平拆分。垂直拆分垂直拆分指業(yè)務(wù)單元按照產(chǎn)品領(lǐng)域維度進(jìn)行切分形成不同的產(chǎn)品單元以核心系統(tǒng)為例一個(gè)可能的垂直拆分方式為個(gè)人存款個(gè)人貸款對(duì)公存款對(duì)公貸款現(xiàn)金以及內(nèi)部賬。水平拆分水平拆分指業(yè)務(wù)單元按照地區(qū)客戶(或賬戶號(hào)進(jìn)行切分每個(gè)單元只包含一個(gè)產(chǎn)品/業(yè)務(wù)的部分?jǐn)?shù)據(jù)。常見(jiàn)的拆分策略包括按照地區(qū)例如按照分行進(jìn)行拆分通常拆分的單元比較大;按照客戶號(hào)進(jìn)行切分,包括rage切分和hah切分Rage切分就是每個(gè)單元固定一個(gè)客戶號(hào)范圍Hah切分就是將業(yè)務(wù)數(shù)據(jù)基于用戶號(hào)進(jìn)行hah散列,一個(gè)單元存儲(chǔ)hah結(jié)果的一個(gè)或多個(gè)分片;按照地區(qū)與客戶號(hào)切分的混合切分例如先按照地區(qū)分然后在地區(qū)內(nèi)再按照客戶號(hào)切分除了上述常見(jiàn)的水平拆分方式外還有一種基于時(shí)間的rage拆分方法在相關(guān)機(jī)構(gòu)的實(shí)際業(yè)務(wù)系統(tǒng)中落地的實(shí)踐即按照時(shí)間進(jìn)行切分,例如按訂單生成的時(shí)間,每個(gè)月做一次且切分。典型方案基于上一“業(yè)務(wù)服務(wù)單元拆分策略的內(nèi)容這里集中介紹如下6類典型垂直拆分產(chǎn)品后的業(yè)務(wù)單元拆分方案:水平按照客戶號(hào)的range做拆分??蛇x的將不同的產(chǎn)品線拆分到不同的單元每個(gè)單元會(huì)包含1個(gè)產(chǎn)品或多個(gè)產(chǎn)品的一個(gè)固定rnge范圍的客戶號(hào)這是小單元設(shè)計(jì)如果未進(jìn)行產(chǎn)品線拆分,則每個(gè)單元包含所有的產(chǎn)品;單元客戶容量上限固定,容量超出時(shí)新客戶號(hào)進(jìn)新的單元一個(gè)客戶號(hào)原則上固定屬于某一個(gè)單元不會(huì)出現(xiàn)客戶號(hào)在單元間的挪動(dòng)圖5是一個(gè)每單元200個(gè)客戶號(hào)的拆分示例。圖5號(hào)rge圖水平按照客戶號(hào)的hash拆分每個(gè)單元包含多個(gè)shrd分片可選的將不同的產(chǎn)品拆分到不同的單元客戶數(shù)據(jù)按照客戶號(hào)進(jìn)行散列存儲(chǔ)到一個(gè)給定數(shù)量的單元集合中每個(gè)單元存儲(chǔ)多個(gè)hsh散列后的shrd分片,是小單元設(shè)計(jì),如果未進(jìn)行產(chǎn)品線拆分則每個(gè)單元包含所有的產(chǎn)品單元客戶容量過(guò)多時(shí)將新增單元并挪動(dòng)已有單元的shrd分片到新的單元,所以shrd是擴(kuò)容的最小粒度,shrd的數(shù)量一定程度上決定了架構(gòu)的擴(kuò)容上限擴(kuò)容時(shí)將出現(xiàn)客戶號(hào)在單元間的挪動(dòng)如圖6所示。圖6號(hào)ah圖先水平拆分區(qū)域再按照客戶號(hào)的hash拆分每個(gè)單元包含多個(gè)shard分片??蛇x的將不同的產(chǎn)品拆分到不同的單元,數(shù)據(jù)先按照地域進(jìn)行拆分然后對(duì)于一個(gè)地域的數(shù)據(jù)再通過(guò)客戶號(hào)hah散列存儲(chǔ)到一個(gè)給定數(shù)量的單元集合中,每個(gè)單元存儲(chǔ)多個(gè)hah散列后的shrd分片,是小單元設(shè)計(jì),如果未進(jìn)行產(chǎn)品線拆分則每個(gè)單元包含所有的產(chǎn)品單元的管理與方案“先垂直拆產(chǎn)品、然后水平按照客戶號(hào)的hsh拆分,每個(gè)單元包含多個(gè)shrd分片”相同,如圖7所示。圖7號(hào)hh圖先垂直拆產(chǎn)品然后水平拆分區(qū)域。不同的產(chǎn)品線使用不同的單元產(chǎn)品線的數(shù)據(jù)先按照地域進(jìn)行拆分由于一個(gè)區(qū)域的數(shù)據(jù)通常會(huì)較大所以是大單元設(shè)計(jì)同時(shí)單元與單元的容量可能存在較大差異單元的擴(kuò)容也更多基于單元內(nèi)的擴(kuò)容手段新增單元操作較重,如圖8所示。圖8圖直接按區(qū)域拆分,大單元設(shè)計(jì)。類似方案4先垂直拆產(chǎn)品然后水平拆分區(qū)域不同的是多個(gè)產(chǎn)品會(huì)對(duì)單元進(jìn)行共用同樣是大單元設(shè)計(jì),若圖9所示。圖9圖按時(shí)間進(jìn)行切分,循環(huán)使用現(xiàn)有單元。針對(duì)類似于訂單等特定業(yè)務(wù)模塊,數(shù)據(jù)按時(shí)間進(jìn)行切分,粒度通常到月或季度;訂單類數(shù)據(jù)是一個(gè)持續(xù)增長(zhǎng)值有明顯的時(shí)效性因此基于時(shí)間進(jìn)行拆分后所有單元都會(huì)呈現(xiàn)一個(gè)有規(guī)律的替換的情況例如需要定期新建未來(lái)單元并定期歸檔歷史單元數(shù)據(jù)這要求系統(tǒng)有極好的單元調(diào)度能力,如圖10所示。圖10圖對(duì)于不含拆分字段的數(shù)據(jù),無(wú)法按客戶維度進(jìn)行切分,如定價(jià)機(jī)構(gòu)信息等這些數(shù)據(jù)可以考慮的存儲(chǔ)方案主要有2種以副本形式保留在每個(gè)業(yè)務(wù)單元中以提高訪問(wèn)性能通常要求這類數(shù)據(jù)變更頻率低且數(shù)據(jù)量不大另一種是單獨(dú)部署一個(gè)單元稱為全局?jǐn)?shù)據(jù)單元。方案對(duì)比針對(duì)上文提到的6個(gè)典型業(yè)務(wù)單元拆分方案本小節(jié)將從擴(kuò)展性故障可用性降低跨單元操作比重降低運(yùn)維復(fù)雜度降低建設(shè)成本等幾個(gè)維度進(jìn)行對(duì)比,如表3所示。對(duì)于擴(kuò)展性小單元設(shè)計(jì)更便于架構(gòu)未來(lái)新單元的擴(kuò)展方案1、6的擴(kuò)展性最好,理論無(wú)上限,新單元擴(kuò)容方式也輕量;方案2和3存在理論擴(kuò)容上限擴(kuò)容過(guò)程也涉及用戶數(shù)據(jù)的挪動(dòng);方案4和5擴(kuò)容代價(jià)大,通常只是有限數(shù)量的單元。對(duì)于故障可用性方案1基于客戶號(hào)rnge的切分方案隔離性是最好的可用性影響最小一個(gè)客戶號(hào)原則上固定屬于某一個(gè)單元不會(huì)出現(xiàn)客戶號(hào)在單元間的挪動(dòng)某個(gè)單元故障也不會(huì)影響其他單元。方案2和方案3基于客戶號(hào)hah進(jìn)行切分,存在單元挪動(dòng)的可能,同時(shí)單元規(guī)模相比方案1也通常會(huì)更大一些,但從故障隔離的角度,方案2/3與方案1的效果基本相當(dāng)。方案4和5是大單元設(shè)計(jì)單元故障的隔離性意義不大方案4存在產(chǎn)品拆分相對(duì)更好方案6雖然以時(shí)間段劃分隔離性好,但如果業(yè)務(wù)中是否存在歷史數(shù)據(jù)聚合等業(yè)務(wù)場(chǎng)景就需要引入其他方案用來(lái)保障匯集場(chǎng)景。對(duì)于降低跨單元操作比重,大單元設(shè)計(jì)優(yōu)勢(shì)更大。方案4、5、6的擴(kuò)單元操作,特別是跨單元分布式事務(wù)操作,比例小于方案1方案2和方案3同時(shí)方案5產(chǎn)品更像集中式部署架構(gòu),所以擴(kuò)單元操作更少。對(duì)于降低運(yùn)維復(fù)雜度顯然架構(gòu)集中度越高拆分的單元越少運(yùn)維復(fù)雜度也越低所以方案5和方案4復(fù)雜度相比方案1、方案2、方案3和方案6要低。對(duì)于方案2、方案3,擴(kuò)容過(guò)程是否挪動(dòng)數(shù)據(jù)對(duì)運(yùn)維的復(fù)雜度會(huì)有明顯影響;如果方案23/的單元擴(kuò)增過(guò)程主要是通過(guò)調(diào)整數(shù)據(jù)sard的主副本的分布實(shí)現(xiàn),擴(kuò)容過(guò)程不涉及數(shù)據(jù)挪動(dòng)同時(shí)因?yàn)閿U(kuò)容過(guò)程不涉及新的shrd產(chǎn)生對(duì)于生產(chǎn)的監(jiān)控備份數(shù)據(jù)同步鏈路影響都很小那么運(yùn)維復(fù)雜度較低后續(xù)對(duì)比中我們將使“方案2(擴(kuò)容不挪數(shù)據(jù)來(lái)表示上述情況所以方案1/6的運(yùn)維復(fù)雜度“方案2/3(擴(kuò)容不挪數(shù)據(jù))”相當(dāng),且優(yōu)于“方案2/3(擴(kuò)容挪數(shù)據(jù)同時(shí)對(duì)于方案1與方案2//6的運(yùn)維復(fù)雜度對(duì)比目前業(yè)內(nèi)還有如下有代表性的觀點(diǎn),供大家參考:網(wǎng)商銀行認(rèn)為方案1盡管不需要數(shù)據(jù)搬遷但由于是新增單元中包含了新增數(shù)據(jù)庫(kù),則需要新增數(shù)據(jù)庫(kù)實(shí)例、數(shù)據(jù)庫(kù)監(jiān)控、同城備份、超遠(yuǎn)備份,以及數(shù)據(jù)庫(kù)下游日志解析鏈路的同步等,甚至整個(gè)離線數(shù)倉(cāng)等大數(shù)據(jù)體系跟隨變動(dòng)顯然方案1的復(fù)雜度遠(yuǎn)大于方案236若使用了支持一致性協(xié)議的原生分布式數(shù)據(jù)庫(kù),則數(shù)據(jù)搬遷的復(fù)雜度可忽略。舉個(gè)例子,貸款擴(kuò)容出新的單元,用戶編號(hào)范圍20萬(wàn)~30萬(wàn),則貸款的所有數(shù)據(jù)倉(cāng)庫(kù)的基表都需要增加新的同步任務(wù)因?yàn)橘J款的數(shù)倉(cāng)基表是貸款的全量數(shù)據(jù)。微眾銀行認(rèn)為方案1在新增單元的過(guò)程中確實(shí)需要進(jìn)行新增數(shù)據(jù)庫(kù)新增上下游同步等操作但是在方案1中由于每個(gè)單元的配置完全對(duì)等所以針對(duì)單元的擴(kuò)容操作是可以實(shí)現(xiàn)模板化和全自動(dòng)化的所以帶來(lái)的運(yùn)維復(fù)雜度是可控的另外方案1在運(yùn)維安全性上還有三個(gè)優(yōu)勢(shì):新增單元的過(guò)程中,對(duì)存量單元的用戶以及服務(wù)完全不涉及,不會(huì)產(chǎn)生因?yàn)榇媪繑?shù)據(jù)挪動(dòng)而帶來(lái)的可用性的風(fēng)險(xiǎn);對(duì)于新增單元的用戶主量是可灰度的可以通過(guò)權(quán)重精確控制先放量極小數(shù)量的用戶到新增單元驗(yàn)證正常之后再逐步放量更多的用戶到新增單元??梢暂^方便的設(shè)置一個(gè)專用的預(yù)發(fā)布單元這個(gè)單元可以放置固定的用(比如單位內(nèi)部員工用戶專門用于版本的預(yù)發(fā)布和版本驗(yàn)證。有效降低版本更新帶來(lái)的可用性風(fēng)險(xiǎn)。對(duì)于建設(shè)成本單元化拆分的越少成本越低單元化的拆分通常會(huì)帶來(lái)整體部署規(guī)模的增加建設(shè)成本主要包括了方案搭建所需的服務(wù)器數(shù)量以及方案運(yùn)行所需的技術(shù)難度以小單元的方案1、方案2、方案3為例,涉及更多的跨單元操作就需要更多依賴單元間分布式組件例如分布式事務(wù)組件分布式全局路由組件等整體建設(shè)難度會(huì)高于方案4和5而從方案所需服務(wù)器的數(shù)量來(lái)說(shuō)由于方案5的集中化程度最高服務(wù)器數(shù)量也相對(duì)更小方案1的單元化拆分的力度更小所需的服務(wù)器數(shù)量也相對(duì)更多方案6僅適用于特定場(chǎng)景所以需要單獨(dú)評(píng)估但通常會(huì)高于常規(guī)方案。表3圖方案擴(kuò)展性故障可性降低跨操作比重降低運(yùn)雜度降低建成本案1優(yōu)優(yōu)差中差案2/3擴(kuò)挪據(jù))良優(yōu)差差中案2/3擴(kuò)不數(shù))優(yōu)優(yōu)差中中案4差中良良良案5差差優(yōu)優(yōu)優(yōu)案6優(yōu)中優(yōu)中差表4充案展性障用性降低跨單作重降低運(yùn)維度降低建設(shè)本案1優(yōu)優(yōu)差差差案2優(yōu)優(yōu)差差中案3良良差差中案4差中良良良案5差差優(yōu)優(yōu)優(yōu)案6優(yōu)中優(yōu)中差表5充案展性障用性低單元作重低維復(fù)度低設(shè)成本案1優(yōu)優(yōu)差中差案2優(yōu)優(yōu)差差中案3良良差差中案4差中良良良案5差差優(yōu)優(yōu)優(yōu)案6優(yōu)中優(yōu)中差考慮到前5種方案更加常見(jiàn)后續(xù)本文的討論將主要集中在前5種方案相關(guān)的部署實(shí)施方案。(二)業(yè)務(wù)拆分?jǐn)?shù)據(jù)庫(kù)設(shè)計(jì)本小節(jié)將討論前文5類單元拆分方案應(yīng)用時(shí)對(duì)應(yīng)的分布式數(shù)據(jù)庫(kù)設(shè)計(jì)。水平按Range拆分第一類是水平按照客戶號(hào)的range做拆分方案1中1個(gè)業(yè)務(wù)單元數(shù)據(jù)將存儲(chǔ)到分布式數(shù)據(jù)庫(kù)的一個(gè)節(jié)點(diǎn)組中不同的業(yè)務(wù)單元使用不同的節(jié)點(diǎn)組多個(gè)業(yè)務(wù)單元共享一個(gè)分布式數(shù)據(jù)庫(kù)集群。以銀行賬戶核心的存貸款服務(wù)的個(gè)人存款為例假設(shè)目前該業(yè)務(wù)有500萬(wàn)的客戶號(hào),我們以每500萬(wàn)個(gè)用戶為一個(gè)單元,所以需要10個(gè)單元我們搭建一個(gè)含10個(gè)數(shù)據(jù)節(jié)點(diǎn)組的分布式數(shù)據(jù)庫(kù)集群每個(gè)數(shù)據(jù)節(jié)點(diǎn)組支撐1個(gè)單元即第1到50萬(wàn)的客戶號(hào)存放在第一個(gè)數(shù)據(jù)節(jié)點(diǎn)組第500萬(wàn)+1到100萬(wàn)的客戶號(hào)存放在第二個(gè)數(shù)據(jù)節(jié)點(diǎn)組以此類推當(dāng)該業(yè)務(wù)增長(zhǎng)客戶號(hào)增加時(shí)分布式數(shù)據(jù)庫(kù)集群新增擴(kuò)容一個(gè)數(shù)據(jù)節(jié)點(diǎn)用于存儲(chǔ)新增的客戶號(hào)。水平按Hash拆分第二類是水平按照客戶號(hào)的hash拆分,每個(gè)單元包含多個(gè)shard分片方案2中1個(gè)業(yè)務(wù)單元數(shù)據(jù)將存儲(chǔ)到分布式數(shù)據(jù)庫(kù)的一個(gè)節(jié)點(diǎn)組中與方案1不同點(diǎn)在于方案2的業(yè)務(wù)數(shù)據(jù)按照hah拆分,拆分成眾多的shrd分片,而1個(gè)節(jié)點(diǎn)組將存儲(chǔ)多個(gè)shrd分片。多個(gè)業(yè)務(wù)單元共享一個(gè)分布式數(shù)據(jù)庫(kù)集群。以銀行賬戶核心的存貸款服務(wù)的個(gè)人存款為例,假設(shè)目前業(yè)務(wù)有500萬(wàn)的客戶號(hào),我們預(yù)期1個(gè)單元存儲(chǔ)能存儲(chǔ)500~100萬(wàn)左右的用戶所以初步規(guī)劃10個(gè)單元為業(yè)務(wù)增長(zhǎng)預(yù)留一倍的空間;我們搭建一個(gè)含10個(gè)數(shù)據(jù)節(jié)點(diǎn)組的分布式數(shù)據(jù)庫(kù)集群,而后將500萬(wàn)的客戶號(hào)通過(guò)hah算法散列到10個(gè)數(shù)據(jù)節(jié)點(diǎn)組中每個(gè)數(shù)據(jù)節(jié)點(diǎn)組存儲(chǔ)大約500萬(wàn)的客戶號(hào)當(dāng)該業(yè)務(wù)增長(zhǎng)客戶號(hào)增加每個(gè)單元存儲(chǔ)的客戶號(hào)接近800萬(wàn)左右時(shí)分布式數(shù)據(jù)庫(kù)集群新增擴(kuò)容一批的數(shù)據(jù)節(jié)點(diǎn)組(例如擴(kuò)容一倍),而后在業(yè)務(wù)低峰時(shí)將部分客戶數(shù)據(jù)重分布到新增數(shù)據(jù)節(jié)點(diǎn)組每個(gè)數(shù)據(jù)節(jié)點(diǎn)組擴(kuò)容后存儲(chǔ)的數(shù)據(jù)量基本相當(dāng)部署示意圖類似圖11。圖11圖水平拆分再按Hash拆分第三類是先水平拆分區(qū)域,再按照客戶號(hào)的hash拆分,每個(gè)單元包含多個(gè)shard分片從部署角度方案3與方案2等同。1個(gè)單元存儲(chǔ)于一個(gè)節(jié)點(diǎn)組中,一個(gè)單元存儲(chǔ)多個(gè)sard分片。多個(gè)業(yè)務(wù)單元共享一個(gè)分布式數(shù)據(jù)庫(kù)集群。以銀行賬戶核心的存貸款服務(wù)的個(gè)人存款為例假設(shè)目前該業(yè)務(wù)有500萬(wàn)的客戶號(hào)先按區(qū)域進(jìn)行拆分例如華北地區(qū)100萬(wàn)用戶,而后進(jìn)行hah拆分。整體方案與方案2部署類似,主要區(qū)別是不同區(qū)域所使用的數(shù)據(jù)節(jié)點(diǎn)組是不相交的。垂直拆分后水平拆分區(qū)域第四類是先垂直拆產(chǎn)品然后水平拆分區(qū)域如圖12所示,每個(gè)區(qū)域單元包含一個(gè)產(chǎn)品一個(gè)區(qū)域的所有數(shù)據(jù)對(duì)應(yīng)到一個(gè)單獨(dú)的分布式數(shù)據(jù)庫(kù)集群,在集群內(nèi)可以基于客戶號(hào)做hah。即一個(gè)單元對(duì)應(yīng)一個(gè)分布式數(shù)據(jù)庫(kù)集群。以銀行賬戶核心為例,先按照區(qū)域進(jìn)行劃分,例如華北區(qū),然后按業(yè)務(wù)拆分為存款服務(wù)單元貸款服務(wù)單元現(xiàn)金憑證服務(wù)單元和公共賬務(wù)服務(wù)單元等每個(gè)單元部署到一個(gè)獨(dú)立的分布式數(shù)據(jù)庫(kù)集群中。圖12圖按區(qū)域拆分第五類是按區(qū)域拆分大單元設(shè)計(jì)類似方案每個(gè)區(qū)域的所有相關(guān)產(chǎn)品的所有數(shù)據(jù)放入一個(gè)單元對(duì)應(yīng)到一個(gè)單獨(dú)的分布式數(shù)據(jù)庫(kù)集群,在集群內(nèi)可以基于客戶號(hào)做hah。一個(gè)單對(duì)應(yīng)一個(gè)分布式數(shù)據(jù)庫(kù)集群。以銀行賬戶核心為例按區(qū)域進(jìn)行劃分例如華北區(qū)這個(gè)區(qū)內(nèi)是一個(gè)完整的賬戶核心業(yè)務(wù)包含存款服務(wù)貸款服務(wù)現(xiàn)金憑證和對(duì)公賬戶服務(wù)等這個(gè)區(qū)域作為一個(gè)大單元部署到一個(gè)獨(dú)立的分布式數(shù)據(jù)庫(kù)集群中。最后針對(duì)全局單元如果數(shù)據(jù)量不大可以考慮數(shù)據(jù)到分布式數(shù)據(jù)庫(kù)集群的一個(gè)數(shù)據(jù)節(jié)點(diǎn)組如果數(shù)據(jù)量較大可以考慮部署到一個(gè)獨(dú)立的分布式數(shù)據(jù)庫(kù)集群中。(三)數(shù)據(jù)庫(kù)部署單元擴(kuò)容部署方案單元內(nèi)的擴(kuò)容包括了應(yīng)用擴(kuò)容和數(shù)據(jù)庫(kù)擴(kuò)容。對(duì)于應(yīng)用節(jié)擴(kuò)容單元化架構(gòu)下應(yīng)用服務(wù)應(yīng)該采用無(wú)狀態(tài)設(shè)計(jì)這樣可以通過(guò)應(yīng)用鏡像快速增加新的應(yīng)用容器或虛擬節(jié)點(diǎn)對(duì)于單元內(nèi)數(shù)據(jù)庫(kù)擴(kuò)容則分為2種情況:小單元場(chǎng)景和大單元場(chǎng)景。小單元場(chǎng)景一個(gè)單元部署在分布式數(shù)據(jù)庫(kù)的一個(gè)數(shù)據(jù)節(jié)點(diǎn)組上單元內(nèi)的擴(kuò)容主要通過(guò)數(shù)據(jù)節(jié)點(diǎn)垂直擴(kuò)展實(shí)現(xiàn)即通過(guò)數(shù)據(jù)庫(kù)節(jié)點(diǎn)在線滾動(dòng)升級(jí)的方式逐步將一個(gè)數(shù)據(jù)節(jié)點(diǎn)組相關(guān)的多個(gè)數(shù)據(jù)庫(kù)的物理資源進(jìn)行升配例如提高CP內(nèi)存網(wǎng)絡(luò)磁盤IO等。示例如圖13所示:圖13圖大單元場(chǎng)景,一個(gè)單元部署在一整套分布式數(shù)據(jù)庫(kù)集群上,所以單元內(nèi)的擴(kuò)容主要依賴分布式數(shù)據(jù)庫(kù)集群的橫向擴(kuò)容實(shí)現(xiàn),通過(guò)使用更多的機(jī)器實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)在容量與性能吞吐上的提升分布式數(shù)據(jù)庫(kù)能夠檢測(cè)到新的服務(wù)器并將其他服務(wù)器上的數(shù)據(jù)遷移到擴(kuò)容服務(wù)器盡可能的均衡各個(gè)節(jié)點(diǎn)的負(fù)載實(shí)現(xiàn)整體的平衡當(dāng)然這個(gè)過(guò)程勢(shì)必需要進(jìn)行數(shù)據(jù)遷移集群會(huì)基于負(fù)載均衡原則將部分?jǐn)?shù)據(jù)遷移到擴(kuò)容服務(wù)器上這個(gè)數(shù)據(jù)遷移的過(guò)程對(duì)業(yè)務(wù)是透明的。示例如圖14所示:圖14圖全局單元的數(shù)據(jù)庫(kù)擴(kuò)容主要依賴上述單元內(nèi)擴(kuò)容策略即提升單元硬件升配或依托分布式數(shù)據(jù)庫(kù)自身的擴(kuò)容技術(shù)實(shí)現(xiàn)無(wú)法依賴新增單元的方式進(jìn)行擴(kuò)容。當(dāng)單元的存儲(chǔ)達(dá)到瓶頸無(wú)法通過(guò)升級(jí)物理節(jié)點(diǎn)進(jìn)行提升已經(jīng)達(dá)到分布式數(shù)據(jù)庫(kù)集群有效擴(kuò)容邊界時(shí)就需要進(jìn)行新增單元擴(kuò)容,示意如圖15所示:圖15 圖新增單元的擴(kuò)容方式與業(yè)務(wù)服務(wù)單元的拆分策略緊密相關(guān),本小節(jié)將分別討論5種業(yè)務(wù)單元拆分策略對(duì)應(yīng)的新增單元擴(kuò)容方法。先垂直拆產(chǎn)品然后水平按照客戶號(hào)的rage做拆分。對(duì)于方案1而言單元客戶容量上限固定容量超出時(shí)新客戶號(hào)進(jìn)新的單元一個(gè)客戶號(hào)原則上固定屬于某一個(gè)單元不會(huì)出現(xiàn)客戶號(hào)在單元間的挪動(dòng)所以擴(kuò)容的基本過(guò)程為當(dāng)現(xiàn)有的單元快滿時(shí)在分布式數(shù)據(jù)庫(kù)集群上新增一組數(shù)據(jù)節(jié)點(diǎn)組當(dāng)單元客戶數(shù)達(dá)到固定上限新增的客戶號(hào)將被路由分配到新的業(yè)務(wù)服務(wù)單元。先垂直拆產(chǎn)品然后水平按照客戶號(hào)的hah拆分每個(gè)單元包含多個(gè)shrd分片對(duì)于方案2而言每個(gè)單元存儲(chǔ)的是多個(gè)hah散列后的shrd分片。單元客戶容量過(guò)多時(shí)將新增單元并挪動(dòng)已有單元的shrd分片到新的單元shrd是擴(kuò)容的最小粒度shrd的數(shù)量一定程度上決定了架構(gòu)的擴(kuò)容上限擴(kuò)容時(shí)將出現(xiàn)客戶號(hào)在單元間的挪動(dòng)所以擴(kuò)容的基本過(guò)程為當(dāng)現(xiàn)有的單元快滿時(shí)在分布式數(shù)據(jù)庫(kù)集群上新增一批數(shù)據(jù)節(jié)點(diǎn)構(gòu)建多個(gè)數(shù)據(jù)節(jié)點(diǎn)組例如一次性擴(kuò)容1半的數(shù)據(jù)節(jié)點(diǎn)或擴(kuò)容1倍的數(shù)據(jù)節(jié)點(diǎn)擴(kuò)容節(jié)點(diǎn)數(shù)越多本次擴(kuò)容所需挪動(dòng)的數(shù)據(jù)總量就越大。計(jì)算現(xiàn)有單元內(nèi)需要挪動(dòng)的sard分片挪動(dòng)shrd分片到新增數(shù)據(jù)節(jié)點(diǎn)組,形成一批擴(kuò)容任務(wù)計(jì)劃。逐步執(zhí)行擴(kuò)容任務(wù)計(jì)劃,將業(yè)務(wù)數(shù)據(jù)shrd分片均勻挪動(dòng)到新增的數(shù)據(jù)節(jié)點(diǎn)組實(shí)現(xiàn)全局?jǐn)?shù)據(jù)分布的均衡。這個(gè)業(yè)務(wù)數(shù)據(jù)挪動(dòng)的實(shí)現(xiàn)可能會(huì)涉及相關(guān)shrd分片的鎖定,或基于數(shù)據(jù)庫(kù)增量變更日志(例如bilo)來(lái)應(yīng)用數(shù)據(jù)挪動(dòng)過(guò)程產(chǎn)生的數(shù)據(jù)變更以確保數(shù)據(jù)挪動(dòng)過(guò)程的在線業(yè)務(wù)數(shù)據(jù)挪動(dòng)到新單元后調(diào)整路由映射為了實(shí)現(xiàn)便捷路由管理,一個(gè)可行的實(shí)現(xiàn)方式為“hah函數(shù)+路由表”的實(shí)現(xiàn),即通過(guò)hsh將業(yè)務(wù)數(shù)據(jù)固定散列為一定數(shù)量的shrd分片,而后通過(guò)額外的一個(gè)路由映射表來(lái)實(shí)現(xiàn)一個(gè)shrd分片與后端業(yè)務(wù)服務(wù)單元之間的映射關(guān)系數(shù)據(jù)挪動(dòng)完成后只需調(diào)整路由映射表中對(duì)應(yīng)shrd分片的映射關(guān)系即可。先垂直拆產(chǎn)品然后水平拆分區(qū)域再按照客戶號(hào)的hah拆分每個(gè)單元包含多個(gè)shrd分片方案3的擴(kuò)容過(guò)程同方案2。先垂直拆產(chǎn)品然后水平拆分區(qū)域。對(duì)于方案4而言,新增單元需要搭建一個(gè)新的分布式數(shù)據(jù)庫(kù)集群所以每次擴(kuò)容都會(huì)涉及大批量數(shù)據(jù)的重分布擴(kuò)容過(guò)程整體實(shí)施代價(jià)較大與相關(guān)分布式數(shù)據(jù)庫(kù)的實(shí)現(xiàn)也有較大的關(guān)聯(lián)一個(gè)可能的方案是依托數(shù)據(jù)同步工具,進(jìn)行單元業(yè)務(wù)數(shù)據(jù)全量和增量的搬遷。直接按區(qū)域拆分,大單元設(shè)計(jì)。方案5的擴(kuò)容過(guò)程同方案4。高可靠部署方案本地化高可靠部署方案如圖16所示,當(dāng)某個(gè)計(jì)算節(jié)點(diǎn)發(fā)生故障,流量直接切換到存活的計(jì)算節(jié)點(diǎn)切換過(guò)程應(yīng)用無(wú)感后續(xù)通過(guò)計(jì)算節(jié)點(diǎn)自愈恢復(fù)后集群自動(dòng)發(fā)現(xiàn)并重新將該計(jì)算節(jié)點(diǎn)加入集群。圖16圖單元化架構(gòu)下分布式數(shù)據(jù)庫(kù)數(shù)據(jù)副本高可靠主要依托分布式數(shù)據(jù)庫(kù)本身的數(shù)據(jù)庫(kù)高可靠技術(shù)實(shí)現(xiàn)目前主流的高可靠技術(shù)主要的實(shí)現(xiàn)是依托多數(shù)派一致性共識(shí)算法,例如paos或rft算法。數(shù)據(jù)節(jié)點(diǎn)(即存儲(chǔ)節(jié)點(diǎn)采取多副本方式構(gòu)成高可用集群,一個(gè)節(jié)點(diǎn)負(fù)責(zé)寫入其他節(jié)點(diǎn)通過(guò)多數(shù)派一致性算法保證數(shù)據(jù)一致性因?yàn)椴渴鹪谕粰C(jī)房集群同步打開(kāi)強(qiáng)一致性開(kāi)關(guān)當(dāng)主庫(kù)發(fā)生故障系統(tǒng)會(huì)自動(dòng)發(fā)現(xiàn)并嘗試恢復(fù)主庫(kù)如果主庫(kù)無(wú)法恢復(fù)則發(fā)起主從切換,保證數(shù)據(jù)庫(kù)高可用。同城雙活部署方案同城雙活是雙活技術(shù)與同城災(zāi)備中心模式結(jié)合的一種主流容災(zāi)架構(gòu)。業(yè)務(wù)系統(tǒng)可以同時(shí)通過(guò)生產(chǎn)中心和災(zāi)備中心進(jìn)行訪問(wèn)無(wú)需指定特定的訪問(wèn)規(guī)則數(shù)據(jù)庫(kù)架構(gòu)同時(shí)兼?zhèn)洚惖鼗淠J降呢?fù)載均衡和故障自動(dòng)切換能力,且由于處于同城較近距離,兩個(gè)數(shù)據(jù)中心的存儲(chǔ)節(jié)點(diǎn)可以保持?jǐn)?shù)據(jù)強(qiáng)一致。當(dāng)其中一個(gè)中心發(fā)生災(zāi)難時(shí),通過(guò)接入前端的負(fù)載均衡調(diào)整可將全流量輸入對(duì)等的災(zāi)備中心數(shù)據(jù)庫(kù)同時(shí)自動(dòng)進(jìn)行切換,災(zāi)備中心的數(shù)據(jù)庫(kù)集群承載全部查詢請(qǐng)求同城雙活的部署示意圖17如下:圖7圖基于數(shù)據(jù)分布式架構(gòu)可以對(duì)應(yīng)用層提供透明的雙活能力以一個(gè)四分片的數(shù)據(jù)表為例,如圖18所示,分片數(shù)據(jù)可以均勻分布在兩個(gè)中心的數(shù)據(jù)庫(kù)數(shù)據(jù)節(jié)點(diǎn)中。圖8圖兩地三中心部署方案在同城雙活或者同城互備的架構(gòu)下再增加一個(gè)遠(yuǎn)距離的容災(zāi)中心,可實(shí)現(xiàn)兩地三中心的容災(zāi)架構(gòu)。如圖19所示,該架構(gòu)在同城容災(zāi)方案的基礎(chǔ)上獲得了對(duì)地震颶風(fēng)等區(qū)域級(jí)災(zāi)難的抵御能力由于異地災(zāi)備中心距離較遠(yuǎn)所以數(shù)據(jù)同步一般考慮使用異步模式可基于數(shù)據(jù)庫(kù)異步同步功能實(shí)現(xiàn)或者在應(yīng)用層使用消息隊(duì)列等組件進(jìn)行業(yè)務(wù)數(shù)據(jù)異步同步進(jìn)而實(shí)現(xiàn)遠(yuǎn)距離異地機(jī)房的數(shù)據(jù)最終一致性。圖9圖灰度發(fā)布部署方案業(yè)務(wù)單元灰度發(fā)布部署方案業(yè)務(wù)服務(wù)單元的業(yè)務(wù)灰度發(fā)布部署方案與單元拆分策略緊密相關(guān)本小節(jié)將分別討論5種業(yè)務(wù)單元拆分策略對(duì)應(yīng)的業(yè)務(wù)灰度發(fā)布方案。先垂直拆產(chǎn)品然后水平按照客戶號(hào)的rage做拆分對(duì)于方案1而言一個(gè)單元存儲(chǔ)一個(gè)特定范圍客戶號(hào)所以一個(gè)簡(jiǎn)單的灰度發(fā)布方案就是構(gòu)建一個(gè)灰度單元一些受控用于灰度驗(yàn)證的客戶號(hào)存儲(chǔ)于該單元例如將銀行職員的客戶號(hào)存儲(chǔ)到灰度單元中每次新版本應(yīng)用發(fā)布時(shí)將先在該灰度單元進(jìn)行發(fā)布驗(yàn)證沒(méi)有問(wèn)題后再發(fā)布到其他業(yè)務(wù)服務(wù)單元由于方案1是小單元設(shè)計(jì)并且具有優(yōu)異的故障可用性灰度單元故障不會(huì)影響其他業(yè)務(wù)服務(wù)單元的運(yùn)行同時(shí)用于灰度驗(yàn)證的都是受控的客戶號(hào)整個(gè)灰度發(fā)布過(guò)程更加的可控。先垂直拆產(chǎn)品、然后水平按照客戶號(hào)的hsh拆分,每個(gè)單元包含多個(gè)shrd分片不同于方案1,方案2采用hsh進(jìn)行客戶號(hào)拆分這樣就難以確保一組用于灰度驗(yàn)證的客戶號(hào)可以固定被散列到一個(gè)灰度服務(wù)單元中對(duì)任意一個(gè)單元進(jìn)行灰度發(fā)布驗(yàn)證由于方案2較好的故障可用性以及方案2的小單元設(shè)計(jì)灰度單元故障不會(huì)影響其他業(yè)務(wù)服務(wù)單元的運(yùn)行但由于無(wú)法確?;叶劝l(fā)布影響的用戶是受控用戶所以灰度發(fā)布過(guò)程對(duì)客戶的影響通常也更大。一個(gè)可以考慮的折中方案為在hah拆分的基礎(chǔ)上對(duì)客戶號(hào)做一個(gè)白名單所有受控用戶都放入白名單并在進(jìn)行hah前先被路由到一個(gè)灰度單元中,用于后續(xù)恢復(fù)發(fā)布驗(yàn)證。先垂直拆產(chǎn)品、然后水平拆分區(qū)域,再按照客戶號(hào)的hsh拆分每個(gè)單元包含多個(gè)shrd分片方案3的業(yè)務(wù)灰度發(fā)布方案同方案2。先垂直拆產(chǎn)品然后水平拆分區(qū)域?qū)τ诜桨?而言由于是大單元設(shè)計(jì)灰度發(fā)布過(guò)程的業(yè)務(wù)模塊風(fēng)險(xiǎn)較高恢復(fù)發(fā)布所影響的客戶范圍也難以控制方案4如果采用方案2的灰度單元策略主要的風(fēng)險(xiǎn)點(diǎn)在于灰度單元的數(shù)據(jù)規(guī)模遠(yuǎn)小于正常業(yè)務(wù)服務(wù)單元量變可能引起質(zhì)變?cè)谠摶叶葐卧尿?yàn)證結(jié)果存在與大單元上行為不一致的風(fēng)險(xiǎn)。直接按區(qū)域拆分大單元設(shè)計(jì)相比方案4方案5由于是多個(gè)產(chǎn)品使用同一個(gè)單元業(yè)務(wù)的灰度發(fā)布過(guò)程的復(fù)雜度也明顯增加。分布式數(shù)據(jù)庫(kù)集群灰度發(fā)布部署方案分布式數(shù)據(jù)庫(kù)集群的灰度發(fā)布將主要由分布式數(shù)據(jù)庫(kù)集群自身技術(shù)實(shí)現(xiàn)需要確保分布式數(shù)據(jù)庫(kù)集群的所有組件升級(jí)版本的向下兼容性,并且做到可升可降。對(duì)于計(jì)算節(jié)點(diǎn)由于數(shù)據(jù)庫(kù)集群需要支持計(jì)算節(jié)點(diǎn)的動(dòng)態(tài)增減通過(guò)剔除老版本計(jì)算節(jié)點(diǎn)并加入新版本計(jì)算節(jié)點(diǎn)的方式實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)的滾動(dòng)輪替升級(jí)需要考量的風(fēng)險(xiǎn)點(diǎn)就是不同版本的計(jì)算節(jié)點(diǎn)在同一個(gè)數(shù)據(jù)庫(kù)集群內(nèi)部運(yùn)行過(guò)程的穩(wěn)定性所以計(jì)算節(jié)點(diǎn)新版本必須向下兼容。對(duì)于存儲(chǔ)層的數(shù)據(jù)節(jié)點(diǎn),通過(guò)數(shù)據(jù)節(jié)點(diǎn)組的在線滾動(dòng)升級(jí),來(lái)實(shí)現(xiàn)數(shù)據(jù)節(jié)點(diǎn)的新版本升級(jí)基本過(guò)程就是先新增一個(gè)新版本的數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)基于節(jié)點(diǎn)組主數(shù)據(jù)節(jié)點(diǎn)的副本進(jìn)行構(gòu)建而后剔除一個(gè)老版本數(shù)據(jù)節(jié)點(diǎn)然后重復(fù)前面的步驟直到所有的備數(shù)據(jù)節(jié)點(diǎn)完成新版本升級(jí)最后進(jìn)行主備切換并對(duì)原主節(jié)點(diǎn)進(jìn)行升級(jí)。灰度發(fā)布部署過(guò)程的管理灰度發(fā)布過(guò)程應(yīng)該循序漸進(jìn)控制發(fā)布風(fēng)險(xiǎn)影響的范圍參考《新一代銀行IT架構(gòu)》,可參考的管理方案如下:首先針對(duì)一個(gè)子系統(tǒng)的一個(gè)實(shí)例進(jìn)行灰度發(fā)布,控制影響范圍為一臺(tái)主機(jī),如果出現(xiàn)問(wèn)題,可以通過(guò)停止該主機(jī)觸發(fā)高可靠faloer機(jī)制來(lái)快速解決故障其次針對(duì)灰度單元進(jìn)行灰度發(fā)布將一整個(gè)灰度業(yè)務(wù)服務(wù)單元進(jìn)行發(fā)布發(fā)布過(guò)程密切關(guān)注業(yè)務(wù)層面與數(shù)據(jù)庫(kù)層監(jiān)控指標(biāo)是否正常如果出現(xiàn)異常進(jìn)行快速回滾如果正常需觀察一段時(shí)間驗(yàn)證發(fā)布效果最后針對(duì)普通業(yè)務(wù)服務(wù)單元進(jìn)行發(fā)布發(fā)布過(guò)程考慮分批次發(fā)布方式每一批次的發(fā)布也是一次灰度發(fā)布,都需要預(yù)留足夠的觀察時(shí)間。對(duì)于低風(fēng)險(xiǎn)變更,灰度發(fā)布的批次間隔可以考慮為大于1小時(shí)對(duì)于中高風(fēng)險(xiǎn)的變更,灰度發(fā)布的批次間隔可以考慮為大于12小時(shí)。數(shù)據(jù)匯總聚合部署方案數(shù)據(jù)聚合需求單元化架構(gòu)需要考慮單元內(nèi)所有的業(yè)務(wù)需求在單元內(nèi)部實(shí)現(xiàn)即單元的業(yè)務(wù)功能要實(shí)現(xiàn)自包含然而還是有些場(chǎng)景需要對(duì)所有單元進(jìn)行匯總和分析的,其中邏輯較重的需求放到Hdop為主的大數(shù)據(jù)平臺(tái)完成另外把簡(jiǎn)單或者有一定時(shí)效要求的分析需求放到數(shù)據(jù)聚合庫(kù)圖20為單元化數(shù)據(jù)聚合典型的邏輯架構(gòu)。圖20圖在部署時(shí)單元化業(yè)務(wù)數(shù)據(jù)庫(kù)采用典型的兩地三中心的高可用架構(gòu)而數(shù)據(jù)聚合庫(kù)由于數(shù)據(jù)可再生且不涉及客戶業(yè)務(wù)因此部署時(shí)基本采用單數(shù)據(jù)中心的模式以節(jié)省資源同時(shí)為了保證在極端情況下數(shù)據(jù)中心故障不影響相關(guān)的功能所有使用數(shù)據(jù)聚合的應(yīng)用均需要有降級(jí)方案降級(jí)方案可以選擇降級(jí)到業(yè)務(wù)系統(tǒng)的備庫(kù)或者大數(shù)據(jù)平臺(tái)圖21所示為數(shù)據(jù)聚合庫(kù)的部署架構(gòu)。圖21圖數(shù)據(jù)聚合技術(shù)方案數(shù)據(jù)聚合采用生產(chǎn)者和消費(fèi)者的模式生產(chǎn)者負(fù)責(zé)進(jìn)行數(shù)據(jù)庫(kù)增量變更日志解(例如bnlg以消息的方式進(jìn)行傳遞,由下游的消費(fèi)者進(jìn)行相應(yīng)的消息讀取并寫入到下游目標(biāo)端數(shù)據(jù)庫(kù)。針對(duì)不同的業(yè)務(wù)單元與分布式數(shù)據(jù)庫(kù)部署對(duì)應(yīng)方案數(shù)據(jù)聚合的技術(shù)方案也有差異針對(duì)小單元部署架構(gòu)即一個(gè)單元為分布式數(shù)據(jù)庫(kù)的一個(gè)數(shù)據(jù)節(jié)點(diǎn)組單元的增量變更主要是獲取該數(shù)據(jù)節(jié)點(diǎn)組某一副(例如主副本的增量變更日(例如myql內(nèi)核數(shù)據(jù)庫(kù)單數(shù)據(jù)節(jié)點(diǎn)的本地bilog)。因?yàn)閱卧c單元之間的獨(dú)立性不同單元的增量變更日志抽取也相對(duì)獨(dú)立實(shí)現(xiàn)較為簡(jiǎn)單針對(duì)大單元部署架構(gòu)即一個(gè)單元對(duì)應(yīng)一個(gè)獨(dú)立的分布式數(shù)據(jù)庫(kù)集群,單元的增量變更需要獲取整個(gè)集群的增量變更日志可選的實(shí)現(xiàn)包括分布式數(shù)據(jù)庫(kù)集群原生提供CDC模塊例如一個(gè)全局bilogseve。由CDC模塊負(fù)責(zé)處理分布式數(shù)據(jù)庫(kù)集群數(shù)據(jù)節(jié)點(diǎn)的增量變更日志信息的匯總排序歸并去重等,最終統(tǒng)一對(duì)外輸出一份完整統(tǒng)一的全局增量變更日志通過(guò)外部第3方工具抽取分布式數(shù)據(jù)庫(kù)集群后端數(shù)據(jù)節(jié)點(diǎn)的增量變更信息而后按照一定的規(guī)則進(jìn)行排序歸并去重需要考慮處理的場(chǎng)景 包括了全局分布表的去重DDL語(yǔ)句的合并與同步分布式事務(wù)信息的合并分布式事務(wù)的排序等等當(dāng)然如果目標(biāo)端消費(fèi)集群只要求數(shù)據(jù)最終一致性的話可以不考慮分布式事務(wù)信息的合并與排序。如圖22所示為分布式數(shù)據(jù)庫(kù)集群后端數(shù)據(jù)節(jié)點(diǎn)增量變更抽取同步架構(gòu)示意圖。圖22圖數(shù)據(jù)聚合挑戰(zhàn)聚合庫(kù)的容量和性能問(wèn)題容量壓力主要來(lái)自源端通過(guò)單元化可以無(wú)限增加而聚合庫(kù)是否也能達(dá)到同樣的擴(kuò)展能力這就需要一種可擴(kuò)展的數(shù)據(jù)庫(kù)能夠支持足夠大的容量除了容量以外大數(shù)據(jù)量查詢的性能也往往是一個(gè)很大的問(wèn)題之所以要進(jìn)行單元化往往是因?yàn)閱蝹€(gè)數(shù)據(jù)庫(kù)無(wú)法支持太大的數(shù)據(jù)量這里面有可能需要應(yīng)用配合進(jìn)行一定的改造才能達(dá)到最優(yōu)的效果。數(shù)據(jù)聚合的時(shí)效問(wèn)題由于數(shù)據(jù)量和中間過(guò)程涉及多個(gè)組件的配合數(shù)據(jù)同步時(shí)效往往無(wú)法做到實(shí)時(shí)甚至有時(shí)候準(zhǔn)實(shí)時(shí)也是奢望,比如在業(yè)務(wù)高峰或執(zhí)行批量時(shí),同步出現(xiàn)異常的時(shí)候。因此限于時(shí)效的考慮適合訪問(wèn)聚合數(shù)據(jù)的業(yè)務(wù)場(chǎng)景可能會(huì)減小一些。數(shù)據(jù)聚合的數(shù)據(jù)核對(duì)動(dòng)態(tài)的數(shù)據(jù)核對(duì)其實(shí)是一個(gè)非常復(fù)雜的問(wèn)題尤其是在大數(shù)據(jù)量的情況下動(dòng)態(tài)核對(duì)大表甚至可以說(shuō)是災(zāi)難目前比較可行的數(shù)據(jù)核對(duì)方案主要有全量數(shù)據(jù)核對(duì)數(shù)據(jù)切片核對(duì)、帶時(shí)間戳的數(shù)據(jù)核對(duì)等。數(shù)據(jù)聚合應(yīng)急問(wèn)題當(dāng)數(shù)據(jù)聚合出現(xiàn)異?;蛘咄綍r(shí)效無(wú)法達(dá)到目標(biāo)時(shí)效時(shí)應(yīng)用如何應(yīng)急是一個(gè)需要解決的問(wèn)題建議訪問(wèn)聚合數(shù)據(jù)的應(yīng)用要有適當(dāng)?shù)慕导?jí)方案。應(yīng)用備份恢復(fù)部署方案針對(duì)不同的單元與分布式數(shù)據(jù)庫(kù)部署對(duì)應(yīng)關(guān)系所需采用的備份恢復(fù)方案也不相同。對(duì)于小單元部署,即一個(gè)單元部署在一個(gè)數(shù)據(jù)節(jié)點(diǎn)組,單元數(shù)據(jù)的備份只需針對(duì)該數(shù)據(jù)節(jié)點(diǎn)組進(jìn)行備份以MyQL內(nèi)核數(shù)據(jù)節(jié)點(diǎn)分布式數(shù)據(jù)庫(kù)為例,可以使用xtabckp物理備份工具對(duì)數(shù)據(jù)節(jié)點(diǎn)組的主庫(kù)或備庫(kù)進(jìn)行全量與增量的備份同時(shí)對(duì)數(shù)據(jù)節(jié)點(diǎn)組的增量變更日志也同步進(jìn)行備(例如bilog備份。除物理備份外,邏輯的關(guān)鍵數(shù)據(jù)正文備份也是常用的備份策略。由于單元與單元數(shù)據(jù)的隔離性不同單元的數(shù)據(jù)備份可以完全獨(dú)立備份文件的管理也可以獨(dú)立分別進(jìn)行每個(gè)單元的數(shù)據(jù)還原只依賴每個(gè)單元自己的備份文件所以并沒(méi)有全局一致性的備份需求對(duì)于不含拆分字段的數(shù)據(jù)以副本形式保留在每個(gè)業(yè)務(wù)單元中的場(chǎng)景在還原后需要考慮更新為最新數(shù)據(jù)還原主要應(yīng)用的場(chǎng)景包括災(zāi)備場(chǎng)景用于恢復(fù)單元數(shù)據(jù)容忍一部分的數(shù)據(jù)丟失,丟失數(shù)據(jù)量大小取決于增量變更日志的備份周期。單元數(shù)據(jù)節(jié)點(diǎn)組擴(kuò)容或節(jié)點(diǎn)替換場(chǎng)景基于備份恢復(fù)迅速初始化一個(gè)新的數(shù)據(jù)節(jié)點(diǎn)歷史數(shù)據(jù)的獲取通過(guò)基于時(shí)間點(diǎn)還原讀取歷史版本數(shù)據(jù)。其他,例如構(gòu)建測(cè)試環(huán)境。對(duì)于大單元部署,即一個(gè)單元部署在一個(gè)分布式數(shù)據(jù)庫(kù)集群,單元數(shù)據(jù)的備份恢復(fù)依賴分布式數(shù)據(jù)庫(kù)的備份恢復(fù)實(shí)現(xiàn)。不同于小單元場(chǎng)景分布式數(shù)據(jù)庫(kù)集群需要提供全局一致性的備份恢復(fù)功能即備份還原的數(shù)據(jù)不存在部分提交的分布式事務(wù)信息并且還原的集群相當(dāng)于當(dāng)前集群的一個(gè)歷史快照可以基于集群的全局增量變更日志進(jìn)行增量變更的同步備份任務(wù)的執(zhí)行將依托CDB庫(kù)并且由自動(dòng)化運(yùn)維管理平臺(tái)進(jìn)行集中式的調(diào)度管理同時(shí)建議備份任務(wù)走備份私網(wǎng)避開(kāi)業(yè)務(wù)網(wǎng)絡(luò)避免備份對(duì)業(yè)務(wù)流量的影響。(四)數(shù)據(jù)庫(kù)運(yùn)維要求基本運(yùn)維需求隨著單元化架構(gòu)與分布式數(shù)據(jù)庫(kù)技術(shù)的引入,銀行IT系統(tǒng)的運(yùn)維工作量是傳統(tǒng)架構(gòu)的幾倍甚至幾十倍的提升本章節(jié)將更多側(cè)重分布式數(shù)據(jù)庫(kù)在單元化架構(gòu)下的運(yùn)維解決方案并且本章內(nèi)容參考了《新一代銀行IT架構(gòu)》。單元化架構(gòu)下對(duì)分布式數(shù)據(jù)庫(kù)應(yīng)用運(yùn)維主要的需求包括但不限于:高效合理的資源分配由于單元化架構(gòu)下特別是小單元設(shè)計(jì)方案單元的升配新增與集群節(jié)點(diǎn)的擴(kuò)容是常見(jiàn)操作如何高效統(tǒng)籌全局縮短資源環(huán)境準(zhǔn)備周期提高資源控制精細(xì)度以減少浪費(fèi)是主要的運(yùn)維挑戰(zhàn)之一。高可控的灰度發(fā)布管理根據(jù)業(yè)界經(jīng)驗(yàn)在一般系統(tǒng)故障中,有超過(guò)70是由發(fā)布變更引起的而該風(fēng)險(xiǎn)在單元化架構(gòu)下進(jìn)一步提升如何降低灰度發(fā)布的危險(xiǎn)影響范圍將改動(dòng)的風(fēng)險(xiǎn)份數(shù)與縮小,以保障系統(tǒng)整體的可靠性是主要的運(yùn)維挑戰(zhàn)之一。高效自動(dòng)化的運(yùn)維管理。依托分布式架構(gòu),從效率、安全、連接等多個(gè)維度構(gòu)建分布式高效執(zhí)行與分發(fā)自動(dòng)化調(diào)度與執(zhí)行結(jié)果合并以及便捷系統(tǒng)聯(lián)動(dòng)的自動(dòng)化運(yùn)維管理平臺(tái)是單元化架構(gòu)下分布式數(shù)據(jù)庫(kù)應(yīng)用運(yùn)維的核心工作,也是主要挑戰(zhàn)之一。高覆蓋全鏈路的監(jiān)控告警在單元化與分布式數(shù)據(jù)庫(kù)結(jié)合的技術(shù)架構(gòu)下業(yè)務(wù)全鏈路所涉及的節(jié)點(diǎn)與組件顯著增加全方位的鏈路監(jiān)控告警體系的建設(shè)是安全生產(chǎn)和鏈路性能分析的基礎(chǔ),也是主要挑戰(zhàn)之一。運(yùn)維關(guān)鍵技術(shù)為了應(yīng)對(duì)上文論述的運(yùn)維挑戰(zhàn)單元化架構(gòu)下分布式數(shù)據(jù)庫(kù)應(yīng)用的典型運(yùn)維解決方案需要重點(diǎn)考慮如下運(yùn)維關(guān)鍵技術(shù)的建設(shè):CMDB配置管理數(shù)據(jù)庫(kù)CMB是所有運(yùn)維工具的基礎(chǔ)存儲(chǔ)并集中管理全局物理層、邏輯層和應(yīng)用層的配置項(xiàng)及關(guān)系信息同時(shí)通過(guò)豐富的對(duì)外AI接口與其他關(guān)鍵技術(shù)組件進(jìn)行融合支撐運(yùn)維管理工具以及流程運(yùn)作中對(duì)于配置信息的使用。CMB具備如下特性:配置模型的動(dòng)態(tài)擴(kuò)展能力配置項(xiàng)屬性及關(guān)系屬性數(shù)據(jù)類型、唯一性,組合關(guān)鍵字等均可動(dòng)態(tài)定義與使用。配置查詢靈活多樣。支持自動(dòng)以多配置的在線關(guān)聯(lián)查詢。細(xì)粒度的權(quán)限管理,同時(shí)支持權(quán)限的在線配置調(diào)整。開(kāi)放友好的API服務(wù),可以方便地進(jìn)行調(diào)度與集成。版本管理支持多維度數(shù)據(jù)變遷歷史的查詢支持配置數(shù)據(jù)版本基線比對(duì)、支持版本回退。閉環(huán)管理。系統(tǒng)設(shè)計(jì)的部署架構(gòu)需要存儲(chǔ)進(jìn)CMB、業(yè)務(wù)的部署過(guò)程的發(fā)起需要基于CMB中的部署架構(gòu)信息、資源的分配需要基于CMB全局資源信息進(jìn)行、資源的準(zhǔn)備情況與部署信息也需要存儲(chǔ)進(jìn)CD資源的監(jiān)控需要基于CMB的部署信息最后系統(tǒng)下線資源回收需要基于CMB并將最終結(jié)果記錄到CMB。智能資源分配管理系統(tǒng)。智能資源分配管理系統(tǒng)基于CMB數(shù)據(jù)庫(kù)中的資源信息,根據(jù)預(yù)設(shè)規(guī)則對(duì)全行主機(jī)資源進(jìn)行管理和分配目標(biāo)是大幅提高生產(chǎn)與測(cè)試環(huán)境搭建效率縮短資源分配與準(zhǔn)備周期嚴(yán)格落實(shí)高可用規(guī)則同時(shí)提高資源利用率。首先單元化架構(gòu)下分布式數(shù)據(jù)庫(kù)應(yīng)用的資源分配必須嚴(yán)格遵守高可用部署規(guī)則對(duì)于一個(gè)數(shù)據(jù)節(jié)點(diǎn)組而言同城至少要有2份副本異地至少有一份副本對(duì)于重要子系統(tǒng)數(shù)據(jù)節(jié)點(diǎn)組在主機(jī)房至少部署2份副本一個(gè)應(yīng)用子系統(tǒng)的多個(gè)實(shí)例分布在2個(gè)或2個(gè)以上不同的物理機(jī)上在單個(gè)數(shù)據(jù)中心一個(gè)數(shù)據(jù)節(jié)點(diǎn)組分布式在2個(gè)或2個(gè)以上不同的機(jī)柜上不同的應(yīng)用域不共享物理機(jī)同時(shí)基于CMB滿足應(yīng)用本身希望滿足的特殊規(guī)則,例如子系統(tǒng)互斥。其次支持豐富的IAS資源供給,可以按需提供物理機(jī)、虛擬機(jī)和容器的資源分配。基于CMB的全局資源使用狀態(tài)信息和應(yīng)用的部署需求高效地從全局資源中挑選滿足規(guī)則的合適的資源進(jìn)行交付。再次具備資源的創(chuàng)建能力即當(dāng)資源不足時(shí)可以通過(guò)外部的資源創(chuàng)建平臺(tái)實(shí)現(xiàn)資源的實(shí)時(shí)動(dòng)態(tài)創(chuàng)建例如當(dāng)虛擬機(jī)資源池資源不足時(shí)可以根據(jù)母機(jī)資源情況動(dòng)態(tài)創(chuàng)建新的虛擬機(jī)資源。最后是現(xiàn)網(wǎng)掃描巡檢能力自動(dòng)識(shí)別不符合當(dāng)前規(guī)則的應(yīng)用部署,提供整改建議。自動(dòng)化運(yùn)維平臺(tái)自動(dòng)化運(yùn)維平臺(tái)實(shí)現(xiàn)了單元化架構(gòu)下分布式數(shù)據(jù)庫(kù)部署維護(hù)的全生命周期管理相比傳統(tǒng)架構(gòu)下的自動(dòng)運(yùn)維管理平臺(tái)面向單元化與分布式數(shù)據(jù)庫(kù)結(jié)合架構(gòu)下的運(yùn)維管理平臺(tái)需要面對(duì)大量服務(wù)器節(jié)點(diǎn)場(chǎng)景下的標(biāo)準(zhǔn)化與批量化的運(yùn)維壓力所以需要著重建設(shè)如下能力:腳本管理與場(chǎng)景化腳本運(yùn)維能力。由于單元化+分布式架構(gòu)下集群節(jié)點(diǎn)數(shù)顯著增加存在大量需要基于腳本進(jìn)行統(tǒng)一批量執(zhí)行的運(yùn)維操作例如所有節(jié)點(diǎn)的一次配置變更所以平臺(tái)針對(duì)腳本的使用需要支持腳本的管理與執(zhí)行允許腳本在已授權(quán)的一臺(tái)或多臺(tái)機(jī)器行運(yùn)行支持針對(duì)場(chǎng)景的預(yù)定義腳本管理支持腳本的執(zhí)行調(diào)度管(例如前后順序串行或并行最后執(zhí)行性能的擴(kuò)展性即針對(duì)大規(guī)模節(jié)點(diǎn)的并發(fā)執(zhí)行效率應(yīng)該與節(jié)點(diǎn)的規(guī)模相關(guān)度不大。發(fā)布管理支持對(duì)灰度發(fā)布的調(diào)度管理例如灰度發(fā)布的順序間隔并行力度等支持差異化的變量配置可以便捷定義與使用差異化規(guī)則。支持版本管理與回滾,對(duì)于一個(gè)子系統(tǒng),自動(dòng)運(yùn)維平臺(tái)應(yīng)該記錄所有主機(jī)的應(yīng)用與數(shù)據(jù)庫(kù)節(jié)點(diǎn)版本和發(fā)布時(shí)間線,支持快速高效的回退。支持分布式架構(gòu)下的數(shù)據(jù)庫(kù)操作結(jié)果合并能力針對(duì)小單元架構(gòu)運(yùn)維管理平臺(tái)需要具備跨單元分布式數(shù)據(jù)庫(kù)節(jié)點(diǎn)數(shù)據(jù)的查詢合并能力將各個(gè)單元的查詢結(jié)果合并提供一個(gè)完成的查詢數(shù)據(jù)。支持風(fēng)險(xiǎn)識(shí)別與自動(dòng)備份特別通過(guò)運(yùn)維管理平臺(tái)進(jìn)行涉及數(shù)據(jù)的高風(fēng)險(xiǎn)操作時(shí)運(yùn)維管理平臺(tái)可以自動(dòng)調(diào)用分布式數(shù)據(jù)庫(kù)的備份能力,進(jìn)行數(shù)據(jù)備份,并按需快速還原。分布式的定時(shí)任務(wù)管理定時(shí)任務(wù)可以根據(jù)管理員定義的固定時(shí)間或間隔周期來(lái)針對(duì)一個(gè)給定范圍執(zhí)行一項(xiàng)任意的任務(wù)任務(wù)的執(zhí)行需要避免多次執(zhí)行超時(shí)執(zhí)行和漏執(zhí)行針對(duì)單元的數(shù)據(jù)庫(kù)備份任務(wù)就是典型的分布式定時(shí)任務(wù)。分布式架構(gòu)下的文件存儲(chǔ)與分發(fā)。無(wú)論是應(yīng)用/數(shù)據(jù)庫(kù)版本發(fā)布還是日常運(yùn)維都會(huì)涉及文(例如安裝包腳本的快速分(1臺(tái)或多臺(tái)主機(jī)同時(shí)針對(duì)跨中心的場(chǎng)景應(yīng)用具備就近分發(fā)能力,分發(fā)過(guò)程可以基于最近的存儲(chǔ)節(jié)點(diǎn)或副本進(jìn)行分發(fā)。鏈路監(jiān)控告警系統(tǒng)單元化+分布式數(shù)據(jù)庫(kù)架構(gòu)場(chǎng)景下,業(yè)務(wù)請(qǐng)求調(diào)用鏈路的復(fù)雜度顯著增加鏈路監(jiān)控告警系統(tǒng)需要覆蓋單元化業(yè)務(wù)到分布式數(shù)據(jù)庫(kù)的全鏈路組件的端到端的監(jiān)控告警能力。具體如下:全覆蓋監(jiān)控提供全鏈路基礎(chǔ)架構(gòu)公共平臺(tái)中間件應(yīng)用數(shù)據(jù)庫(kù)的監(jiān)控與告警能力提供聯(lián)機(jī)業(yè)務(wù)指標(biāo)和跑批場(chǎng)景指標(biāo)的監(jiān)控。模板化監(jiān)控配置提供模板化的監(jiān)控采集配置基于策略的閾值配置以及個(gè)性化監(jiān)控告警通知規(guī)則同時(shí)可以實(shí)現(xiàn)基于CMB部署信息的監(jiān)控配置自動(dòng)添加。個(gè)性化監(jiān)控視圖建立多維度監(jiān)控視圖可自定義監(jiān)控展現(xiàn)面板。建立端到端的交易場(chǎng)景監(jiān)控與跑批的全局監(jiān)控視圖。靈活的監(jiān)控告警上報(bào)與存儲(chǔ)提供靈活的監(jiān)控指標(biāo)上報(bào)和告警信息上報(bào)接口支持指標(biāo)和告警歷史值的查詢與導(dǎo)出并可以按需設(shè)定存儲(chǔ)保留策略。對(duì)于單元化+分布式數(shù)據(jù)庫(kù)架構(gòu)下的鏈路監(jiān)控,其中一個(gè)非常關(guān)鍵的功能就是全鏈路各環(huán)節(jié)響應(yīng)時(shí)間的監(jiān)控采集與分析匯總。即可以從全局層宏觀的查看各個(gè)環(huán)境的響應(yīng)時(shí)間均值情況,也可以針對(duì)特定慢交易查看具體慢在哪個(gè)環(huán)節(jié)。如圖23所示是一個(gè)鏈路響應(yīng)時(shí)間監(jiān)控的實(shí)現(xiàn)方案示例系統(tǒng)鏈路追蹤通過(guò)鏈路日志收集模塊收集微服務(wù)調(diào)用信息并輸出到磁盤的日志文件中,并通過(guò)fiebat實(shí)時(shí)傳輸?shù)絢aka集群中。通過(guò)訂閱kaka日志toic的程序基于SpnI(當(dāng)前這次調(diào)用的ITrced(一次請(qǐng)求會(huì)生成一次全局的請(qǐng)求ID,跨節(jié)點(diǎn)往下傳遞)進(jìn)行解析、過(guò)濾后傳輸給ES集群,以提供檢索、分析功能。最后數(shù)據(jù)可視化展示鏈路信息輸出點(diǎn)位于網(wǎng)關(guān)業(yè)務(wù)接收業(yè)務(wù)發(fā)送、數(shù)據(jù),每一次遠(yuǎn)程調(diào)用請(qǐng)求生成一個(gè)Spn。San是請(qǐng)求中的基本工作單元,用于記錄調(diào)用中的詳細(xì)信息(如時(shí)間、調(diào)用ip地址和端口接口名稱接口參數(shù)響應(yīng)參數(shù)等需要通過(guò)代碼調(diào)整在網(wǎng)管層、業(yè)務(wù)層和數(shù)據(jù)層進(jìn)行san信息的采集與文件輸出,平臺(tái)根據(jù)輸出的san能拼出一條完整的請(qǐng)求鏈路。圖23圖四、典型案例(一)建設(shè)銀行案例應(yīng)用背景建設(shè)銀行客戶規(guī)模和日均交易量達(dá)數(shù)億級(jí)別當(dāng)前主機(jī)平臺(tái)已逐步顯現(xiàn)處理性能壓力且隨著信息化技術(shù)的快速發(fā)展業(yè)務(wù)規(guī)模仍將進(jìn)一步擴(kuò)大傳統(tǒng)集中式架構(gòu)達(dá)到擴(kuò)容瓶頸無(wú)法滿足未來(lái)業(yè)務(wù)發(fā)展需要另一面當(dāng)前金融業(yè)核心系統(tǒng)強(qiáng)依賴于國(guó)外軟硬件不滿足國(guó)家安全戰(zhàn)略要求因此行內(nèi)核心系統(tǒng)由主機(jī)下移到開(kāi)放平臺(tái)勢(shì)在必行為實(shí)現(xiàn)以上目標(biāo)建設(shè)銀行開(kāi)展了核心系統(tǒng)下移至國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù)相關(guān)工作。但目前國(guó)內(nèi)大規(guī)模復(fù)雜的核心業(yè)務(wù)下移至國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù)的方案還達(dá)到成熟可借鑒的程度國(guó)產(chǎn)軟硬件產(chǎn)品也需要時(shí)間檢驗(yàn)產(chǎn)品成熟度因此整個(gè)工程大膽探索采用大量開(kāi)創(chuàng)性技術(shù),通過(guò)應(yīng)用單元化和分布式數(shù)據(jù)庫(kù)底座實(shí)現(xiàn)核心系統(tǒng)向分布式平臺(tái)平穩(wěn)下移。下面詳細(xì)介紹。應(yīng)用方案建設(shè)銀行分布式系統(tǒng)總體技術(shù)架構(gòu)如圖2包含應(yīng)用路由、服務(wù)集成代理應(yīng)用組件集群配置中心分布式數(shù)據(jù)庫(kù)等主要組件其中分布式數(shù)據(jù)庫(kù)使用GodeDB分布式數(shù)據(jù)庫(kù)如圖24所示各組件構(gòu)成有機(jī)整體實(shí)現(xiàn)大型系統(tǒng)靈活路由和高并發(fā)處理能力。具體如下:圖24 構(gòu)應(yīng)用集成層應(yīng)用集成層包含應(yīng)用路由服務(wù)集成代理兩大組件。應(yīng)用路由:具備橫向轉(zhuǎn)發(fā)能力,交易請(qǐng)求發(fā)往應(yīng)用集成層,首先會(huì)就近進(jìn)入當(dāng)?shù)氐膽?yīng)用路由應(yīng)用路由通過(guò)配置中心的AI接口,確認(rèn)交易請(qǐng)求歸屬的Rgin,如不屬于本地Reion,則將請(qǐng)求轉(zhuǎn)發(fā)至交易歸屬Reion的應(yīng)用路由對(duì)應(yīng)Reion的應(yīng)用路接收到請(qǐng)求后會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給與其同Reion的服務(wù)集成代理。服務(wù)集成代理服務(wù)集成代理具備跨系統(tǒng)事務(wù)一致性處理能力,當(dāng)一筆交易涉及多個(gè)服務(wù)子系統(tǒng),如涉及跨Reion的轉(zhuǎn)賬交易時(shí)服務(wù)集成代理會(huì)將單筆轉(zhuǎn)賬交易拆解成一筆轉(zhuǎn)出交易和一筆轉(zhuǎn)入交易,每筆交易都會(huì)同時(shí)準(zhǔn)備好相應(yīng)的沖正交易數(shù)據(jù)。此外在系統(tǒng)過(guò)程投產(chǎn)過(guò)程中一支業(yè)務(wù)的部分?jǐn)?shù)據(jù)還在主機(jī)平臺(tái)部分?jǐn)?shù)據(jù)在開(kāi)放平臺(tái)這種情況也由服務(wù)集成代理跨平臺(tái)協(xié)調(diào)一致。產(chǎn)品服務(wù)層產(chǎn)品服務(wù)層提供銀行業(yè)務(wù)的具體服務(wù)包含產(chǎn)品服務(wù),是整個(gè)信息系統(tǒng)的重要組成,目前運(yùn)行在三個(gè)平臺(tái)上:主機(jī)平臺(tái)、C平臺(tái)和JAA平臺(tái)。其中主機(jī)平臺(tái)上的產(chǎn)品服務(wù)會(huì)全部下移到開(kāi)放平臺(tái)(C/AVA)上。開(kāi)放平臺(tái)上引入GodeDB分布式數(shù)據(jù)庫(kù)承載原來(lái)主機(jī)平臺(tái)上的數(shù)據(jù)庫(kù)服務(wù)數(shù)據(jù)訪問(wèn)代理作為產(chǎn)品服務(wù)和數(shù)據(jù)庫(kù)之間的適配層,針對(duì)GodeDB等多種數(shù)據(jù)庫(kù)進(jìn)行適配和統(tǒng)一訪問(wèn)。配置中心負(fù)責(zé)提供應(yīng)用路由和服務(wù)集成代理所需要的定位信息配置中心包含客戶端和服務(wù)端兩部分客戶端通過(guò)SDK的方式嵌入在應(yīng)用路由和服務(wù)集成代理組件內(nèi),服務(wù)端基于ZKNoQL緩存等方式開(kāi)放相應(yīng)的路由數(shù)據(jù)查詢服務(wù)。GodeDB分布式數(shù)據(jù)庫(kù)提供大規(guī)模數(shù)據(jù)存儲(chǔ)和高并發(fā)數(shù)據(jù)庫(kù)訪問(wèn)能力。GldnDB實(shí)現(xiàn)數(shù)據(jù)多分片、彈性擴(kuò)容和分布式事務(wù)強(qiáng)一致讀寫通過(guò)數(shù)據(jù)多副本快同步分組管理備份恢復(fù)等技術(shù)實(shí)現(xiàn)大規(guī)模數(shù)據(jù)庫(kù)的高可用高可靠以及多地多中心容災(zāi)能力。數(shù)據(jù)切分與路由方案:業(yè)務(wù)單元?jiǎng)澐志C合考慮業(yè)務(wù)負(fù)載均衡數(shù)據(jù)量負(fù)載均衡以及減少跨區(qū)操作等因素通過(guò)數(shù)據(jù)的水平拆分和垂直拆分兩種方式,將業(yè)務(wù)劃分為四個(gè)SPU大邏輯單元,近百個(gè)數(shù)據(jù)分片。業(yè)務(wù)請(qǐng)求通過(guò)渠道層后進(jìn)入應(yīng)用集成層首先會(huì)就近進(jìn)入本地應(yīng)用路由,本地應(yīng)用路由解析出請(qǐng)求中的業(yè)務(wù)類型以及信息通過(guò)訪問(wèn)配置中心的路由數(shù)據(jù)確認(rèn)交易請(qǐng)求歸屬的業(yè)務(wù)單元如不屬于本地業(yè)務(wù)單元?jiǎng)t將請(qǐng)求轉(zhuǎn)發(fā)至交易歸屬業(yè)務(wù)單元的應(yīng)用路由對(duì)應(yīng)業(yè)務(wù)單元的應(yīng)用路由接收到請(qǐng)求后會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給與其同一單元內(nèi)的服務(wù)集成代理。圖25 成如圖25所示具體來(lái)說(shuō),前端渠道送到平臺(tái)的請(qǐng)求,根據(jù)請(qǐng)求路由的交易碼確定路由的類型支持卡號(hào)賬號(hào)和手機(jī)號(hào)等,通過(guò)對(duì)應(yīng)的號(hào)碼信息查詢到所在應(yīng)用分區(qū)號(hào)再根據(jù)應(yīng)用分區(qū)號(hào)可以快速確定對(duì)應(yīng)的服務(wù)單元地址。應(yīng)用層的服務(wù)單元數(shù)量較多通過(guò)眾多節(jié)點(diǎn)分擔(dān)聯(lián)機(jī)處理壓力滿足高并發(fā)處理性能要求。而在數(shù)據(jù)庫(kù)層,則使用大單元機(jī)制,在一套GodeDB集群下創(chuàng)建四個(gè)租戶集群分別部署在四個(gè)數(shù)據(jù)中心由于數(shù)據(jù)庫(kù)層采用大單元設(shè)計(jì),同一數(shù)據(jù)中心內(nèi)的請(qǐng)求均由同一數(shù)據(jù)庫(kù)租戶處理,無(wú)需應(yīng)用層協(xié)調(diào)分布式事務(wù)這顯著降低跨服務(wù)集成代理跨子系統(tǒng)處理的業(yè)務(wù)吞吐量,減少資源壓力。采用大單元設(shè)計(jì)的好處是應(yīng)用層和數(shù)據(jù)庫(kù)層擴(kuò)容解耦當(dāng)數(shù)據(jù)容量不足時(shí)數(shù)據(jù)擴(kuò)容僅發(fā)生在數(shù)據(jù)庫(kù)層路由層無(wú)需任何配置改變而應(yīng)用處理性能不足時(shí)增加對(duì)應(yīng)數(shù)據(jù)中心的應(yīng)用服務(wù)節(jié)點(diǎn)路由層的應(yīng)用路由和配置中心僅需要關(guān)注業(yè)務(wù)類型信息即可,如圖26所示。圖26 耦其次是簡(jiǎn)化路由配置的粒度不需要基于分行粒度或分片粒度進(jìn)行路由設(shè)計(jì),路由粒度變?yōu)樗膫€(gè)大單元級(jí),管理更加簡(jiǎn)單,減少了配置管理的復(fù)雜度??鐢?shù)據(jù)中心事務(wù)由服務(wù)集成帶來(lái)實(shí)現(xiàn)服務(wù)集成代理具備處理跨系統(tǒng)子事務(wù)的一致性能力將數(shù)據(jù)中心請(qǐng)求拆解成一個(gè)或多個(gè)服務(wù)請(qǐng)求如跨數(shù)據(jù)中心轉(zhuǎn)賬交易時(shí)服務(wù)集成代理會(huì)將單筆轉(zhuǎn)賬交易拆解成一筆轉(zhuǎn)出交易和一筆轉(zhuǎn)入交易每筆交易都會(huì)同時(shí)準(zhǔn)備好相應(yīng)的沖正交易數(shù)據(jù)執(zhí)行正常等待各子系統(tǒng)完成交易操作執(zhí)行失敗則會(huì)調(diào)用該交易的沖正交易確保轉(zhuǎn)賬涉及的各方賬戶數(shù)據(jù)恢復(fù)到交易之前狀態(tài)而大單元內(nèi)部的跨行操作由GodeDB分布式事務(wù)來(lái)保障GodeDB通過(guò)全局事務(wù)節(jié)點(diǎn)來(lái)管理分布式事務(wù)的生命周期,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)強(qiáng)一致。應(yīng)用成果對(duì)私核心系統(tǒng)里程碑節(jié)點(diǎn):201.3完成國(guó)內(nèi)對(duì)私業(yè)務(wù)的大型分布式核心系統(tǒng)在生產(chǎn)環(huán)境部署,實(shí)現(xiàn)與主機(jī)系統(tǒng)并網(wǎng)運(yùn)行,交易雙發(fā)。201.7完成海外核心在生產(chǎn)環(huán)境部署實(shí)現(xiàn)與主機(jī)系統(tǒng)并網(wǎng)運(yùn)行,交易雙發(fā)。201.2青海寧夏兩家分行的對(duì)私業(yè)務(wù)從并網(wǎng)狀態(tài)切換到開(kāi)放平臺(tái),完成兩省投產(chǎn)。試點(diǎn)業(yè)務(wù)非功能指標(biāo)下移開(kāi)放平臺(tái)后平均交易時(shí)長(zhǎng)控制在50s左右,接近主機(jī)平臺(tái)處理時(shí)延;核心批處理時(shí)長(zhǎng)縮短1個(gè)小時(shí);壓力峰值大大減輕,在3萬(wàn)TPS下仍保持低資源占用,達(dá)到建設(shè)銀行對(duì)服務(wù)質(zhì)量以及未來(lái)業(yè)務(wù)增長(zhǎng)的處理性能要求。當(dāng)前已完成兩個(gè)省份投產(chǎn)正在逐步將其他省分行從并網(wǎng)狀態(tài)切換到投產(chǎn)狀態(tài)并加大主機(jī)平臺(tái)剩余系統(tǒng)向分布式平臺(tái)遷移的步伐。單元化架構(gòu)提升了系統(tǒng)的橫向擴(kuò)展能力和系統(tǒng)整體可用性。但單元化開(kāi)發(fā)對(duì)于應(yīng)用存在一定的侵入在新系統(tǒng)設(shè)計(jì)時(shí)需要認(rèn)真分析單元拆分的邏輯減少跨單元訪問(wèn)建設(shè)銀行采用大單元設(shè)計(jì)將核心系統(tǒng)數(shù)據(jù)拆分為四個(gè)大單元單元內(nèi)的跨分片事務(wù)處理交由分布式數(shù)據(jù)庫(kù)處理大單元之間的事務(wù)交由服務(wù)集成代理處理,有效減少了在下移改造過(guò)程中對(duì)原有系統(tǒng)的邏輯入侵,最大程度地保持了系統(tǒng)的穩(wěn)定性實(shí)現(xiàn)了應(yīng)用路由層產(chǎn)品服務(wù)層和分布式數(shù)據(jù)庫(kù)層的解耦,便于各層獨(dú)立擴(kuò)容和管理。(二)平安銀行案例應(yīng)用背景平安銀行信用卡老的核心系統(tǒng)采用的是IM大型機(jī)AS00架構(gòu)由于是國(guó)外成熟技術(shù)早期對(duì)平安銀行信用卡業(yè)務(wù)的起到很好的推動(dòng)作用但是隨著業(yè)務(wù)的發(fā)展系統(tǒng)技術(shù)升級(jí)困難軟硬件成本過(guò)高系統(tǒng)擴(kuò)容難度大業(yè)務(wù)發(fā)展不靈活新功能實(shí)現(xiàn)周期過(guò)長(zhǎng)等問(wèn)題愈發(fā)凸顯。208年平安銀行啟動(dòng)信用卡核心系統(tǒng)的重構(gòu)選型,經(jīng)過(guò)多輪的對(duì)比最終決策以高擴(kuò)展高彈性業(yè)務(wù)自主可控為主要的架構(gòu)重構(gòu)目標(biāo)選擇分布式單元化架構(gòu)去IBM大型機(jī)數(shù)據(jù)庫(kù)使用TDQL,預(yù)期實(shí)現(xiàn)至少支持10倍并發(fā)業(yè)務(wù)量,支撐3.3倍發(fā)卡量批量處理性能提升3倍并且實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)完全自主可控的目標(biāo)。建設(shè)方案單元化業(yè)務(wù)總體架構(gòu)平安銀行單元化架構(gòu)基于量身打造的分布式PaS平臺(tái)如圖27應(yīng)用在進(jìn)行單元化分布式改造時(shí)盡可能只關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn),而平臺(tái)架構(gòu)、數(shù)據(jù)庫(kù)和各種工具交給PaS層。圖27行Ps臺(tái)平安銀行信用卡業(yè)務(wù)的單元化DSU架構(gòu)總體如圖28所示總體上我們的DS(DstibtedSrvceUnt)架構(gòu)包括CS區(qū)(CmmnSevi)、CM區(qū)(CetrlMnaemn)和DSU區(qū),其中CS區(qū)和CM區(qū)為非單元化區(qū)DSU區(qū)為單元化區(qū)CS區(qū)是提供公共服務(wù)主要包括配置中心監(jiān)控中心消息中心注冊(cè)中心、發(fā)布中心等;CM區(qū)是提供公共管理功能,主要進(jìn)行參數(shù)管理運(yùn)營(yíng)管理經(jīng)營(yíng)報(bào)表服務(wù)DSU區(qū)是按照客戶緯度進(jìn)行單元化拆分后的業(yè)務(wù)數(shù)據(jù)區(qū)單元的基本要求是業(yè)務(wù)自包含即客戶的業(yè)務(wù)在單元內(nèi)完成,同一個(gè)客戶無(wú)須跨單元訪問(wèn)相關(guān)數(shù)據(jù)。圖28圖業(yè)務(wù)單元的數(shù)據(jù)切分與路由方案單元分片的路由邏輯如圖9,是根據(jù)卡號(hào)、客戶號(hào)、銀賬號(hào)進(jìn)行映射,每個(gè)客戶會(huì)根據(jù)卡賬客的映射得到一個(gè)唯一的PID號(hào),根據(jù)PID進(jìn)行hah得到該客戶所在分片。分片信息由GNS服務(wù)負(fù)責(zé)維護(hù)在用戶第一次注冊(cè)時(shí)分配之后客戶每次登錄時(shí)訪問(wèn)該數(shù)據(jù)。GNS把分片信息同步給DLS服務(wù),DLS服務(wù)負(fù)責(zé)進(jìn)行服務(wù)的交付收到用戶請(qǐng)求后根據(jù)GS的分片信息生成路由到該分片的策略DLS把請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的DSU后由DSU完成業(yè)務(wù)邏輯,并把結(jié)果返回給客戶端。圖29輯分布式數(shù)據(jù)庫(kù)部署方案如圖30所示是平安銀行單元化的部署架構(gòu),采用了兩地三中心的架構(gòu),根據(jù)所承載用戶的不同劃分出多個(gè)邏輯單元。圖30構(gòu)生產(chǎn)數(shù)據(jù)中心和同城數(shù)據(jù)中心之間采用數(shù)據(jù)強(qiáng)同步,如圖31所示即任意時(shí)刻同城RO=RTO理論在40s左右實(shí)際測(cè)試最壞的情況不超過(guò)9s。當(dāng)生產(chǎn)中心出現(xiàn)任何軟硬件異常時(shí),業(yè)務(wù)會(huì)自動(dòng)切換到同城數(shù)據(jù)中心期間的業(yè)務(wù)影響是業(yè)務(wù)總體的1/n短暫不可用,不可用時(shí)間小于一分鐘。圖31構(gòu)試點(diǎn)業(yè)務(wù)擴(kuò)容策略設(shè)計(jì)擴(kuò)容策略時(shí)同時(shí)考慮到縱向和橫向的擴(kuò)容場(chǎng)景,如圖32所示。圖32容縱向來(lái)說(shuō)初始上線的系統(tǒng)配置只占服務(wù)器資源的25這意味必要時(shí)在不更換硬件的情況下可以進(jìn)行4倍的擴(kuò)容而橫向上則可以支持無(wú)限的橫向擴(kuò)容隨著業(yè)務(wù)增長(zhǎng)可以滿足任意量級(jí)的業(yè)務(wù)發(fā)展需求。雖然可以方便的進(jìn)行縱向擴(kuò)容但是需要理解分布式架構(gòu)對(duì)縱向擴(kuò)容的需求應(yīng)該盡可能低,因此設(shè)計(jì)的縱向擴(kuò)容方案為“以防為主以治為輔的方針盡量避免數(shù)據(jù)遷移的發(fā)生同時(shí)還需充分考慮到單元的容量余量,給DSU容量預(yù)留了一定的bufe。橫向擴(kuò)容的整體邏輯如圖33所示新建一組或者多組單元。調(diào)整客戶的路由規(guī)則,比如新的客戶路由到新單元的比重調(diào)高,讓大部分新客戶端路由到新的分片由于路由規(guī)則的調(diào)整后續(xù)老的DSU業(yè)務(wù)基本不再增長(zhǎng),新DSU承擔(dān)了新業(yè)務(wù)的流量。圖33充數(shù)據(jù)操作包括數(shù)據(jù)訪問(wèn)和更新為了支持單元化的架構(gòu),可把數(shù)據(jù)訪問(wèn)工具和業(yè)務(wù)一樣進(jìn)行分片化訪問(wèn)可以一次訪問(wèn)一個(gè)分片也可以一次訪問(wèn)全部分片雖然系統(tǒng)是分布式的但是事務(wù)卻未必要分布式相反應(yīng)盡可能規(guī)避分布式事務(wù)以保證系統(tǒng)的健壯性在業(yè)務(wù)邏輯上盡可能實(shí)現(xiàn)單元內(nèi)業(yè)務(wù)自包含如果一定要進(jìn)行分布式事務(wù)需考慮在框架層支持如果框架也不能支持時(shí)由應(yīng)用層實(shí)現(xiàn)應(yīng)盡可能避免使用數(shù)據(jù)庫(kù)層的分布式事務(wù)一方面數(shù)據(jù)庫(kù)的分布式事務(wù)還不成熟另外容易形成對(duì)特定數(shù)據(jù)庫(kù)的依賴并產(chǎn)生單點(diǎn)故障的風(fēng)險(xiǎn)。試點(diǎn)業(yè)務(wù)維護(hù)方案由于所有的系統(tǒng)節(jié)點(diǎn)完成了去中心化的工作因此對(duì)所有節(jié)點(diǎn)都可以使用滾動(dòng)升級(jí)的模式進(jìn)行維護(hù),而不影響業(yè)務(wù)的連續(xù)性同時(shí)對(duì)可能發(fā)生意外或者容易出現(xiàn)故障的環(huán)節(jié)做了完善的應(yīng)急預(yù)案,在緊急情況下可以自動(dòng)或者人工模式快速的故障恢復(fù)。應(yīng)用成果新信用卡核心系統(tǒng)實(shí)現(xiàn)了100源碼的自主知識(shí)產(chǎn)權(quán)。經(jīng)過(guò)壓測(cè)新信用卡核心系統(tǒng)并發(fā)業(yè)務(wù)量至少達(dá)到原A400核心系統(tǒng)并發(fā)量的0倍,交易耗時(shí)降低25倍,批量耗時(shí)降低3倍,新業(yè)務(wù)功能的交付周期大大縮短業(yè)務(wù)應(yīng)對(duì)市場(chǎng)能力得到提升系統(tǒng)總體建設(shè)維護(hù)成本降低0左右系統(tǒng)可用率提升一個(gè)檔次。業(yè)務(wù)時(shí)間里程碑節(jié)點(diǎn)200-0-1,信用卡A+上線切換成功,是分布式方案邁出第一步最重要的里程碑。200-1-1,新的信用卡A+上線后第一個(gè)雙十一和業(yè)務(wù)促銷活動(dòng),期間系統(tǒng)運(yùn)行平穩(wěn)。201-4-0完成信用卡A+容災(zāi)演練容災(zāi)切換過(guò)程平滑,系統(tǒng)運(yùn)行穩(wěn)定。201-7-9信用卡A同城切換演練采用到點(diǎn)一鍵切換,并在同城運(yùn)行一天,系統(tǒng)運(yùn)行平穩(wěn)。經(jīng)過(guò)系統(tǒng)促銷活動(dòng)重要節(jié)日同城容災(zāi)切換等檢驗(yàn)系統(tǒng)具備自動(dòng)化同城切換分鐘級(jí)容災(zāi)切換并真正承擔(dān)全業(yè)務(wù)流量的能力。試點(diǎn)業(yè)務(wù)非功能指標(biāo)系統(tǒng)可用率大大提高可以達(dá)到5個(gè)使用了僅1/3的成本建設(shè)了各項(xiàng)指標(biāo)都遠(yuǎn)超原系統(tǒng)的集中式架構(gòu)具體新老核心對(duì)比如圖34所示??偨Y(jié)和展

圖34比單元化的分布式架構(gòu)有著巨大的優(yōu)勢(shì),主要體現(xiàn)在,第一:雖然單機(jī)的可用率很低但是分布式系統(tǒng)整體的可用性卻大大提升第二通過(guò)對(duì)基礎(chǔ)架構(gòu)數(shù)據(jù)庫(kù)和應(yīng)用的自主可控達(dá)到了業(yè)務(wù)層的自主可控和業(yè)務(wù)快速創(chuàng)新的要求第三單元化的分布式架構(gòu)搭積木式的即插即用模式徹底解決了系統(tǒng)發(fā)展的瓶頸,無(wú)懼任何促銷。當(dāng)然單元化架構(gòu)也有其弊端主要有以下方面第一分布式架構(gòu)建設(shè)和改造的工作量大需要配套建設(shè)的分布式工具也很多第二過(guò)度單元化可能會(huì)帶來(lái)很多問(wèn)題比如上下游業(yè)務(wù)不均衡帶來(lái)的小業(yè)務(wù)被動(dòng)單元化以及單元化帶來(lái)的應(yīng)用層和數(shù)據(jù)庫(kù)層的資源浪費(fèi)等第三單元的失控和故障的蔓延分布式的故障如果不能做到有效的隔離很容易形成蔓延那將會(huì)是災(zāi)難,因此避免單元的管理失控非常重要。分布式單元化的架構(gòu),在信用卡A+業(yè)務(wù)上取得成功之后,平安銀行也在總結(jié)經(jīng)驗(yàn),把信用卡的模式推廣到其他的核心信息后續(xù)平安銀行成功上線了統(tǒng)一支付系統(tǒng)的分布式改造另外對(duì)其他核心系統(tǒng)的改造也在規(guī)劃和進(jìn)行中。(三)華夏銀行案例應(yīng)用背景隨著華夏銀行數(shù)字化轉(zhuǎn)型戰(zhàn)略的持續(xù)深入推進(jìn)銀行業(yè)務(wù)系統(tǒng)需要同時(shí)具備高性能可擴(kuò)展高可用高容錯(cuò)等特性為支撐各分行特色業(yè)務(wù)的快速發(fā)展更加開(kāi)放與靈活的技術(shù)架構(gòu)成為首選。建設(shè)方案單元化業(yè)務(wù)總體架構(gòu)華夏銀行分行中間業(yè)務(wù)平臺(tái)采用區(qū)域拆分的大單元設(shè)計(jì)設(shè)計(jì)要求統(tǒng)一入口流量調(diào)配各分行業(yè)務(wù)進(jìn)行資源隔離數(shù)據(jù)基于各分行進(jìn)行設(shè)計(jì)方案采用區(qū)域拆分的方式分行產(chǎn)品的所有數(shù)據(jù)放入一個(gè)單元對(duì)應(yīng)到一個(gè)單獨(dú)的分布式數(shù)據(jù)庫(kù)集群如單元1中代發(fā)工資ETC等業(yè)務(wù)產(chǎn)品對(duì)應(yīng)北京分行D組成完整區(qū)域大單元,其他分行依次類推。如圖35所示:圖35圖分布式數(shù)據(jù)庫(kù)部署方案如圖36所示是華夏銀行單元化的部署架構(gòu),根據(jù)分行地域的不同劃分出多個(gè)邏輯單元,采用同城雙中心架構(gòu)。數(shù)據(jù)庫(kù)層采用的是1主3備的方式本地機(jī)房1備另外中心機(jī)房2備份確保一個(gè)節(jié)點(diǎn)的ack返回主庫(kù)提交這樣最大的保障數(shù)據(jù)一致性并兼顧性能問(wèn)題,最大限度保證數(shù)據(jù)的安全。同城雙中心部署具備同城雙活能力每個(gè)數(shù)據(jù)中心均可對(duì)外提供服務(wù)同時(shí)具備城市內(nèi)部的跨中心容災(zāi)能力任何一個(gè)數(shù)據(jù)中心或主單元故障都可以切換到備中心或備單元提供服務(wù)。圖36圖業(yè)務(wù)高可靠與業(yè)務(wù)連續(xù)性架構(gòu)在城市大集群下進(jìn)行跨中心的一主三(四副本模式進(jìn)行部署通過(guò)配置同城從中心兩副本為強(qiáng)同步模(保證所有數(shù)據(jù)變更至少會(huì)在所有強(qiáng)同步副本中有一個(gè)完成持久化保證所有數(shù)據(jù)的變更具備跨中心的副本來(lái)應(yīng)對(duì)集群的跨中心高可用能力要求最大限度的保障數(shù)據(jù)一致性并兼顧性能問(wèn)題保證數(shù)據(jù)的安RT<30秒RP=主庫(kù)故障切換優(yōu)先切換本地備庫(kù)提升為主庫(kù),同時(shí)任何一個(gè)主單元故障,備單元都可以快速接管。以北京分行為例如圖7所示:圖6圖業(yè)務(wù)單元的數(shù)據(jù)切分與路由方案分行中間業(yè)務(wù)數(shù)據(jù)切分為按照分行地域進(jìn)行的大單元設(shè)計(jì)。每個(gè)分行單元包含多個(gè)業(yè)務(wù)模塊每個(gè)獨(dú)立分行單元對(duì)應(yīng)一個(gè)分布式數(shù)據(jù)庫(kù)集群在接入層通過(guò)跨中心高可用的動(dòng)態(tài)域名對(duì)應(yīng)用端提供統(tǒng)一訪問(wèn)入口,通過(guò)不同的云平臺(tái)IP進(jìn)行路由,分發(fā)到對(duì)應(yīng)的分行單元中。業(yè)務(wù)擴(kuò)容策略目前各分行數(shù)據(jù)庫(kù)集中存放在獨(dú)立的大集群數(shù)據(jù)庫(kù)中不同業(yè)務(wù)場(chǎng)景采用不同的數(shù)據(jù)拆分策略對(duì)于業(yè)務(wù)增長(zhǎng)慢容量需求較小的業(yè)務(wù)并未做數(shù)據(jù)拆分采用增加本地資源的策略進(jìn)行縱向擴(kuò)容該方式會(huì)因?yàn)閱螜C(jī)限制存在一定的瓶頸對(duì)于業(yè)務(wù)增長(zhǎng)快、容量需求大的業(yè)務(wù)做了數(shù)據(jù)拆分采用增加多個(gè)數(shù)據(jù)節(jié)點(diǎn)組的策略進(jìn)行橫向擴(kuò)容。業(yè)務(wù)跨單元數(shù)據(jù)操作與分布式事務(wù)設(shè)計(jì)跨單元操作會(huì)產(chǎn)生分布式事務(wù)跨節(jié)點(diǎn)的數(shù)據(jù)一致性需要使用2P/3C/CC等實(shí)現(xiàn)分布式事務(wù)造成事務(wù)信息規(guī)模擴(kuò)大導(dǎo)致系統(tǒng)性能下降引入其他中間產(chǎn)品造成運(yùn)維成本上升影響系統(tǒng)可靠穩(wěn)定因此設(shè)計(jì)之初各分行業(yè)務(wù)單元數(shù)據(jù)獨(dú)立無(wú)跨單元與分布式事務(wù)設(shè)計(jì)。應(yīng)用成果華夏銀行分行中間業(yè)務(wù)平臺(tái)試點(diǎn)已完成了單元化整體改造,于209年上線成功運(yùn)行平穩(wěn),日均交易量100萬(wàn)筆,平均耗時(shí)10s,目前已承載40多家分行中間業(yè)務(wù)。通過(guò)對(duì)業(yè)務(wù)結(jié)構(gòu)的單元化設(shè)計(jì)實(shí)現(xiàn)了灰度發(fā)布同城雙活架構(gòu)滿足了業(yè)務(wù)高可用高性能高擴(kuò)展的技術(shù)要求同時(shí)采用了國(guó)產(chǎn)軟硬件,實(shí)現(xiàn)了科技創(chuàng)新與安全可控的目標(biāo)。(四)微眾銀行案例應(yīng)用背景微眾銀行自成立之初在基礎(chǔ)架構(gòu)選型階段就拋棄了的傳統(tǒng)的IOE架構(gòu)轉(zhuǎn)而選用了分布式架構(gòu)微眾銀行設(shè)計(jì)并建設(shè)了基于用戶劃分的單元化的分布式核心架構(gòu)在單元化分布式架構(gòu)的前提下,不同的業(yè)務(wù)場(chǎng)景對(duì)于數(shù)據(jù)庫(kù)存儲(chǔ)有著多樣化的要求。由于每個(gè)業(yè)務(wù)單元只需要承載固定數(shù)量的用戶,所以在業(yè)務(wù)單元內(nèi)數(shù)據(jù)庫(kù)的容量和性能需求是可控的我行在單元內(nèi)采用單實(shí)例架構(gòu)數(shù)據(jù)庫(kù)可承載容量3TB以內(nèi)的聯(lián)機(jī)數(shù)據(jù)存儲(chǔ)需求(受限于單實(shí)例下服務(wù)器硬件限制),簡(jiǎn)化數(shù)據(jù)庫(kù)架構(gòu)。除了可拆分的單元化業(yè)務(wù),還存在批量系統(tǒng)、全局管理類業(yè)務(wù)系統(tǒng)多單元數(shù)據(jù)匯聚數(shù)據(jù)歸檔類等大量非單元化業(yè)務(wù),此類業(yè)務(wù)一般有持續(xù)的數(shù)據(jù)增長(zhǎng)需求對(duì)數(shù)據(jù)庫(kù)的容量和吞吐都會(huì)較高的需求,需要支持水平可擴(kuò)展的原生分布式數(shù)據(jù)庫(kù)支持。在以上場(chǎng)景需求的前提下微眾銀行根據(jù)我行的業(yè)務(wù)場(chǎng)景需求以及對(duì)數(shù)據(jù)庫(kù)產(chǎn)品的特性要注經(jīng)過(guò)多輪的調(diào)研評(píng)測(cè)與驗(yàn)證,最終確定了以下兩類數(shù)據(jù)庫(kù)選型方案:選擇騰訊云數(shù)據(jù)庫(kù)產(chǎn)品TSQL(單實(shí)例模式),來(lái)承載業(yè)務(wù)單元內(nèi)核心交易系統(tǒng)部分核心批量系統(tǒng)部分全局類業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)需求。選擇平凱星(北京科技有限公司的數(shù)據(jù)庫(kù)產(chǎn)品TiB,來(lái)承載部分核心批量系統(tǒng)部分全局類業(yè)務(wù)系統(tǒng)多單元數(shù)據(jù)匯聚和歸檔系統(tǒng)的數(shù)據(jù)庫(kù)需求。建設(shè)方案單元化總結(jié)架構(gòu)微眾銀行設(shè)計(jì)并建設(shè)了基于用戶劃分的單元化的分布式核心架構(gòu)每個(gè)業(yè)務(wù)單元都完整包含應(yīng)用組件中間件組件數(shù)據(jù)庫(kù)組件等,形成一個(gè)完整的自包含單位。我行采用先垂直拆產(chǎn)品然后水平按照客戶號(hào)做拆分的單元?jiǎng)澐帜J讲煌漠a(chǎn)品線使用不同類型的單元每個(gè)單元只會(huì)包含1個(gè)業(yè)務(wù)一個(gè)固定數(shù)量的客戶單元客戶容量上限固定容量超出時(shí)新客戶號(hào)進(jìn)新的單元一個(gè)客戶號(hào)原則上固定屬于某一個(gè)單元不會(huì)出現(xiàn)客戶號(hào)在單元間的挪動(dòng)如果當(dāng)前所有的業(yè)務(wù)單元的用戶量已達(dá)到上限或者即將達(dá)到上限將發(fā)起業(yè)務(wù)單元的水平擴(kuò)容通過(guò)業(yè)務(wù)單元的水平擴(kuò)容實(shí)現(xiàn)整個(gè)系統(tǒng)的水平擴(kuò)展能力同時(shí)還會(huì)設(shè)計(jì)一個(gè)較為特殊的全局管理單元此單元主要存放全局類業(yè)務(wù)此類業(yè)務(wù)沒(méi)有用戶屬性或者無(wú)法按照用戶維度進(jìn)行業(yè)務(wù)拆分基于我行的架構(gòu)設(shè)計(jì)與實(shí)際業(yè)務(wù)需求分析我行最終確定了TDQL與TiB兩款數(shù)據(jù)庫(kù)產(chǎn)品。整體數(shù)據(jù)存儲(chǔ)架構(gòu)如圖37所示:圖37構(gòu)在業(yè)務(wù)單元內(nèi)采用TDQ(單實(shí)例模式作為關(guān)鍵業(yè)務(wù)交易系統(tǒng)的核心數(shù)據(jù)庫(kù)每個(gè)業(yè)務(wù)單元內(nèi)有若干個(gè)TDQL單實(shí)(又稱“TDQLSET”),單元不同的子系統(tǒng)的庫(kù)表,可以部署在不同的TDQLSET內(nèi),以實(shí)現(xiàn)子系統(tǒng)間的數(shù)據(jù)庫(kù)資源隔離。在全局管理單元內(nèi)對(duì)于數(shù)據(jù)容量較(建議在3TB以內(nèi),且增長(zhǎng)比較穩(wěn)定的全局類業(yè)務(wù),數(shù)據(jù)庫(kù)采用TDQL單實(shí)例模式;對(duì)于數(shù)據(jù)容量較(3TB以上且持續(xù)快速增長(zhǎng)的全局類業(yè)務(wù),數(shù)據(jù)庫(kù)采用支持一鍵水平擴(kuò)展的TDB數(shù)據(jù)庫(kù)集群,以實(shí)現(xiàn)更大容量的支持。部分核心批量類業(yè)(如貸款核心批量隨著單用戶的貸款交易記錄持續(xù)累積,批量系統(tǒng)所需處理的數(shù)據(jù)量會(huì)持續(xù)增長(zhǎng),對(duì)于數(shù)據(jù)庫(kù)的容量和吞吐需求會(huì)越來(lái)越高這一類批量系統(tǒng)已不適合使用業(yè)務(wù)單元內(nèi)的數(shù)據(jù)庫(kù)去承載可以采用支持一鍵水平擴(kuò)展的TiB數(shù)據(jù)庫(kù)集群,通過(guò)數(shù)據(jù)庫(kù)容量和性能的水平擴(kuò)展,保持批量執(zhí)行的效率穩(wěn)定,并實(shí)現(xiàn)可持續(xù)發(fā)展。多單元數(shù)據(jù)匯聚數(shù)據(jù)歸檔類業(yè)務(wù)需要匯集多個(gè)單元的歷史數(shù)據(jù)數(shù)據(jù)量一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論