近年來(lái),金融行業(yè)因龐大復(fù)雜的業(yè)務(wù)場(chǎng)景和爆炸式增長(zhǎng)的業(yè)務(wù)發(fā)展需求,導(dǎo)致對(duì)基礎(chǔ)架構(gòu)的擴(kuò)展能力、容災(zāi)能力、灰度能力的要求也越來(lái)越高。分布式單元化架構(gòu)恰好同時(shí)滿足金融企業(yè)的多種需求,通過(guò)架構(gòu)進(jìn)行系統(tǒng)建設(shè)升級(jí)、增強(qiáng)整體能力。可要想一直保持單元化架構(gòu)的平穩(wěn)運(yùn)行,就需要具備一個(gè)不可或缺的組件——分布式定位服務(wù),它是實(shí)現(xiàn)單元化架構(gòu)的基本運(yùn)行保障,可覆蓋多種業(yè)務(wù)場(chǎng)景,降低業(yè)務(wù)整體復(fù)雜度。
長(zhǎng)亮科技基于多年在銀行核心領(lǐng)域先進(jìn)技術(shù)經(jīng)驗(yàn)的積累,不斷沉淀和強(qiáng)化出一套分布式定位服務(wù)組件,讓我們一起看看,長(zhǎng)亮科技在這方面的經(jīng)驗(yàn)與見解。
作者
Jonder.Wong 后端架構(gòu)師
擁有14年后端開發(fā)與從業(yè)經(jīng)驗(yàn),負(fù)責(zé)數(shù)據(jù)處理與單元化組件的探索與設(shè)計(jì)工作。
掃清認(rèn)知迷霧
了解分布式定位服務(wù)
在介紹分布式定位服務(wù)之前,我們先介紹下單元化架構(gòu)的概念,單元是指一個(gè)能完成某一類業(yè)務(wù)操作(如個(gè)人存款業(yè)務(wù))的自包含集合,在這個(gè)集合中包含了業(yè)務(wù)所需的服務(wù),以及分配給這個(gè)單元的客戶數(shù)據(jù)。單元作為部署的基本單位,通常會(huì)在在多個(gè)機(jī)房中容災(zāi)部署,每個(gè)機(jī)房?jī)?nèi)單元數(shù)目不固定,任一單元均部署系統(tǒng)所需的全部應(yīng)用,數(shù)據(jù)則是全量數(shù)據(jù)按照某種維度劃分后的一部分。

通過(guò)前文對(duì)單元的定義和特性描述中,可以推導(dǎo)出單元化架構(gòu)要求系統(tǒng)必須具備的一項(xiàng)能力——數(shù)據(jù)分區(qū);即將全局?jǐn)?shù)據(jù)按照某一個(gè)維度水平劃分開來(lái),每個(gè)分區(qū)的數(shù)據(jù)內(nèi)容互不重疊。但僅把數(shù)據(jù)進(jìn)行分區(qū)還遠(yuǎn)遠(yuǎn)不夠,單元化的另外一個(gè)必要條件是,所有業(yè)務(wù)數(shù)據(jù)分區(qū)所用的拆分維度和拆分規(guī)則都必須一樣。
而分布式定位服務(wù)則是實(shí)現(xiàn)上述目標(biāo)的關(guān)鍵組件,其主要包含以下三大功能:
對(duì)分區(qū)的維度數(shù)據(jù)進(jìn)行統(tǒng)一的管理
提供統(tǒng)一的拆分維度和拆分規(guī)則
為系統(tǒng)提供分區(qū)信息的查詢功能
小組件,大作用
單元化架構(gòu)的消息“集散中心”
作為單元化架構(gòu)的核心組件,分布式定位服務(wù)管理著單元化的規(guī)則,包括數(shù)據(jù)如何拆分、單元個(gè)數(shù)的劃分、數(shù)據(jù)落在哪個(gè)單元里等。后期運(yùn)維人員在完成規(guī)則的配置后,所有使用分布式定位服務(wù)的應(yīng)用將會(huì)即時(shí)收到通知并進(jìn)行刷新。
從整體上看,組件分為客戶端和服務(wù)端兩大模塊:
客戶端SDK:客戶端主要封裝服務(wù)端的訪問接口,供其他系統(tǒng)進(jìn)行集成。同時(shí)客戶端還對(duì)單元化的規(guī)則做了監(jiān)聽,確保在規(guī)則發(fā)生變更后能及時(shí)進(jìn)行刷新。
服務(wù)端:服務(wù)端對(duì)映射要素進(jìn)行統(tǒng)一的管理,并提供查詢、新增等接口。同時(shí)因?yàn)樾枰芾泶罅坑成鋽?shù)據(jù),系統(tǒng)在部署時(shí)使用了分庫(kù)分表功能。
那么整個(gè)組件的調(diào)用流程如下所示:

1.網(wǎng)關(guān)收到請(qǐng)求或單元內(nèi)系統(tǒng)發(fā)起外調(diào)時(shí),傳入路由類型和路由值,通過(guò)sdk發(fā)送到分布式定位服務(wù);
2.分布式定位服務(wù)查詢之后返回對(duì)應(yīng)的客戶號(hào)、分片號(hào)、單元號(hào)信息給客戶端;
3.客戶端收到響應(yīng)信息后,再由服務(wù)調(diào)用組件根據(jù)單元號(hào)調(diào)用相應(yīng)業(yè)務(wù)單元。
場(chǎng)景為王
讓技術(shù)回歸服務(wù)本質(zhì)
場(chǎng)景一
正常路由和開戶場(chǎng)景
在普通場(chǎng)景下,網(wǎng)關(guān)收到交易后從分布式定位服務(wù)中查詢到該筆交易所屬的單元,然后再由服務(wù)調(diào)用組件將交易轉(zhuǎn)發(fā)到具體的單元上。

在開戶場(chǎng)景下,由于客戶號(hào)還未生成,系統(tǒng)提供了“預(yù)分配”功能,按照規(guī)則分配一個(gè)業(yè)務(wù)單元,并在開戶完成后將對(duì)應(yīng)的數(shù)據(jù)注冊(cè)到系統(tǒng)中。

場(chǎng)景二
企業(yè)級(jí)單元化管理
系統(tǒng)在設(shè)計(jì)時(shí)將數(shù)據(jù)分片規(guī)則與單元的管理規(guī)則進(jìn)行了拆分,支持企業(yè)級(jí)共享一套映射數(shù)據(jù),實(shí)現(xiàn)企業(yè)級(jí)分布式定位能力。

場(chǎng)景三
高可用
在金融場(chǎng)景下,每筆交易都可能涉及資金的變動(dòng),交易的成功率顯得尤為重要。為滿足此需求,系統(tǒng)進(jìn)行了如下設(shè)計(jì):
由客戶端提供“讀請(qǐng)求”的故障重試,整體提高交易成功率。

客戶端中提供了寫請(qǐng)求的消息補(bǔ)償,在注冊(cè)時(shí)如果發(fā)生異常,則通過(guò)發(fā)送消息的方式實(shí)現(xiàn)最終的數(shù)據(jù)一致性。

將金融業(yè)帶入高質(zhì)量發(fā)展曲線的是金融產(chǎn)品、服務(wù)技術(shù)和洞察能力背后的“價(jià)值”。長(zhǎng)亮科技作為金融行業(yè)的領(lǐng)先企業(yè),很早就開始對(duì)單元化進(jìn)行深入探索,不斷幫助銀行等金融機(jī)構(gòu)實(shí)現(xiàn)系統(tǒng)的單元化建設(shè)與改造,積累了豐富的經(jīng)驗(yàn)。而分布式定位服務(wù)也在這些實(shí)踐中不斷的進(jìn)行更新迭代,功能與性能都得到了錘煉。
結(jié) 語(yǔ)
未來(lái),長(zhǎng)亮科技將繼續(xù)以創(chuàng)新為本色、用技術(shù)為抓手,不斷夯實(shí)各類產(chǎn)品及服務(wù)的創(chuàng)新能力,通過(guò)新技術(shù)、新思路賦能金融業(yè)業(yè)務(wù)創(chuàng)新與系統(tǒng)升級(jí),高效支撐金融業(yè)的全面發(fā)展。