在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分布式系統中保證高可用性的常用經驗

華為開發者社區 ? 來源:華為云社區 ? 作者:aoho ? 2021-02-05 10:19 ? 次閱讀

系統可用性指標

系統可用性指標簡單來講就是系統可用時間與總運行時間之比

Availability=MTTF/(MTTF+MTTRMTTF)

MTTF 是 Mean Time To Failure,指平均故障前的時間,即系統平均能夠正常運行多長時間才發生一次故障。系統的可靠性越高,MTTF 越長(簡單理解MTTF 就是指系統正常運行的時間)。MTTR 是 Mean Time To Recovery, 平均修復時間,即從故障出現到故障修復的這段時間,也就是系統不可用的時間,這段時間越短越好。系統可用性指標可以用通過下表的999標準衡量,現在普遍要求至少2個9,最好4個9以上:

6333bbb2-5f86-11eb-8b86-12bb97331649.png

故障不可避免

高可用性是指系統提供的服務要始終可用,然而故障不可避免,特別是在分布式系統,面對不可控的用戶流量和機房環境,系統故障將會顯得更加復雜和不可預測。在大規模的分布式系統中,各個模塊之間存在錯綜復雜的依賴,任一一個環節出現問題,都有可能導致雪崩式、多米諾骨牌式的故障,甚者可以斷言出現故障成了常態。

63c257e6-5f86-11eb-8b86-12bb97331649.png

如上圖的分布式系統中,用戶請求系統中的某個服務接口,請求需要經過長長的調用鏈才能處理返回。我們起碼要保證網絡連接正常,服務網關正常、前端服務正常、后臺服務正常、數據庫正常,請求才能被正常處理,如果調用鏈中的任一環節出現問題,都會直接反饋到用戶體驗上。

系統出現故障的原因多種多樣,主要有以下這些:

網絡問題,網絡連接故障,網絡帶寬出現超時擁塞等;

性能問題,數據庫慢查詢、Java Full GC、硬盤 IO 過大、CPU 過高、內存不足等

安全問題,被網絡攻擊,如 DDoS 等、異常客戶端請求,如爬蟲等。

運維問題,需求變更頻繁不可控,架構也在不斷地被調整,監控問題等;

管理問題,沒有梳理出關鍵服務以及服務的依賴關系,運行信息沒有和控制系統同步;

硬件問題,硬盤損壞、網卡出問題、交換機出問題、機房掉電、挖掘機問題(前一陣子機房電纜就經常被挖斷)等;

面對如此多的天災人禍,可控和不可控的故障因素,似乎系統的高可用性變成不可能完成的任務,但是在日常開發運維中,我們可以采用一些有效的設計、實現和運維手段來提高系統的高可用性,盡量交付一個在任何時候都基本可用的系統。

冗余設計

分布式系統中單點故障不可取的,而降低單點故障的不二法門就是冗余設計,通過多點部署的方式,并且最好是部署在不同的物理位置,避免單機房中多點同時失敗。冗余設計不僅可以提高服務的吞吐量,還可以在出現災難時快速恢復。目前常見的冗余設計有主從設計和對等治理設計,主從設計又可以細分為一主多從、多主多從。

冗余設計中一個不可避免的問題是考慮分布式系統中數據的一致性,多個節點中冗余的數據追求強一致性還是最終一致性。即使節點提供無狀態服務,也需要借助外部服務,比如數據庫、分布式緩存等維護數據狀態。根據分布式系統下節點數據同步的基本原理CAP(Consistency (一致性)、Availablity (可用性)、Partition tolerance (分區容忍性)三個指標不可同時滿足),數據強一致性的系統無法保證高可用性,最典型的例子就是 Zookeeper。

Zookeeper 采用主從設計,服務集群由 Leader、Follower 和 Observer 三種角色組成,它們的職責如下:

Leader: Zookeeper 集群使用 ZAB 協議通過 Leader 選舉從集群中選定一個節點作為 Leader。Leader 響應客戶端的讀寫請求;

Follower:只提供數據的讀服務,會將來自客戶端的寫請求轉發到 Leader 中。在 Leader 選舉的過程中參與投票,并與 Leader 維持數據同步;

Observer:與 Folllower 的功能相同,但不參與 Leader 選舉和寫過程的“過半寫成功”策略,單純為了提高集群的讀能力。

在 Zookeeper 集群中,由于只有 Leader 角色的節點具備寫數據的能力,當 Leader 節點宕機時,在新的 Leader 節點沒有被選舉出來之前,集群的寫能力都是不可用的。雖然 Zookeeper 保證了集群數據的強一致性,但是放棄了集群的高可用性。 對等治理設計中比較優秀的業內體現為 Netiflx 開源的 Eureka 服務注冊和發現組件。Eureka 集群由 Eureka Client 和 Eureka Server 兩種角色組成,其中 Eureka Client 是指服務實例使用的服務注冊和發現的客戶端,用于注冊和查詢服務實例信息;Eureka Server 作為服務注冊中心,存儲有各服務的實例信息列表,采用多實例的方式部署保證高可用性。 每一個 Eureka Server 都是對等的數據節點,Eureka Client 可以向任意的 Eureka Server 發起服務注冊請求和服務發現請求。Eureka Server 之間的數據通過異步 HTTP 的方式同步,由于網絡的不可靠性,不同 Eureka Server 中的服務實例數據不能保證在任意時間節點都相等,只能保證在 SLA 承諾時間內達到數據的最終一致性。Eureka 點對點對等的設計保證了服務注冊與發現中心的高可用性,但是犧牲了數據的強一致性,降級為數據的最終一致性。

熔斷設計

在分布式系統中,一次完整的請求可能需要經過多個服務模塊的通力合作,請求在多個服務中傳遞,服務對服務的調用會產生新的請求,這些請求共同組成了這次請求的調用鏈。當調用鏈中的某個環節,特別是下游服務不可用時,將會導致上游服務調用方不可用,最終將這種不可用的影響擴大到整個系統,導致整個分布式系統的不可用,引發服務雪崩現象。

為了避免這種情況,在下游服務不可用時,保護上游服務的可用性顯得極其重要。對此,我們可以參考電路系統的斷路器機制,在必要的時候壯士斷腕,當下游服務因為過載或者故障不能用時,及時“熔斷”服務調用方和服務提供方的調用鏈,保護服務調用方資源,防止服務雪崩現象的出現。

斷路器的基本設計圖如下,由關閉、打開、半開三種狀態組成:

64540902-5f86-11eb-8b86-12bb97331649.png

關閉(Closed)狀態:

此時服務調用方可以調用服務提供方。斷路器中使用失敗計數器周期性統計請求失敗次數和請求總次數的比例,如果最近失敗頻率超過了周期時間內允許失敗的閾值,則切換到打開(Open)狀態。在關閉狀態下,失敗計數器基于時間周期運作,會在每個統計周期開始前自動重置,防止某次偶然錯誤導致斷路器進入打開狀態。

打開(Open)狀態:

在該狀態下,對應用程序的請求會立即返回錯誤響應或者執行預設的失敗降級邏輯,而不調用服務提供方。斷路器進入打開狀態后會啟動超時計時器,在計時器到達后,斷路器進入半開狀態。

半開(Half-Open)狀態:

允許應用程序一定數量的請求去調用服務。如果這些請求對服務的調用成功,那么可以認為之前導致調用失敗的錯誤已經修正,此時斷路器切換到關閉狀態,同時將失敗計數器重置。如果這一定數量的請求存在調用失敗的情況,則認為導致之前調用失敗的問題仍然存在,斷路器切回到打開狀態,并重置超時計時器來給系統一定的時間來修正錯誤。半開狀態能夠有效防止正在恢復中的服務被突然而來的大量請求再次打垮。

使用斷路器設計模式,能夠有效地保護服務調用方的穩定性,它能夠避免服務調用者頻繁調用可能失敗的服務提供者,防止服務調用者浪費 CPU 周期、線程和 IO 資源等,提高服務整體的可用性。

小結

本文主要介紹了幾種高可用的設計,除了上面介紹的方式之外,還有限流設計和一些其他設計與方案,如降級設計、無狀態設計、冪等性設計、重試設計、接口緩存、實時監控和度量以及常規劃化維護。

原文標題:進來抄作業吧!分布式系統中保證高可用性的常用經驗

文章出處:【微信公眾號:華為開發者社區】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分布式系統
    +關注

    關注

    0

    文章

    146

    瀏覽量

    19299

原文標題:進來抄作業吧!分布式系統中保證高可用性的常用經驗

文章出處:【微信號:Huawei_Developer,微信公眾號:華為開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分布式 IO 模塊:開啟藥品罐裝產線高效生產新紀元

    在藥品生產的精密領域,每一個環節都關乎著客戶的健康與安全。藥品罐裝產線作為藥品生產的關鍵環節,其高效運行與精準控制至關重要。明達技術MR30分布式 IO 模塊,正以其卓越的性能,成為實現藥品罐裝產線高效控制,確保產品質量穩定、工廠可用性
    的頭像 發表于 01-20 10:52 ?117次閱讀
    <b class='flag-5'>分布式</b> IO 模塊:開啟藥品罐裝產線高效生產新紀元

    基于ptp的分布式系統設計

    在現代分布式系統中,精確的時間同步對于確保數據一致系統穩定性和性能至關重要。PTP(Precision Time Protocol)是一種網絡協議,用于在
    的頭像 發表于 12-29 10:09 ?173次閱讀

    分布式光伏監控系統在能源領域中的重要

    在當今能源領域,分布式光伏發電作為一種可持續的能源解決方案正日益普及。而分布式光伏監控系統在其中扮演著至關重要的角色,為分布式光伏發電的高效運行和管理帶來了諸多顯著好處。 一、提升發電
    的頭像 發表于 12-09 14:39 ?361次閱讀
    <b class='flag-5'>分布式</b>光伏監控<b class='flag-5'>系統</b>在能源領域中的重要<b class='flag-5'>性</b>

    分布式光伏發電系統的應用

    分布式光伏發電系統現狀? Q/GDW1480-2015 《分布式電源接入電網技術規定》:分布式電源并網電壓等級可根據各并網點裝機容量進行初步選擇,推薦如下: 8kW 及以下可接入220
    的頭像 發表于 11-21 16:31 ?282次閱讀
    <b class='flag-5'>分布式</b>光伏發電<b class='flag-5'>系統</b>的應用

    使用bq769x0對可用性系統進行故障監控

    電子發燒友網站提供《使用bq769x0對可用性系統進行故障監控.pdf》資料免費下載
    發表于 10-15 10:13 ?0次下載
    使用bq769x0對<b class='flag-5'>高</b><b class='flag-5'>可用性</b><b class='flag-5'>系統</b>進行故障監控

    一文講清什么是分布式云化數據庫!

    分布式云化數據庫是一種先進的數據管理系統,它將傳統的數據庫技術與分布式計算、云計算和大數據處理技術相融合。這種數據庫架構旨在提供可用性
    的頭像 發表于 10-14 10:06 ?267次閱讀

    分布式存儲費用嗎?大概需要多少錢

    分布式存儲的費用是否,取決于多個因素,包括存儲容量、性能要求、服務提供商、計費模式等。因此,無法簡單地給出一個“”或“不高”的答案。通常分布式存儲費用通常包含存儲費用、網絡費用、增
    的頭像 發表于 09-24 10:41 ?329次閱讀

    分布式云化數據庫的優缺點分析

    分布式云化數據庫的優點主要體現在可用性和容錯、可擴展性、體系結構、數據一致、成本、升級迭代等方面。同時也存在一些缺點,如通信開銷較大、
    的頭像 發表于 09-14 09:42 ?311次閱讀

    淺析分布式風電電池儲能系統可用性

    【摘要】 以內蒙古某一實際分布式風電-電池儲能系統的設計和運行效果為基礎,對影響其可用性的關鍵因素進行了分析。結果顯示:能量管理系統的設計需要考慮功率補償控制以抵消儲能
    的頭像 發表于 08-20 09:36 ?1147次閱讀
    淺析<b class='flag-5'>分布式</b>風電電池儲能<b class='flag-5'>系統</b><b class='flag-5'>可用性</b>

    分布式SCADA系統的特點的組成

    在工業自動化和能源管理領域,SCADA(Supervisory Control And Data Acquisition)系統扮演著至關重要的角色。其中,分布式SCADA系統憑借其獨特的結構和功能
    的頭像 發表于 06-07 14:43 ?614次閱讀

    安徽京準 NTP授時服務器(北斗授時設備)在分布式系統中的重要

    安徽京準 NTP授時服務器(北斗授時設備)在分布式系統中的重要
    的頭像 發表于 06-06 14:11 ?326次閱讀
    安徽京準 NTP授時服務器(北斗授時設備)在<b class='flag-5'>分布式</b><b class='flag-5'>系統</b>中的重要<b class='flag-5'>性</b>

    分布式光纖測溫預警系統|多回電纜上增設|溫度及溫度分布

    分布式光纖測溫預警系統是什么?要回答這個問題,可不簡單,接下來,深圳鼎信智慧就帶大家進入分布式光纖測溫預警系統的世界: 在現代工業領域,溫度監測的重要
    的頭像 發表于 05-15 16:45 ?539次閱讀

    HarmonyOS實戰案例:【分布式賬本】

    Demo基于Open Harmony系統使用ETS語言進行編寫,本Demo主要通過設備認證、分布式拉起、分布式數據管理等功能來實現。
    的頭像 發表于 04-12 16:40 ?1402次閱讀
    HarmonyOS實戰案例:【<b class='flag-5'>分布式</b>賬本】

    分布式系統在交通監控工程中的創新應用案例

    應用,為交通管理帶來了革命的改變。 在某大型城市的交通監控工程中,訊維分布式系統成功應用,實現了對全市交通監控設備的統一接入和管理。通過該系統
    的頭像 發表于 03-18 16:14 ?595次閱讀

    宜科FX20系列分布式I/O兩款功能模塊重磅發布

    FX20系列分布式I/O重磅發布兩款功能模塊,2通道高速計數模塊和2通道串口通訊模塊,基于高速背板總線并搭配多種耦合器,為控制系統提供更豐富的功能選擇,進一步提高FX20的可用性
    的頭像 發表于 03-07 14:19 ?930次閱讀
    主站蜘蛛池模板: 美女脱裤子屁屁视频 | 日本黄色片黄色片 | 久久久久国产一级毛片高清片 | 久青草久青草高清在线播放 | 男人和女人做免费做爽爽视频 | 欧美猛操 | 日本三级香港三级三级人!妇久 | 天天综合网网欲色 | 欧美色综合网站 | 日韩一级在线播放免费观看 | 天堂资源wwww在线看 | 亚洲电影在线播放 | 久久国产免费观看精品1 | 午夜久久免影院欧洲 | 色国产在线视频一区 | 国产乱码精品一区二区三区四川人 | 亚洲影院手机版777点击进入影院 | 天堂日韩| 亚洲精品美女久久久 | 84pao强力永久免费高清 | 国产高清成人mv在线观看 | 手机在线免费视频 | 午夜.dj高清在线观看免费8 | 日韩在线视频一区二区三区 | 色老头一区二区三区在线观看 | www日本高清 | 五月天六月丁香 | 天天干天天日天天射天天操毛片 | 欧美视频免费一区二区三区 | 日本在线视频不卡 | 一区二区免费看 | 亚洲一级毛片中文字幕 | 日本美女黄网站 | 你懂的在线免费观看 | 特级毛片aaaaaa蜜桃 | 乱码精品一区二区三区 | 一级片视频播放 | 欧美色视频超清在线观看 | 国内一级特黄女人精品片 | 亚洲男人天堂手机版 | 国产精品亚洲精品日韩动图 |