自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

穩(wěn)定性與高可用保障的工作思路

開發(fā) 架構(gòu)
憑借經(jīng)驗(yàn)和感受我們知道,提高系統(tǒng)的這兩項(xiàng)指標(biāo),系統(tǒng)會(huì)更加健康,產(chǎn)品也會(huì)有更好的用戶體驗(yàn)。但是如果要給穩(wěn)定性和高可用性下一個(gè)定義該如何表述?

一 、深入理解穩(wěn)定性與高可用性

穩(wěn)定性與高可用性是老生常談的兩個(gè)詞。憑借經(jīng)驗(yàn)和感受我們知道,提高系統(tǒng)的這兩項(xiàng)指標(biāo),系統(tǒng)會(huì)更加健康,產(chǎn)品也會(huì)有更好的用戶體驗(yàn)。但是如果要給穩(wěn)定性和高可用性下一個(gè)定義該如何表述?穩(wěn)定性和高可用性這二者又有何區(qū)別和聯(lián)系?我認(rèn)為首先要理解好這兩個(gè)問(wèn)題,才能夠設(shè)定清晰的目標(biāo),系統(tǒng)地制定完整可行的方案。 在維基百科上搜索穩(wěn)定性,定義如下:

穩(wěn)定性是數(shù)學(xué)或工程上的用語(yǔ),判別一系統(tǒng)在有界的輸入是否也產(chǎn)生有界的輸出。若是,稱系統(tǒng)為穩(wěn)定;若否,則稱系統(tǒng)為不穩(wěn)定。

再看看高可用性的:

高可用性(英語(yǔ):high availability,縮寫為 HA),IT術(shù)語(yǔ),指系統(tǒng)無(wú)中斷地執(zhí)行其功能的能力,代表系統(tǒng)的可用性程度。是進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)的準(zhǔn)則之一。高可用性系統(tǒng)與構(gòu)成該系統(tǒng)的各個(gè)組件相比可以更長(zhǎng)時(shí)間運(yùn)行。

首先從穩(wěn)定性的定義中提煉出關(guān)鍵的詞語(yǔ) -- 系統(tǒng)、輸入、輸出。在螞蟻當(dāng)下的技術(shù)架構(gòu)中,可以把一個(gè)應(yīng)用當(dāng)做系統(tǒng),應(yīng)用之間的服務(wù)請(qǐng)求為輸入,服務(wù)響應(yīng)為輸出,當(dāng)服務(wù)響應(yīng)符合預(yù)期時(shí)認(rèn)為應(yīng)用系統(tǒng)是穩(wěn)定的。當(dāng)他們相互組合形成一個(gè)更大的系統(tǒng),作為業(yè)務(wù)產(chǎn)品對(duì)用戶表達(dá)時(shí),用戶的請(qǐng)求作為輸入,產(chǎn)品的表達(dá)作為輸出,當(dāng)產(chǎn)品功能正常運(yùn)行時(shí)可以認(rèn)為產(chǎn)品系統(tǒng)是穩(wěn)定的。綜上,關(guān)于穩(wěn)定性的定義我們可以總結(jié)歸納為 -- 當(dāng)系統(tǒng)接收輸入后,能夠產(chǎn)生正確的、符合預(yù)期的輸出,稱系統(tǒng)為穩(wěn)定;否則,稱系統(tǒng)為不穩(wěn)定。 再回到命題上,為什么叫穩(wěn)定性保障?能不能換一個(gè)說(shuō)法叫提高穩(wěn)定性?通過(guò)上文的定義我們可以總結(jié)出,穩(wěn)定性描述的是系統(tǒng)的行為。一個(gè)系統(tǒng)是否穩(wěn)定,就像我們?cè)u(píng)價(jià)一個(gè)人是否健康一樣,很難用陳述的方式進(jìn)行完整的描述,去量化。但是卻可以通過(guò)否定的方式進(jìn)行快速地判斷。人們通過(guò)良好的飲食和生活習(xí)慣來(lái)減少疾病的發(fā)生,保持身體的健康。保障系統(tǒng)的穩(wěn)定性或者說(shuō)提高系統(tǒng)的穩(wěn)定性也是如此,我們需要通過(guò)各種方法來(lái)避免那些不穩(wěn)定的情況發(fā)生。所謂的更穩(wěn)定,客觀上并不存在,是主觀上希望避免或者減少不穩(wěn)定的情況發(fā)生。 與穩(wěn)定性不同,可用性是一個(gè)可以量化的指標(biāo),計(jì)算的公式在維基百科中是這樣描述的:

根據(jù)系統(tǒng)損害、無(wú)法使用的時(shí)間,以及由無(wú)法運(yùn)作恢復(fù)到可運(yùn)作狀況的時(shí)間,與系統(tǒng)總運(yùn)作時(shí)間的比較。

我們經(jīng)常聽到的3個(gè)9(99.9%),4個(gè)9(99.99%)度量的就是系統(tǒng)的可用性,高可用就是要保證系統(tǒng)的這個(gè)指標(biāo)維持在一個(gè)高水平。在公式的定義描述中,將系統(tǒng)的運(yùn)行時(shí)間分成了三個(gè)部分

  • 系統(tǒng)正常運(yùn)作的時(shí)間,即系統(tǒng)處于穩(wěn)定狀態(tài)的時(shí)間。
  • 系統(tǒng)損害、無(wú)法使用的時(shí)間,即系統(tǒng)處于非穩(wěn)定狀態(tài)的時(shí)間。
  • 系統(tǒng)由無(wú)法運(yùn)作恢復(fù)到可運(yùn)作狀況的時(shí)間,即系統(tǒng)由非穩(wěn)定狀態(tài)恢復(fù)到穩(wěn)定狀態(tài)的時(shí)間。

系統(tǒng)的可用性和系統(tǒng)的穩(wěn)定性是成正相關(guān)的。不過(guò)在現(xiàn)實(shí)生活中,系統(tǒng)是不可能永遠(yuǎn)處于穩(wěn)定狀態(tài)。逆向思考,將上述的公式進(jìn)行轉(zhuǎn)換,更有利于我們進(jìn)行分析:

至此,本次命題的目標(biāo),KPI就清晰了。保障系統(tǒng)的穩(wěn)定性和高可用的目標(biāo)是使系統(tǒng)處于穩(wěn)定的工作狀態(tài),對(duì)用戶不產(chǎn)生負(fù)面的影響,避免線上問(wèn)題和P級(jí)故障的發(fā)生。核心kpi是系統(tǒng)的可用性。為了提高系統(tǒng)的可用性,我們應(yīng)該首先保障系統(tǒng)的穩(wěn)定性,減少非穩(wěn)定狀況的發(fā)生,其次當(dāng)系統(tǒng)由于各個(gè)組成部分發(fā)生故障,出現(xiàn)非穩(wěn)定狀態(tài)時(shí),能夠快速發(fā)現(xiàn)并將其恢復(fù)到穩(wěn)定可用的狀態(tài)。

二、 穩(wěn)定性與高可用保障的核心思路

通過(guò)上文的推演,針對(duì)提高系統(tǒng)可用性這一目標(biāo),我們能夠得到兩個(gè)基本的解題思路。按圖索驥,為了解決問(wèn)題,首要的任務(wù)是發(fā)現(xiàn)和定義問(wèn)題。因此為了提高系統(tǒng)的穩(wěn)定性,我們先列舉應(yīng)用系統(tǒng)中常見(jiàn)的非穩(wěn)定的情況,再一一對(duì)癥下藥:

  • 功能:應(yīng)用程序執(zhí)行的功能出現(xiàn)錯(cuò)誤,不符合預(yù)期。
  • 容量:當(dāng)系統(tǒng)接收的請(qǐng)求數(shù)量增加時(shí),應(yīng)用程序無(wú)法正常處理,出現(xiàn)異?;虺瑫r(shí),導(dǎo)致服務(wù)失效。
  • 安全:當(dāng)系統(tǒng)接收到的沒(méi)有授權(quán)的或者惡意攻擊的請(qǐng)求時(shí),應(yīng)用程序出現(xiàn)異常甚至服務(wù)失效。
  • 容錯(cuò):對(duì)于用戶錯(cuò)誤的使用方式, 應(yīng)用程序無(wú)法合適地處理。

當(dāng)上述情況發(fā)生時(shí),就意味著系統(tǒng)處于不穩(wěn)定的狀態(tài),需要我們能夠及時(shí)發(fā)現(xiàn)并進(jìn)行處理。而造成這些問(wèn)題的原因,在軟件系統(tǒng)中通??梢詺w結(jié)為以下三類:

  • 人為故障:在開發(fā)軟件的各個(gè)環(huán)節(jié)中思考不充分,或者執(zhí)行時(shí)粗心導(dǎo)致的各類問(wèn)題。
  • 硬件故障:網(wǎng)絡(luò)不通,硬盤空間不夠,內(nèi)存崩潰等。
  • 軟件故障:線程池異常,JVM異常,中間件或其他依賴的應(yīng)用服務(wù)異常。

對(duì)于一個(gè)動(dòng)態(tài)演進(jìn)的系統(tǒng)而言,我們沒(méi)有辦法將故障發(fā)生的概率降為0,只能通過(guò)在軟件生產(chǎn)的過(guò)程中,建立流程規(guī)范和機(jī)制來(lái)盡量減少其發(fā)生。其次對(duì)于一個(gè)運(yùn)行的系統(tǒng),我們需要建立并完善監(jiān)控和預(yù)警機(jī)制來(lái)及時(shí)發(fā)現(xiàn)系統(tǒng)中的故障,并通過(guò)執(zhí)行預(yù)案使系統(tǒng)快速恢復(fù)?;谏鲜鼋Y(jié)論,為了提高系統(tǒng)的可用性,需要從以下三個(gè)方面入手開展工作:故障預(yù)防,故障發(fā)現(xiàn)和故障恢復(fù)。

人犯錯(cuò)的幾率是遠(yuǎn)遠(yuǎn)大于機(jī)器的,因此故障預(yù)防最重要的是建立一套機(jī)制,在團(tuán)隊(duì)內(nèi)達(dá)成共識(shí)并持續(xù)按照此流程開展研發(fā)工作,從而減少個(gè)人因素(思考、執(zhí)行、狀態(tài)等方面)對(duì)系統(tǒng)穩(wěn)定性的影響。而故障發(fā)現(xiàn)以及故障恢復(fù),則是需要通過(guò)系統(tǒng)監(jiān)控和應(yīng)急方案來(lái)快速發(fā)現(xiàn)系統(tǒng)異常并恢復(fù),從而盡量減輕故障的影響面。下面以螞蟻日常的產(chǎn)品研發(fā)流程為例,從功能、容量、安全、容錯(cuò)這4個(gè)核心要素出發(fā),給出一套方案僅供參考。

1. 研發(fā)規(guī)范

(1)設(shè)計(jì)階段

    1)團(tuán)隊(duì)細(xì)分文檔模板

    2)高可用設(shè)計(jì)規(guī)范

 (2)編碼階段

     1)代碼規(guī)范

  • 通用代碼規(guī)范
  • 工程結(jié)構(gòu)規(guī)范

      2)單測(cè)覆蓋率

  • 單測(cè)通過(guò)率
  • 代碼覆蓋率

       3)日志規(guī)范

       4)安全漏洞修復(fù)規(guī)范

 (3)發(fā)布階段

 (4)變更規(guī)范:三板斧

2.容量保障

 (1)容量評(píng)估

       1)機(jī)器容量

        2)DB容量

         3)緩存容量

  (2)壓測(cè)摸底

  (3)限流方案

  (4)降級(jí)方案

3. 監(jiān)控告警

  (1)日志規(guī)范

  (2)監(jiān)控梳理

        1)應(yīng)用基礎(chǔ)監(jiān)控

         2)網(wǎng)關(guān)監(jiān)控

         3)服務(wù)監(jiān)控

         4)業(yè)務(wù)監(jiān)控

         5)限流監(jiān)控

 (3)告警規(guī)范

 (4)數(shù)據(jù)核對(duì)

4. 應(yīng)急快反

 (1)日常預(yù)案

        1)硬件異常預(yù)案

        2)中間件異常預(yù)案

        3)業(yè)務(wù)異常預(yù)案

 (2)大促預(yù)案

 (3)預(yù)案執(zhí)行規(guī)范

三、總結(jié)

如何做好穩(wěn)定性和高可用保障是一個(gè)很龐大的命題,其中的任一小部分內(nèi)容在內(nèi)網(wǎng)都可以搜到大量的文章。寫這篇文章的目的是總結(jié)一下自己對(duì)穩(wěn)定性和高可用保障工作的理解,給大家分享一套系統(tǒng)的框架思路。希望大家在讀后能夠更全面的了解安全生產(chǎn),不陷于細(xì)節(jié)。

責(zé)任編輯:武曉燕 來(lái)源: 阿里技術(shù)
相關(guān)推薦

2022-10-20 12:04:08

2022-06-14 14:57:47

穩(wěn)定性高可用流程

2021-01-27 11:48:34

高可用系統(tǒng)Review

2016-12-21 09:33:40

2021-03-10 11:18:21

高可用系統(tǒng)限流

2022-05-05 11:04:35

技術(shù)高可用系統(tǒng)

2024-12-12 09:18:21

2023-06-30 08:43:36

2023-05-30 07:27:45

高可用架構(gòu)流量

2022-12-15 09:56:27

2014-05-19 11:58:21

世紀(jì)互聯(lián)微軟云服務(wù)

2023-08-28 06:58:40

2023-04-26 18:36:13

2011-12-21 09:46:46

程序員

2023-08-28 10:40:12

Java分布式

2023-08-29 11:38:27

Java內(nèi)存

2023-02-27 18:31:20

架構(gòu)服務(wù)監(jiān)控

2022-12-13 07:32:46

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)