近年來,金融行業因龐大復雜的業務場景和爆炸式增長的業務發展需求,導致對基礎架構的擴展能力、容災能力、灰度能力的要求也越來越高。分布式單元化架構恰好同時滿足金融企業的多種需求,通過架構進行系統建設升級、增強整體能力??梢胍恢北3謫卧軜嫷钠椒€運行,就需要具備一個不可或缺的組件——分布式定位服務,它是實現單元化架構的基本運行保障,可覆蓋多種業務場景,降低業務整體復雜度。
長亮科技基于多年在銀行核心領域先進技術經驗的積累,不斷沉淀和強化出一套分布式定位服務組件,讓我們一起看看,長亮科技在這方面的經驗與見解。
作者
Jonder.Wong 后端架構師
擁有14年后端開發與從業經驗,負責數據處理與單元化組件的探索與設計工作。
掃清認知迷霧
了解分布式定位服務
在介紹分布式定位服務之前,我們先介紹下單元化架構的概念,單元是指一個能完成某一類業務操作(如個人存款業務)的自包含集合,在這個集合中包含了業務所需的服務,以及分配給這個單元的客戶數據。單元作為部署的基本單位,通常會在在多個機房中容災部署,每個機房內單元數目不固定,任一單元均部署系統所需的全部應用,數據則是全量數據按照某種維度劃分后的一部分。

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

1.網關收到請求或單元內系統發起外調時,傳入路由類型和路由值,通過sdk發送到分布式定位服務;
2.分布式定位服務查詢之后返回對應的客戶號、分片號、單元號信息給客戶端;
3.客戶端收到響應信息后,再由服務調用組件根據單元號調用相應業務單元。
場景為王
讓技術回歸服務本質
場景一
正常路由和開戶場景
在普通場景下,網關收到交易后從分布式定位服務中查詢到該筆交易所屬的單元,然后再由服務調用組件將交易轉發到具體的單元上。

在開戶場景下,由于客戶號還未生成,系統提供了“預分配”功能,按照規則分配一個業務單元,并在開戶完成后將對應的數據注冊到系統中。

場景二
企業級單元化管理
系統在設計時將數據分片規則與單元的管理規則進行了拆分,支持企業級共享一套映射數據,實現企業級分布式定位能力。

場景三
高可用
在金融場景下,每筆交易都可能涉及資金的變動,交易的成功率顯得尤為重要。為滿足此需求,系統進行了如下設計:
由客戶端提供“讀請求”的故障重試,整體提高交易成功率。

客戶端中提供了寫請求的消息補償,在注冊時如果發生異常,則通過發送消息的方式實現最終的數據一致性。

將金融業帶入高質量發展曲線的是金融產品、服務技術和洞察能力背后的“價值”。長亮科技作為金融行業的領先企業,很早就開始對單元化進行深入探索,不斷幫助銀行等金融機構實現系統的單元化建設與改造,積累了豐富的經驗。而分布式定位服務也在這些實踐中不斷的進行更新迭代,功能與性能都得到了錘煉。
結 語
未來,長亮科技將繼續以創新為本色、用技術為抓手,不斷夯實各類產品及服務的創新能力,通過新技術、新思路賦能金融業業務創新與系統升級,高效支撐金融業的全面發展。