異地多活場(chǎng)景下的數(shù)據(jù)庫(kù)方案

方案背景

隨著云計(jì)算的蓬勃發(fā)展,越來(lái)越多信息系統(tǒng)選擇部署在云計(jì)算環(huán)境下,因此基于云產(chǎn)品為信息系統(tǒng)的服務(wù)能力和數(shù)據(jù)質(zhì)量提供保障尤為重要。為了防止災(zāi)難性的故障如火災(zāi)、洪水、地震、區(qū)域電力中斷或者人為破壞等對(duì)信息系統(tǒng)造成不可挽回的破壞,需要構(gòu)建容災(zāi)系統(tǒng)來(lái)保障信息系統(tǒng)的可用性和安全性。

2007年,國(guó)務(wù)院信息化辦公室聯(lián)合銀行、電力、民航、鐵路、證券等八大重點(diǎn)行業(yè),制定發(fā)布了國(guó)家標(biāo)準(zhǔn)GB/T20988-2007《信息系統(tǒng)災(zāi)難恢復(fù)規(guī)范》,明確規(guī)定了容災(zāi)能力的6個(gè)等級(jí)要求。企業(yè)在構(gòu)建容災(zāi)系統(tǒng)時(shí)往往會(huì)參考國(guó)標(biāo)等級(jí),或者以此作為合規(guī)要求。然而,大部分傳統(tǒng)容災(zāi)方案如同城容災(zāi)、同城雙活、異地容災(zāi)、兩地三中心等很難達(dá)到國(guó)標(biāo)5-6級(jí)要求,同時(shí)還存在成本浪費(fèi),災(zāi)備單元健壯性不足等問(wèn)題。

異地多活是新一代的容災(zāi)解決方案,在保證業(yè)務(wù)持續(xù)高可用的同時(shí)還能實(shí)現(xiàn)成本優(yōu)化、地域級(jí)水平擴(kuò)展、持續(xù)高可用等能力,本文會(huì)著重介紹阿里云主流數(shù)據(jù)庫(kù)產(chǎn)品在異地多活場(chǎng)景下的解決方案。

方案架構(gòu)

異地多活從業(yè)務(wù)視角來(lái)看是通過(guò)對(duì)業(yè)務(wù)做自頂向下的流量隔離來(lái)實(shí)現(xiàn)的,按照某一個(gè)分流維度對(duì)業(yè)務(wù)流量進(jìn)行劃分,并路由到不同的地域。整個(gè)部署架構(gòu)分多個(gè)地域,每個(gè)地域稱之為一個(gè)單元,其中某個(gè)單元又承擔(dān)著整個(gè)多活架構(gòu)的邏輯中心角色,提供一些中心化的服務(wù)能力(如sequence_分發(fā),強(qiáng)一致讀服務(wù)等)。每個(gè)單元內(nèi)的業(yè)務(wù)架構(gòu)分為接入層、服務(wù)層、數(shù)據(jù)層:

26029003
  • 接入層

    業(yè)務(wù)流量通過(guò)租戶側(cè)DNS解析后按照權(quán)重分配到不同單元的接入層,進(jìn)入接入層后,通過(guò)解析請(qǐng)求header/cookie中的分流標(biāo),對(duì)比自定義的分流規(guī)則,判斷請(qǐng)求是否歸屬本單元,若歸屬本單元?jiǎng)t走到本單元的服務(wù)層。否則流量需要轉(zhuǎn)發(fā)到對(duì)端單元,根據(jù)不同的內(nèi)網(wǎng)連通性可以走upstream或304跳轉(zhuǎn)。

  • 服務(wù)層
    服務(wù)層部署的是業(yè)務(wù)應(yīng)用系統(tǒng),包括中間件等。如果使用了阿里云的中間件如CSB、RPC框架、MQ等,可以通過(guò)相應(yīng)產(chǎn)品的多活接入能力實(shí)現(xiàn)在服務(wù)層的流量路由和糾錯(cuò)。針對(duì)RPC服務(wù),在多活場(chǎng)景中分為:?jiǎn)卧?wù)、中心化服務(wù)、普通服務(wù)三類:
    • 單元化服務(wù):每個(gè)單元內(nèi)完全自治的服務(wù),是多活場(chǎng)景下的主要服務(wù)類型,會(huì)對(duì)流量進(jìn)行單元?dú)w屬判斷,并進(jìn)行流量糾錯(cuò)。
    • 中心化服務(wù):強(qiáng)依賴中心單元的服務(wù),流量都會(huì)被轉(zhuǎn)發(fā)到中心單元,通過(guò)中心單元的服務(wù)訪問(wèn)中心單元的數(shù)據(jù)層。
    • 普通服務(wù):不做任何改造的服務(wù),在本單元內(nèi)進(jìn)行服務(wù)調(diào)用,并訪問(wèn)本單元的數(shù)據(jù)層。

    支持多活能力的主要服務(wù)類型是單元化服務(wù),但是當(dāng)業(yè)務(wù)系統(tǒng)比較復(fù)雜時(shí),可能難以實(shí)現(xiàn)所有業(yè)務(wù)模塊均按某一個(gè)維度劃分,或者某些業(yè)務(wù)服務(wù)必須要單點(diǎn)部署以避免分布式部署的一致性問(wèn)題,此時(shí)可由中心化服務(wù)和普通服務(wù)提供相應(yīng)能力支持。

  • 數(shù)據(jù)層

    數(shù)據(jù)層解決數(shù)據(jù)庫(kù)跨地域的部署與同步問(wèn)題,并在災(zāi)難發(fā)生時(shí)對(duì)流量切換動(dòng)作提供相應(yīng)的數(shù)據(jù)質(zhì)量保護(hù)策略。針對(duì)上層業(yè)務(wù)不同的服務(wù)類型提供UNIT和COPY兩種數(shù)據(jù)同步策略:

    UNIT類型:每個(gè)單元部署獨(dú)立的數(shù)據(jù)庫(kù)系統(tǒng),單元之間通過(guò)DTS進(jìn)行數(shù)據(jù)【雙向】實(shí)時(shí)同步,保持每個(gè)單元都有全量數(shù)據(jù),每個(gè)單元均可進(jìn)行讀寫(xiě)操作,讀寫(xiě)流量會(huì)根據(jù)業(yè)務(wù)定制的分流策略進(jìn)行單元寫(xiě)保護(hù),這種同步策略用于支持服務(wù)層的單元化服務(wù)類型,是多活場(chǎng)景的核心同步策略。

    COPY類型:每個(gè)單元部署獨(dú)立的數(shù)據(jù)庫(kù)系統(tǒng),單元之間通過(guò)DTS進(jìn)行數(shù)據(jù)【單向】實(shí)時(shí)同步,保持每個(gè)單元都有全量數(shù)據(jù),中心單元可進(jìn)行讀寫(xiě),非中心單元只提供讀服務(wù)。這種同步策略用于支持中心化服務(wù)和普通服務(wù),中心化服務(wù)路由回中心執(zhí)行,普通服務(wù)可在單元內(nèi)進(jìn)行讀。

方案應(yīng)用場(chǎng)景
本解決方案適用于以下業(yè)務(wù)場(chǎng)景:
  • 容災(zāi)能力要求高

    異地多活可以達(dá)到國(guó)標(biāo)6級(jí)的容災(zāi)能力,適合對(duì)容災(zāi)方面有較高要求的業(yè)務(wù)、業(yè)務(wù)流量比較敏感的業(yè)務(wù)或業(yè)務(wù)的某些核心系統(tǒng)。

  • 流量要求精細(xì)化管理

    異地多活支持多種流量管理策略,適合對(duì)流量管理有復(fù)雜需求的業(yè)務(wù)如按地域就近接入,按用戶信息分配指定數(shù)據(jù)中心等。

  • 業(yè)務(wù)快速發(fā)展

    異地多活實(shí)現(xiàn)業(yè)務(wù)按照單元級(jí)別(數(shù)據(jù)中心級(jí)別)實(shí)施水平擴(kuò)展,業(yè)務(wù)定義好一個(gè)單元的服務(wù)部署配比后,可以以此為鏡像快速部署多個(gè)分布全國(guó)的單元,實(shí)現(xiàn)容量快速擴(kuò)充。

  • 業(yè)務(wù)讀多寫(xiě)少

    讀多寫(xiě)少業(yè)務(wù)可以從業(yè)務(wù)行為上天然的規(guī)避數(shù)據(jù)異步復(fù)制的各類問(wèn)題,并且業(yè)務(wù)接入多活的改造成本也較低,是比較適合實(shí)施異地多活的業(yè)務(wù)場(chǎng)景。

方案價(jià)值

異地多活的價(jià)值具體表現(xiàn)在如下方面:
  • 業(yè)務(wù)即容災(zāi)

    傳統(tǒng)異地災(zāi)備或兩地三中心的異地災(zāi)備中心常態(tài)不提供服務(wù),當(dāng)發(fā)生地域級(jí)災(zāi)難時(shí)難以保證異地災(zāi)備中心的可用性,存在切換成功率低的問(wèn)題,異地多活架構(gòu)下各個(gè)地域數(shù)據(jù)中心不區(qū)分角色,全部常態(tài)承載業(yè)務(wù)流量,時(shí)刻保證業(yè)務(wù)系統(tǒng)健壯,各個(gè)數(shù)據(jù)中心既是業(yè)務(wù)體系也是容災(zāi)系統(tǒng)。

  • 業(yè)務(wù)連續(xù)性保障

    異地多活架構(gòu)下各個(gè)數(shù)據(jù)中心常態(tài)承接業(yè)務(wù)流量,故障發(fā)生時(shí)只需調(diào)撥入口流量即可實(shí)現(xiàn)容災(zāi)切換,實(shí)現(xiàn)分鐘級(jí)的容災(zāi)切換。同時(shí)隨著參與多活建設(shè)的數(shù)據(jù)中心數(shù)量增加,參與調(diào)撥流量的比例會(huì)相應(yīng)減少,未參與調(diào)撥的業(yè)務(wù)流量可以實(shí)現(xiàn)對(duì)容災(zāi)切換的“0”感知。

  • 業(yè)務(wù)高速發(fā)展支撐

    業(yè)務(wù)高速發(fā)展,受限于單個(gè)地域的有限資源,尤其是數(shù)據(jù)層存在單點(diǎn)性能瓶頸,除異地多活以外的全部容災(zāi)架構(gòu)都只能在主生產(chǎn)中心執(zhí)行寫(xiě)操作。地域多活實(shí)現(xiàn)業(yè)務(wù)級(jí)的流量閉環(huán),各個(gè)數(shù)據(jù)中心均可讀寫(xiě),具備水平擴(kuò)展能力以及跨地域的快速擴(kuò)建能力。

  • 流量有效隔離

    異地多活本質(zhì)上是提供了一種自頂向下的流量隔離能力,業(yè)務(wù)具備在數(shù)據(jù)中心級(jí)別完全隔離的能力,各個(gè)數(shù)據(jù)中心承載的流量大小可靈活調(diào)配,在最小隔離數(shù)據(jù)中心內(nèi)(例如承載1%流量),業(yè)務(wù)可靈活進(jìn)行風(fēng)險(xiǎn)可控的技術(shù)演進(jìn),例如基礎(chǔ)設(shè)施升級(jí)、新技術(shù)驗(yàn)證等。

  • 成本有效控制

    在考慮單個(gè)地域發(fā)生地域級(jí)災(zāi)難的場(chǎng)景下,不論兩地三中心還是異地災(zāi)備都需要在災(zāi)備中心部署可承載100%流量的系統(tǒng)資源,加上生產(chǎn)中心即達(dá)到200%的成本冗余。異地多活通過(guò)跨城多數(shù)據(jù)中心部署,有效分?jǐn)偢鱾€(gè)數(shù)據(jù)中心成本,實(shí)現(xiàn)成本小于200%冗余。

成功案例之聯(lián)通新客服

案例背景

聯(lián)通新客服系統(tǒng)承擔(dān)著聯(lián)通全國(guó)的客服業(yè)務(wù),對(duì)持續(xù)高可用能力有極高要求,同時(shí)也是聯(lián)通向全站高可用演進(jìn)的起點(diǎn),其業(yè)務(wù)特點(diǎn)以TP業(yè)務(wù)為主。

案例架構(gòu)

客戶基于此方案,整合RDS、PolarDB-X 1.0、DTS、MSHA產(chǎn)品能力,實(shí)現(xiàn)了整個(gè)新客服系統(tǒng)7個(gè)業(yè)務(wù)中心的多活能力。

  • RDS、PolarDB-X 1.0承載業(yè)務(wù)數(shù)據(jù)并對(duì)接多活管控系統(tǒng)。
  • DTS實(shí)現(xiàn)數(shù)據(jù)的跨城實(shí)時(shí)同步和狀態(tài)上報(bào)。
  • MSHA實(shí)現(xiàn)多活流量管控和容災(zāi)切換動(dòng)作。
26029001案例效果
  • 聯(lián)通新客服系統(tǒng)的接入中心、外呼中心、業(yè)務(wù)支撐等7個(gè)業(yè)務(wù)實(shí)現(xiàn)按地域多活分流。
  • 實(shí)現(xiàn)多次容災(zāi)演練,對(duì)多個(gè)省份進(jìn)行切流,秒級(jí)完成切換,數(shù)據(jù)0丟失。
  • 客戶部署了兩單元,常態(tài)兩個(gè)單元均承載業(yè)務(wù)流量,充分利用兩單元的資源。