金融行業(yè)分布式信息系統(tǒng)高可用架構(gòu)設(shè)計

根據(jù)我國十四五規(guī)劃,推動高質(zhì)量發(fā)展,必須立足新發(fā)展階段、貫徹新發(fā)展理念、構(gòu)建新發(fā)展格局,將“新”貫徹規(guī)劃始終,以“新”推動我國經(jīng)濟和社會高質(zhì)量發(fā)展。加快新型基礎(chǔ)設(shè)施建設(shè)是“新”的重要組成,統(tǒng)籌推進與傳統(tǒng)基礎(chǔ)設(shè)施等建設(shè),共同打造現(xiàn)代化基礎(chǔ)設(shè)施體系。

本文來自微信公眾號“twt企業(yè)IT社區(qū)”,作者/bryan,任職于某銀行。

前言

根據(jù)我國十四五規(guī)劃,推動高質(zhì)量發(fā)展,必須立足新發(fā)展階段、貫徹新發(fā)展理念、構(gòu)建新發(fā)展格局,將“新”貫徹規(guī)劃始終,以“新”推動我國經(jīng)濟和社會高質(zhì)量發(fā)展。加快新型基礎(chǔ)設(shè)施建設(shè)是“新”的重要組成,統(tǒng)籌推進與傳統(tǒng)基礎(chǔ)設(shè)施等建設(shè),共同打造現(xiàn)代化基礎(chǔ)設(shè)施體系。在云計算時代,不論應(yīng)用架構(gòu)還是基礎(chǔ)設(shè)施架構(gòu),都采用分布式架構(gòu)方式構(gòu)建。對于業(yè)務(wù)連續(xù)性要求比較嚴苛的金融行業(yè),系統(tǒng)高可用成為一項重要挑戰(zhàn)和課題。本文將結(jié)合金融行業(yè)十多年實戰(zhàn)經(jīng)驗對其課題進行淺析。

一、高可用概念與指標

高可用(High Availability)指通過盡量縮短計劃之內(nèi)的日常維護操作和計劃之外的軟硬件故障所導(dǎo)致的停機時間,以提供系統(tǒng)和應(yīng)用得可用性。系統(tǒng)高可用的本質(zhì)要求是指通過各種手段保證系統(tǒng)服務(wù)的業(yè)務(wù)連續(xù)性,盡量降低對客戶的影響。

SLA是系統(tǒng)可用性的一個關(guān)鍵指標,指在一年為單位的時間周期中,系統(tǒng)可正常使用時間的占比。例如,全年共計8760(365×24)個小時,系統(tǒng)因各種原因有9小時無法對外提供服務(wù),那么,全年可用性即為(8760-9)/8760≈99.9%,即業(yè)界所謂的3個9(見文章后說明)。為提高系統(tǒng)SLA,容錯的架構(gòu)設(shè)計在分布式系統(tǒng)中尤其重要,因為開放平臺相比于主機的本質(zhì)特點是軟硬件均可能發(fā)生故障,均不可靠。

對各種原因引起的單次故障,采用RTO和RPO兩個指標衡量。RPO(Recovery Point Objective)指對應(yīng)用數(shù)據(jù)而言,信息系統(tǒng)的生產(chǎn)數(shù)據(jù)可恢復(fù)到故障發(fā)生前多久的時間點;RTO(Recovery Time Objective)指災(zāi)難發(fā)生后,系統(tǒng)服務(wù)從故障時點到重新提供服務(wù)的時間點。二者均以時間作為單位,RPO側(cè)重故障發(fā)生前丟失數(shù)據(jù)的最多時長,RTO側(cè)重故障發(fā)生后恢復(fù)服務(wù)的最快時長。故障恢復(fù)過程也包括應(yīng)用數(shù)據(jù)恢復(fù),在故障搶修時需綜合衡量RTO和RPO。例如,金融業(yè)的數(shù)據(jù)更加重要,當無法立即恢復(fù)服務(wù)時需先完成數(shù)據(jù)恢復(fù),即RPO優(yōu)先于RTO。有部分場景(比如支付渠道類)需要保證RTO優(yōu)先于RPO。這其實是一種系統(tǒng)服務(wù)時間(應(yīng)用層級)和業(yè)務(wù)信息數(shù)據(jù)(數(shù)據(jù)庫層級)的平衡判斷。

二、高可用設(shè)計思想

各公司的高可用設(shè)計不盡相同,但設(shè)計理念卻存在相似和相同的地方,主要如下:

(一)在內(nèi)部設(shè)計方面,通過組件冗余設(shè)計有效避免單點故障。

在機房方面,將應(yīng)用部署到多個AZ(采用互相獨立的供電、網(wǎng)絡(luò)、冷卻等基礎(chǔ)設(shè)施),金融行業(yè)核心系統(tǒng)多采用兩地三中心,甚至三地三中心;在服務(wù)器方面,網(wǎng)絡(luò)設(shè)備存在冗余線路、多路端口等,服務(wù)器配置雙路電源、雙網(wǎng)卡、雙路CPU、磁盤陣列RAID等;在中間件方面,通過IaaS和PaaS云計算資源,提供多應(yīng)用服務(wù)實例。

系統(tǒng)的核心資產(chǎn)是數(shù)據(jù),因此數(shù)據(jù)庫高可用尤其重要。受光速等物理規(guī)律限制,距離一千公里的兩地數(shù)據(jù)同步性會受限,RPO難以保證為零,這是任何數(shù)據(jù)庫都面臨的挑戰(zhàn)。由于兩地同時故障概率很低,Oracle的far sync就基于該理念設(shè)計,通過將數(shù)據(jù)庫日志同步傳到近距離的異地城市來優(yōu)化RPO。傳統(tǒng)數(shù)據(jù)庫(如Oracle)采用高可用SAN存儲、ADG數(shù)據(jù)庫復(fù)制等方式提升數(shù)據(jù)可靠性;分布式數(shù)據(jù)庫則大多采用多份數(shù)據(jù)副本的方式提升數(shù)據(jù)可靠性;hadoop等多種大數(shù)據(jù)軟件亦采用該方式,當然也存在部分產(chǎn)品采用存算分離,將數(shù)據(jù)存儲到一體化分布式存儲產(chǎn)品中。

(二)在外部關(guān)聯(lián)方面,通過服務(wù)降低方式及時避免外部因素影響。

再完善的設(shè)計都難以預(yù)料系統(tǒng)所在關(guān)聯(lián)環(huán)境遇到的各種風(fēng)險和故障。當系統(tǒng)遇到流量陡增、關(guān)聯(lián)系統(tǒng)故障等各種故障時,可采用“有所取舍”的策略進行服務(wù)降級來保證系統(tǒng)可用性,限流和熔斷是兩種常見的處理方式。

限流是指采用固定窗口、滑動窗口、令牌桶等算法對多業(yè)務(wù)維度限流保證系統(tǒng)可用性。金融行業(yè)多采用對省市代碼、交易碼、上游系統(tǒng)等多種方式限流保證核心系統(tǒng)不被瞬時業(yè)務(wù)高峰沖垮。熔斷是指通過監(jiān)控等方式感知到關(guān)聯(lián)系統(tǒng)問題時,關(guān)閉對其調(diào)用來保證自身不因雪崩效應(yīng)被影響。金融行業(yè)多采用對部分交易熔斷來保障關(guān)鍵核心交易的可用性。這是丟卒保帥的思路保證了系統(tǒng)的整體可用性。

限流是避免上游消費方系統(tǒng)對自身的影響,熔斷是避免下游服務(wù)方系統(tǒng)對自身的影響。二者處理過程中均需優(yōu)化因服務(wù)降級帶來的用戶體驗,比如,在秒殺場景中,搶購請求可能未到達真正服務(wù)器就因被隨機選中而拒絕返回,但用戶并不感知背后所發(fā)生的實際情況,而是感覺自己可能因運氣差、用戶多等原因而未搶到。

三、高可用運行機制

日常項目研發(fā)中仍然存在部分理念:1)采用高可用的分布式數(shù)據(jù)庫就能保證系統(tǒng)高可用;2)采用高可用的架構(gòu)設(shè)計就能保證故障發(fā)生時的系統(tǒng)高可用。前者忽略了數(shù)據(jù)庫只是系統(tǒng)的一部分,忽略了部分和整體的關(guān)系,后者沒有意識到“實踐是檢驗真理的唯一標準”。為保證系統(tǒng)的高可用,筆者認為:

在組織級方面,建立一系列企業(yè)級高可用保證運行機制,建立完善的配套監(jiān)控和應(yīng)急容災(zāi)機制。1)只有建立完善的監(jiān)管控工具,才能通過交易數(shù)量、響應(yīng)時間、交易成功率等全方位監(jiān)控指標及時發(fā)現(xiàn)系統(tǒng)異常,保證后續(xù)的人工操作,甚至通過工具進行自動化操作,或者通過AIOps及時發(fā)現(xiàn)尚未發(fā)生的故障,真正做到防患于未然。2)只有建立完善的應(yīng)急機制,才能保證檢測到系統(tǒng)運行指標異常后有一二線人員及時介入處置。金融行業(yè)在日常生產(chǎn)運維中有“戰(zhàn)時”應(yīng)急響應(yīng),但部分故障恢復(fù)仍需數(shù)小時,一般企業(yè)的應(yīng)急響應(yīng)可想而已。

在系統(tǒng)級方面,通過研發(fā)企業(yè)級混沌工具、沉淀系統(tǒng)級測試案例等對系統(tǒng)高可用性進行主動驗證。隨著分布式和微服務(wù)架構(gòu)的日漸流行,系統(tǒng)復(fù)雜性劇增,傳統(tǒng)的測試方法已難以覆蓋各種潛在故障?;煦绻こ痰暮诵睦砟钍窃诳刂票ò霃降那疤嵯略谏a(chǎn)環(huán)境創(chuàng)建各類故障以實際檢測系統(tǒng)高可用。金融業(yè)可能因各種原因短期內(nèi)不會在生產(chǎn)演練,但可在灰度環(huán)境和測試環(huán)境演練。

綜上所述,系統(tǒng)高可用是保證系統(tǒng)業(yè)務(wù)連續(xù)性的核心需求,需投入大量人力和軟硬件等資源,需貫穿項目研發(fā)和生產(chǎn)運維全過程。在架構(gòu)設(shè)計和運行機制設(shè)計上需按照系統(tǒng)重要性進行分級分類管理,綜合衡量資源成本和業(yè)務(wù)收益,保證故障處置時的取舍與平衡。這是一項系統(tǒng)性的工程設(shè)計,絕非使用了高可用的分布式數(shù)據(jù)庫就可以做到的事情。

全年可用性說明

1)3個9(99.9%):8760×0.1%=8760×0.001=8.76小時

2)4個9(99.99%):8760×0.01%=8760×0.0001=0.876小時=52.6分鐘

3)5個9(99.999%):8760×0.001%=8760×0.00001=0.0876小時=5.26分鐘

4)6個9(99.9999%):8760×0.0001%=8760×0.000001=0.00876小時=31.536秒

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論