亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于高可用性的分布式云化交易型系統(tǒng)設(shè)計(jì)方法研究

        2022-05-23 10:23:48白海洋臺(tái)運(yùn)紅
        江蘇通信 2022年2期
        關(guān)鍵詞:容災(zāi)集群部署

        白海洋 臺(tái)運(yùn)紅

        1.中國電信股份有限公司江蘇分公司;2.三江學(xué)院

        0 引言

        通信運(yùn)營商IT系統(tǒng)上云是踐行“數(shù)字中國”發(fā)展戰(zhàn)略的重要舉措。在去IOE(IBM小型機(jī)、Oracle數(shù)據(jù)庫、EMC高端存儲(chǔ))的趨勢背景下,云資源池硬件穩(wěn)定性面臨挑戰(zhàn)。如何通過架構(gòu)優(yōu)化及云原生技術(shù)的應(yīng)用來提升系統(tǒng)整體可用性,是IT系統(tǒng)上云需要重點(diǎn)解決的問題。

        容災(zāi)備份是提升IT系統(tǒng)可用性的重要手段,隨著鄭州暴雨等災(zāi)情的發(fā)生,異地容災(zāi)再次成為人們關(guān)注的熱點(diǎn)。IT系統(tǒng)上云為異地多中心的容災(zāi)環(huán)境建設(shè)創(chuàng)造了有利條件,如何在資源允許范圍內(nèi)建立起災(zāi)備系統(tǒng),也成為云化改造需要關(guān)注的重點(diǎn)課題。

        本文針對(duì)交易型系統(tǒng)上云改造提出“同城雙活”高可用架構(gòu)以及“兩地三中心”容災(zāi)部署方案,可以有效提升系統(tǒng)的高可用性。

        1 相關(guān)概念

        1.1 交易型系統(tǒng)

        “交易型系統(tǒng)”是“交易密集型系統(tǒng)”的簡稱,與之對(duì)應(yīng)的是“計(jì)算密集型系統(tǒng)”。交易型系統(tǒng)是OLTP(Online Transaction Processing,聯(lián)機(jī)事務(wù)處理)系統(tǒng)的一類,具有并發(fā)請(qǐng)求高、事務(wù)一致性要求高、服務(wù)可用性要求高等特點(diǎn)。在通信運(yùn)營商領(lǐng)域,支付系統(tǒng)、充值系統(tǒng)、營業(yè)受理系統(tǒng)均可以歸為此類。

        1.2 系統(tǒng)高可用

        IT系統(tǒng)的可用性是衡量其穩(wěn)定服務(wù)能力的關(guān)鍵指標(biāo),具體標(biāo)準(zhǔn)一般包括:持續(xù)穩(wěn)定服務(wù)時(shí)間、故障影響程度、故障恢復(fù)時(shí)間等。

        高可用系統(tǒng)中需要考慮的設(shè)計(jì)原則一般包括:負(fù)載均衡、熔斷降級(jí)、限流、流量調(diào)度、故障隔離、超時(shí)與重試、事務(wù)一致性與回滾、冪等校驗(yàn)等??紤]到高并發(fā)的場景,一般還需要考慮緩存、異步與并發(fā)、擴(kuò)縮容等因素。

        1.3 容災(zāi)系統(tǒng)關(guān)鍵指標(biāo)

        RTO(Recovery Time Objective):系統(tǒng)發(fā)生災(zāi)難性故障后的恢復(fù)時(shí)間。

        RPO(Recovery Point Object):災(zāi)難發(fā)生后切換到災(zāi)備系統(tǒng)的數(shù)據(jù)損失量。

        容災(zāi)半徑:生產(chǎn)系統(tǒng)和容災(zāi)系統(tǒng)之間的地理距離。

        ROI(Return of Investment):容災(zāi)系統(tǒng)的投入產(chǎn)出比。

        2 “同城雙活”高可用系統(tǒng)架構(gòu)設(shè)計(jì)

        2.1 系統(tǒng)架構(gòu)總體描述

        “同城雙活”系統(tǒng)架構(gòu)是指在同城機(jī)房中部署兩套應(yīng)用環(huán)境,同時(shí)對(duì)外提供服務(wù)。該架構(gòu)設(shè)備資源利用率高、并發(fā)吞吐量大、數(shù)據(jù)一致性難度低,通過負(fù)載均衡、流量調(diào)度等策略可以起到一定的故障轉(zhuǎn)移效果,在運(yùn)營商系統(tǒng)上云改造中被廣泛應(yīng)用。

        本文提出“同城雙活”高可用設(shè)計(jì)方案,部署架構(gòu)如圖1所示。

        圖1 “同城雙活”高可用部署架構(gòu)圖

        2.2 網(wǎng)關(guān)層流量調(diào)度算法及工具實(shí)現(xiàn)

        2.1.1 多集群、多環(huán)境流量調(diào)度算法設(shè)計(jì)

        (1)流量調(diào)度算法的形式化表述

        本方法實(shí)現(xiàn)的流量調(diào)度算法支持對(duì)多集群、多環(huán)境的選擇轉(zhuǎn)發(fā),算法描述如下。定義一個(gè)四元組,在單條流量的作用下,從變量承載方式M中,獲取業(yè)務(wù)變量V,決定作用條件C,從而得到作用結(jié)果R,確定轉(zhuǎn)發(fā)到的集群及環(huán)境。具體解釋如下:

        1)V是業(yè)務(wù)變量的集合,根據(jù)實(shí)際業(yè)務(wù)場景,通??蛇x用V = {area_code, app_id, service_id, staff_code}的集合。其中area_code為地區(qū)編碼,app_id為接入應(yīng)用編碼,service_code為應(yīng)用服務(wù)編碼,staff_code為操作人員編碼。

        2)M是變量承載方式集合,表示從報(bào)文中獲取到V的具體位置或方式。HTTP協(xié)議中,M={header,cookie,urlparam},其中header方式適用于API接口請(qǐng)求,特點(diǎn)是效率高、方便解析;cookie方式適用于界面請(qǐng)求,例如js、jss等靜態(tài)資源請(qǐng)求;url_param是指鏈接中的參數(shù),適用于鏈接跳轉(zhuǎn)類請(qǐng)求。

        3) C是作用條件的集合,本方法中,即IP地址和端口號(hào);

        4)R是作用結(jié)果集合,決定最終的轉(zhuǎn)發(fā)方向,在本方法中,即集群和邏輯環(huán)境。

        (2)基于Nginx的集群及環(huán)境切換原理

        最終的轉(zhuǎn)發(fā)結(jié)果R是由作用條件C決定的。C集合的IP決定了R集合的Cluster,指向集群的路由配置策略原理如圖2。例如,當(dāng)期望路由目標(biāo)地址為集群1,可配置Nginx的IP轉(zhuǎn)發(fā)策略到IP1。

        圖2 Nginx節(jié)點(diǎn)選擇集群及邏輯環(huán)境原理圖

        C集合中的Port決定了R集合的Env。例如,當(dāng)期望目標(biāo)的應(yīng)用環(huán)境為A環(huán)境,可配置Nginx端口轉(zhuǎn)發(fā)策略到端口1。

        基于以上集群、邏輯環(huán)境的配置原理,通過IP與端口的配置組合,可以控制流量轉(zhuǎn)發(fā)任一集群的邏輯環(huán)境,以實(shí)現(xiàn)雙中心的容災(zāi)切換及版本灰度發(fā)布。

        (3)根據(jù)業(yè)務(wù)需求的流量切換原理

        當(dāng)需要根據(jù)指定的業(yè)務(wù)邏輯進(jìn)行流量轉(zhuǎn)發(fā)時(shí),可通過控制V集合的條件來實(shí)現(xiàn)。

        例如,需要南京(區(qū)號(hào)025)、徐州(區(qū)號(hào)0516)的流量轉(zhuǎn)發(fā)到環(huán)境B做灰度驗(yàn)證,需要將流量配置轉(zhuǎn)發(fā)到端口2,其配置偽代碼如下:

        2.1.2 網(wǎng)關(guān)策略配置管理及同步工具設(shè)計(jì)

        網(wǎng)關(guān)的策略在分布式配置中心Apollo中管理和持久化。為了實(shí)現(xiàn)各個(gè)Nginx節(jié)點(diǎn)配置的同步下發(fā)、同步生效,本文設(shè)計(jì)了配置同步變更工具,其方法和流程如圖3所示,算法描述如下:

        圖3 Nginx集群配置同步變更工具執(zhí)行流程圖

        步驟1:更改Apollo配置中心數(shù)據(jù)后,啟動(dòng)配置變更數(shù)據(jù)下發(fā),由客戶端程序接收;

        步驟2:Nginx集群各個(gè)節(jié)點(diǎn)檢查配置,執(zhí)行nginx -s reload;

        步驟3:Nginx主進(jìn)程Master打開新的監(jiān)聽端口;

        步驟4:Nginx主進(jìn)程Master通過新配置啟動(dòng)新的worker子進(jìn)程;

        步驟5:Nginx主進(jìn)程Master進(jìn)程向老的worker進(jìn)程發(fā)送QUIT信號(hào);

        步驟6:老worker進(jìn)程關(guān)閉監(jiān)聽句柄,待服務(wù)處理完后優(yōu)雅下線;

        步驟7:配置檢查服務(wù)與配置中心比對(duì),如果配置不一致,發(fā)送告警。

        基于該流程,可以實(shí)現(xiàn)路由策略的不停機(jī)無縫切換,切換前歷史請(qǐng)求仍按原路返回,保證業(yè)務(wù)的持續(xù)性。

        在應(yīng)用過程中,應(yīng)用系統(tǒng)應(yīng)避免socket長連接的設(shè)計(jì)。長連接的引入將導(dǎo)致流量切換時(shí)難以快速生效,在Nginx reload過程中,由于老的worker進(jìn)程不能及時(shí)釋放,多次切換后還可能導(dǎo)致內(nèi)存溢出故障。

        2.3 應(yīng)用框架層高可用設(shè)計(jì)

        (1)服務(wù)健康檢查及故障恢復(fù)機(jī)制設(shè)計(jì)

        利用kubernetes(簡稱K8S)的就緒探針(readinessProbe)和存活探針(livenessProbe)實(shí)現(xiàn)服務(wù)啟動(dòng)和運(yùn)行階段的健康檢查。就緒探針健康檢查的工作原理如圖4所示。

        圖4 K8S Service向Pod負(fù)載流量的健康檢查機(jī)制

        K8S中通過Service向外暴露服務(wù),提供向內(nèi)部各個(gè)Pod(K8S資源管理的最小單元)的負(fù)載均衡。Service通過Label Selector匹配當(dāng)前就緒的Pod,還未就緒的Pod不會(huì)出現(xiàn)在Service的endpoints(目標(biāo)節(jié)點(diǎn)),即流量不會(huì)向其轉(zhuǎn)發(fā)。就緒探針在Pod的啟動(dòng)階段根據(jù)配置策略開始探測服務(wù)是否可用,如果探測成功則容器進(jìn)入ready狀態(tài)。當(dāng)一個(gè)Pod中的所有的容器進(jìn)入ready狀態(tài)后,該P(yáng)od的ready狀態(tài)為true,此時(shí)可被Service發(fā)現(xiàn)并納入流量轉(zhuǎn)發(fā)節(jié)點(diǎn)。如果就緒探針探測失敗,則流量不會(huì)向其轉(zhuǎn)發(fā)。配合spec.restartPolicy重啟策略的定義,可以自動(dòng)實(shí)現(xiàn)啟動(dòng)失敗pod的自動(dòng)重啟,直至正常啟動(dòng)進(jìn)入ready狀態(tài)后,才向外提供服務(wù)。

        就緒探針的執(zhí)行原理與存活探針類似,通過健康檢查策略配合重啟策略,可對(duì)異常Pod及時(shí)清理,從而實(shí)現(xiàn)運(yùn)行期間的故障自動(dòng)恢復(fù)。

        需要注意的是,一旦容器發(fā)生不可恢復(fù)的異常,單純依賴K8S的健康檢查將無法徹底排除故障。例如,當(dāng)應(yīng)用連接的數(shù)據(jù)庫異常導(dǎo)致容器在啟動(dòng)階段或運(yùn)行階段異常退出,Pod重啟后將始終不能進(jìn)入ready狀態(tài)。此時(shí)應(yīng)當(dāng)配合Pod重啟的告警及時(shí)人為干預(yù)排障。

        (2)應(yīng)用網(wǎng)關(guān)的熔斷降級(jí)、限流和重試機(jī)制設(shè)計(jì)

        當(dāng)遇到諸如秒殺購物、搶票等超高流量并發(fā)場景,系統(tǒng)承載能力已不能滿足實(shí)際的并發(fā)量時(shí),為了避免流量洪峰沖垮整個(gè)系統(tǒng),同時(shí)為客戶提供友好的報(bào)錯(cuò)信息,需要由應(yīng)用網(wǎng)關(guān)來做熔斷降級(jí)和限流。為避免由于網(wǎng)絡(luò)傳輸導(dǎo)致的偶發(fā)性異常,可通過重試機(jī)制來提高服務(wù)可用性。

        本方法的熔斷降級(jí)機(jī)制采用令牌桶限流算法。該算法在限制調(diào)用平均速率的同時(shí)還允許一定程度的突發(fā)調(diào)用。

        2.4 核心應(yīng)用組件一鍵應(yīng)急切換工具設(shè)計(jì)

        為避免單機(jī)房組件整體故障的風(fēng)險(xiǎn),核心應(yīng)用組件分布式緩存、分布式消息隊(duì)列在自身主備切換功能的基礎(chǔ)上,本方法設(shè)計(jì)了備用組件一鍵應(yīng)急切換的工具,原理如圖5所示。

        圖5 備用組件一鍵應(yīng)急切換工具執(zhí)行流程圖

        其算法執(zhí)行步驟:

        步驟1:在配置中心中準(zhǔn)備好備用組件的配置集;

        步驟2:切換控制器發(fā)出切換配置指令到K8S的ConfigMap中,修改其環(huán)境變量為備用配置集;

        步驟3:切換控制器向相關(guān)容器發(fā)出重啟指令;

        步驟4:容器重啟時(shí),讀取ConfigMap中的環(huán)境變量,獲取備用配置集的信息;

        步驟5:從配置中心讀取備用組件的配置集,完成重啟。

        備用組件保持可用狀態(tài)的關(guān)鍵:

        (1)緩存組件:在做緩存配置變更時(shí),應(yīng)同時(shí)向備用緩存中上載配置。

        (2)消息隊(duì)列組件:在建立Topic、消費(fèi)組時(shí),應(yīng)保持備用環(huán)境與生產(chǎn)環(huán)境的一致。

        通過以上策略,組件應(yīng)急切換可以在生產(chǎn)環(huán)境默認(rèn)組件全阻的情況下,實(shí)現(xiàn)向備用應(yīng)急組件的快速切換,降低故障恢復(fù)時(shí)間。

        3 “兩地三中心”容災(zāi)架構(gòu)設(shè)計(jì)

        在“同城雙活”部署的基礎(chǔ)上,擴(kuò)展異地容災(zāi)熱備部署,其架構(gòu)設(shè)計(jì)如圖6所示。綜合考慮故障恢復(fù)時(shí)間RTO、故障期間數(shù)據(jù)損失率RPO、投出產(chǎn)出比ROI三個(gè)指標(biāo),其部署特點(diǎn)如下:

        圖6 兩地三中心容災(zāi)部署架構(gòu)

        (1)機(jī)房流量調(diào)度:通過智能DNS實(shí)現(xiàn)向容災(zāi)環(huán)境的流量調(diào)度。

        (2)備機(jī)房的部署:備機(jī)房采用單集群部署模式,保持當(dāng)前生產(chǎn)環(huán)境的軟件版本。

        (3)公共組件分布式部署:對(duì)實(shí)時(shí)性要求不高、讀寫頻率較小的組件,可采用分布式部署方式,保持?jǐn)?shù)據(jù)一致,其中備機(jī)房的節(jié)點(diǎn)數(shù)可采用最小化設(shè)置。推薦公共部署的組件有:配置中心、日志中心、分布式文件系統(tǒng)、定時(shí)任務(wù)組件等。

        (4)數(shù)據(jù)庫同步及一致性保證:從主機(jī)房交易庫通過otter工具向備機(jī)房交易庫同步數(shù)據(jù)。備機(jī)房根據(jù)資源條件及業(yè)務(wù)需要決定是否設(shè)置運(yùn)維庫。

        4 方法實(shí)現(xiàn)

        該高可用性系統(tǒng)設(shè)計(jì)方法已在“江蘇電信新一代支付中心”系統(tǒng)上應(yīng)用實(shí)現(xiàn),支付中心的可用性和容災(zāi)性得到顯著提升。為了驗(yàn)證其高可用的設(shè)計(jì)效果,通過破壞性測試、壓力測試等手段,得到測試結(jié)論如表1所示。

        表1 江蘇電信新一代支付中心高可用系統(tǒng)測試案例

        為了驗(yàn)證系統(tǒng)持續(xù)服務(wù)能力,測試期間通過LoadRunner工具對(duì)服務(wù)進(jìn)行壓力測試,得到測試接口的吞吐量及報(bào)錯(cuò)情況?!叭萜鞴收匣謴?fù)”場景測試中,在第4分鐘模擬單個(gè)容器服務(wù)故障,正常觸發(fā)了容器健康檢查和故障恢復(fù)。由于故障恢復(fù)期間(10s左右)可用節(jié)點(diǎn)數(shù)降低,接口并發(fā)量稍有下降,待容器重啟完成重新加入服務(wù)列表后,并發(fā)量恢復(fù)正常。

        5 結(jié)束語

        為提升分布式云化交易型系統(tǒng)的可用性,降低系統(tǒng)故障概率,縮短故障恢復(fù)時(shí)間,提升系統(tǒng)容災(zāi)性,本文設(shè)計(jì)了“同城雙活”和“兩地三中心兩套高可用系統(tǒng)部署架構(gòu),分架構(gòu)、分層級(jí)闡述了高可用系統(tǒng)設(shè)計(jì)方法。實(shí)際應(yīng)用中可根據(jù)業(yè)務(wù)容災(zāi)等級(jí)做架構(gòu)的選型。

        本文創(chuàng)新提出基于Nginx的多集群、多環(huán)境流量調(diào)度原理,并提出網(wǎng)關(guān)配置同步變更工具的設(shè)計(jì)方法;創(chuàng)新提出備用組件一鍵應(yīng)急切換工具的設(shè)計(jì)方法;創(chuàng)新提出了異地容災(zāi)環(huán)境建設(shè)的總體方案。

        該方法已在“江蘇電信新一代支付中心”系統(tǒng)上應(yīng)用實(shí)現(xiàn),通過破壞性、壓力測試驗(yàn)證了設(shè)計(jì)方法的有效性,并在實(shí)際生產(chǎn)中驗(yàn)證了系統(tǒng)的高可用性。

        猜你喜歡
        容災(zāi)集群部署
        一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
        晉城:安排部署 統(tǒng)防統(tǒng)治
        部署
        海上小型無人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
        一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:40
        Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
        關(guān)于建筑企業(yè)容災(zāi)備份系統(tǒng)方案的探討
        電子制作(2017年10期)2017-04-18 07:22:47
        勤快又呆萌的集群機(jī)器人
        基于中興軟交換的電力通信網(wǎng)絡(luò)容災(zāi)系統(tǒng)建設(shè)
        部署“薩德”意欲何為?
        太空探索(2016年9期)2016-07-12 10:00:02
        综合亚洲伊人午夜网| 国产精品成人免费视频网站京东| 天天躁日日躁狠狠躁av| 亚洲精品成人网站在线观看| 精品欧美久久99久久久另类专区| 日本一区二区三区在线视频观看| 精品婷婷国产综合久久| 欧洲乱码伦视频免费| 国产女厕偷窥系列在线视频| 亚洲91av| 2020亚洲国产| 免费观看日本一区二区三区| 亚洲中文字幕久久精品蜜桃| 亚洲色无码播放| 亚洲一区二区精品久久岳| 亚洲国产丝袜美女在线| 丝袜美腿国产一区二区| 精品国产一区二区三区色搞| 国产精品中文久久久久久久| 久久久久亚洲av无码网站| 久久国产精品老女人| 水蜜桃在线视频在线观看| 经典三级免费看片天堂| 久久久亚洲欧洲日产国码αv| 亚洲最大av资源站无码av网址 | 女性自慰网站免费看ww| 99久久久久久亚洲精品| 蜜臀精品一区二区三区| 日本亚洲视频一区二区三区| 国产乱国产乱老熟300部视频| 五月中文字幕| 国产不卡一区在线视频| 亚洲国产av一区二区三区精品| 亚洲欧洲精品无码av| 美女胸又www又黄的网站| 日韩精品有码在线视频| 日韩精品在线免费视频| 老太脱裤子让老头玩xxxxx | 极品少妇一区二区三区四区| 无码人妻系列不卡免费视频| 国产美女高潮流白浆免费观看|