国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何做好垂直域穩(wěn)定性

這篇具有很好參考價(jià)值的文章主要介紹了如何做好垂直域穩(wěn)定性。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

如何做好垂直域穩(wěn)定性

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-502200.html

一個(gè)小小的故障就可能造成巨大的負(fù)面影響,因此穩(wěn)定性工作復(fù)雜卻又至關(guān)重要。本文將通過(guò)故障預(yù)防、修復(fù)、復(fù)盤(pán)來(lái)講解該如何建設(shè)一個(gè)穩(wěn)定性體系。

?

來(lái)到阿里后,我的工作內(nèi)容一直都是商品中心的穩(wěn)定性,這份工作對(duì)于我個(gè)人在技術(shù)和經(jīng)驗(yàn)上的成長(zhǎng)提升是無(wú)比巨大的。在我看來(lái),穩(wěn)定性是一個(gè)極為復(fù)雜的工作,對(duì)人的能力考驗(yàn)極大,本文希望和大家一起了解:

?

  • 穩(wěn)定性是做什么的?

?

  • 穩(wěn)定性到底怎么做?

?

  • 做好穩(wěn)定性,需要什么樣的能力?

?

  • 怎么從穩(wěn)定性零散的事情中創(chuàng)造價(jià)值?

?

一、什么是穩(wěn)定性

?

1、穩(wěn)定性的定義

?

在我看來(lái),穩(wěn)定性工作是指日常保障系統(tǒng)安全生產(chǎn)的同時(shí),利用技術(shù)手段以及規(guī)范開(kāi)發(fā)流程,使系統(tǒng)在不斷的業(yè)務(wù)迭代中熵增達(dá)到最小化的一種工作。作為一家互聯(lián)網(wǎng)公司,穩(wěn)定性工作本質(zhì)上就是保障安全生產(chǎn)。一個(gè)故障,就可能會(huì)造成很大的負(fù)面影響,舉例幾個(gè)之前有過(guò)耳聞的故障:

?

  • 某故障使下單阻塞,導(dǎo)致某線下業(yè)務(wù)受到很大影響;

?

  • 很多年前春節(jié)時(shí)訂正數(shù)據(jù),由于腳本問(wèn)題,導(dǎo)致部分訂單被確認(rèn)收貨;

?

  • 由于arguments版本不一致,同時(shí)進(jìn)行了無(wú)灰度的操作,導(dǎo)致某業(yè)務(wù)大范圍宕機(jī);

?

由此可見(jiàn),集團(tuán)內(nèi)部的故障,輕則影響用戶體驗(yàn)、商家體驗(yàn),重則對(duì)人民財(cái)產(chǎn)造成重大損失;因此,保障安全生產(chǎn)是企業(yè)發(fā)展的頭等大事。

?

2、穩(wěn)定性崗位的工作內(nèi)容

?

穩(wěn)定性的事情看上去可能比較散,但結(jié)合我自己的思考,我將穩(wěn)定性的價(jià)值體系劃分為幾個(gè)方面:

?

如何做好垂直域穩(wěn)定性

?

1)日常穩(wěn)定性

?

① 業(yè)務(wù)保障

?

大促保障、業(yè)務(wù)日常的答疑等等,通過(guò)這些事情,穩(wěn)定性同學(xué)會(huì)與業(yè)務(wù)同學(xué)配合,從底層性能、技術(shù)層面,更好地推動(dòng)業(yè)務(wù)向前發(fā)展。日常的答疑工作是穩(wěn)定性同學(xué)投入時(shí)間最多的內(nèi)容之一,很多問(wèn)題都會(huì)第一時(shí)間流入到穩(wěn)定性同學(xué)手中:

?

  • 技術(shù)問(wèn)題:應(yīng)用架構(gòu)不了解,或由于系統(tǒng)穩(wěn)定性問(wèn)題導(dǎo)致上游出現(xiàn)限流、超時(shí)等;

?

  • 大促問(wèn)題:很多關(guān)于大促的問(wèn)題,大促跨域合作的橫向事宜等;

?

  • 業(yè)務(wù)問(wèn)題:日常碰到的影響業(yè)務(wù)體驗(yàn)的問(wèn)題,比如某些業(yè)務(wù)出現(xiàn)了阻塞或者數(shù)據(jù)錯(cuò)誤等。

?

對(duì)于體量較大、較為核心的團(tuán)隊(duì),一天涌入的問(wèn)題是很多的,我們的思考和處理方案如下:

?

  • 技術(shù)支持:所有問(wèn)題的入口,首先通過(guò)答疑群接觸到的就是技術(shù)支持同學(xué),這部分能cover大部分的問(wèn)題;

?

  • 每周答疑:技術(shù)支持并不深入了解底層業(yè)務(wù)和代碼,對(duì)于他們無(wú)法處理的問(wèn)題,會(huì)流轉(zhuǎn)到每周答疑同學(xué)身上,由商品域的同學(xué)每周輪換,負(fù)責(zé)答疑和發(fā)布。

?

2)大促 & 活動(dòng)保障

?

穩(wěn)定性另一個(gè)核心就是負(fù)責(zé)大促和重?;顒?dòng)。每一次大促,上到業(yè)務(wù),下到中臺(tái)、基礎(chǔ)設(shè)施,都需要抽出人力進(jìn)行保障,每個(gè)域的穩(wěn)定性同學(xué)則是其中的中堅(jiān)力量。下面我著重從流程和內(nèi)容上講一下大促保障手段,可能不同同學(xué)面臨的場(chǎng)景不同,但整個(gè)理論應(yīng)該是相通的:

?

① 保障流程

?

  • 大促準(zhǔn)備

?

活動(dòng)開(kāi)始前開(kāi)始進(jìn)行一系列準(zhǔn)備工作,如入口流量、各應(yīng)用容量的評(píng)估,預(yù)案、規(guī)則的梳理,建站壓測(cè)等。

?

  • 全鏈路加固

?

這個(gè)階段會(huì)根據(jù)正式期的流量模型進(jìn)行頻繁的壓測(cè)來(lái)找出系統(tǒng)問(wèn)題,建立相關(guān)的監(jiān)控防線,壓測(cè)會(huì)一直持續(xù)到正式期開(kāi)始。

?

  • 作戰(zhàn)保障

?

從壓測(cè)期間發(fā)現(xiàn)的具體問(wèn)題出發(fā),逐個(gè)解決,并制定相關(guān)的作戰(zhàn)手冊(cè)等,完善大促保障機(jī)制。

?

  • 大促預(yù)熱

?

這個(gè)階段一般在大促正式期前幾天開(kāi)始,一般會(huì)執(zhí)行一些清理和重啟的任務(wù),混部擴(kuò)容以及一些提前執(zhí)行的預(yù)案、預(yù)熱任務(wù)等也會(huì)啟動(dòng)。

?

  • 大促保障

?

正式進(jìn)入保障期,核心作戰(zhàn)時(shí)間保障活動(dòng),盯盤(pán),發(fā)現(xiàn)問(wèn)題及時(shí)播報(bào);峰值結(jié)束后,需要關(guān)注相關(guān)預(yù)案及資源是否下線。

?

如何做好垂直域穩(wěn)定性

?

② 工作內(nèi)容

?

大促穩(wěn)定性保障的工作比較復(fù)雜,在這里先放一張圖,讓沒(méi)有參與過(guò)大促的同學(xué)來(lái)點(diǎn)體感:

?

如何做好垂直域穩(wěn)定性

?

雖然看起來(lái)簡(jiǎn)單,但真實(shí)的保障過(guò)程遠(yuǎn)比這些事情更多,面臨的壓力也比想象的大很多,即使在大促日漸常態(tài)化的今天,參與大促保障、經(jīng)歷阿里千萬(wàn)級(jí)復(fù)雜流量模型洗禮仍然是提高個(gè)人能力的最佳方式。

?

3)優(yōu)化專項(xiàng) & 鏈路治理

?

保障業(yè)務(wù)不斷發(fā)展時(shí),由于系統(tǒng)不斷的迭代,必然會(huì)導(dǎo)致熵增,原來(lái)可能較為穩(wěn)定的鏈路,會(huì)因?yàn)榈粩喔?。同時(shí),如618、雙11等大型活動(dòng),也不斷挑戰(zhàn)系統(tǒng)的極限。一句話來(lái)總結(jié):業(yè)務(wù)發(fā)展(系統(tǒng)變更)不斷的挑戰(zhàn)著我們系統(tǒng)的穩(wěn)定性,我們需要持續(xù)不斷的進(jìn)行性能優(yōu)化,保障系統(tǒng)的高可用,來(lái)適應(yīng)越來(lái)越龐大的業(yè)務(wù)。不同的優(yōu)化專項(xiàng),在不同的場(chǎng)景下做法可能也不同,風(fēng)險(xiǎn)也會(huì)比日常的需求高很多。

?

如何做好垂直域穩(wěn)定性

?

① 產(chǎn)生變更

?

隨著業(yè)務(wù)不斷的迭代,不可避免地會(huì)發(fā)生變更,如更新代碼、發(fā)布配置或做運(yùn)維層面的變更等,而這些變更則可能引入一些未知的問(wèn)題,這些問(wèn)題可能會(huì)瞬間暴露出來(lái),或積壓一段時(shí)間后噴涌式的爆發(fā),一般來(lái)說(shuō),后者產(chǎn)生的影響可能會(huì)更大一些。

?

② 發(fā)現(xiàn)問(wèn)題

?

故障定級(jí)經(jīng)常會(huì)講提前發(fā)現(xiàn),如果能夠提前發(fā)現(xiàn)故障,不僅能降低或者避免因故障帶來(lái)的損失,也能將故障等級(jí)縮小。那么,如何主動(dòng)發(fā)現(xiàn)由變更產(chǎn)生的問(wèn)題?這一部分則要依賴穩(wěn)定性建設(shè)時(shí)比較重要的一環(huán) — 監(jiān)控告警:

?

  • 我們?cè)谏暇€業(yè)務(wù)代碼前,根據(jù)自己判斷出的可能產(chǎn)生問(wèn)題的點(diǎn),輸出的業(yè)務(wù)日志告警。

?

  • 容器與中間件性能相關(guān)的全景監(jiān)控大盤(pán)。

?

  • 在線與離線等數(shù)據(jù)對(duì)賬相關(guān)的大盤(pán)。

?

當(dāng)然,監(jiān)控不可能百分之百覆蓋到所有的問(wèn)題,也有很多問(wèn)題會(huì)從其他側(cè)反饋過(guò)來(lái),此時(shí)就要盤(pán)點(diǎn)出自己的監(jiān)控體系中到底還有哪些疏漏,并逐漸完善。

?

③ 解決問(wèn)題

?

大致為高可用問(wèn)題和數(shù)據(jù)一致性問(wèn)題兩類,針對(duì)不同場(chǎng)景有不同的解決方法,高可用問(wèn)題大家可能比較熟悉了,優(yōu)化起來(lái)目標(biāo)也比較明確,技術(shù)難度有高有低,不詳細(xì)展開(kāi)討論。

?

4)成本縮減

?

大部分的性能優(yōu)化,提升系統(tǒng)的性能僅僅是一方面,另一個(gè)作用則是通過(guò)性能優(yōu)化提高的性能壓縮技術(shù)成本。同時(shí),效能提升也是與穩(wěn)定性同學(xué)有關(guān)的一件事情,通過(guò)制定更好的開(kāi)發(fā)規(guī)范以及流程,來(lái)幫助同學(xué)們提高開(kāi)發(fā)體驗(yàn)和工作效率,也可以將更多的時(shí)間投入在業(yè)務(wù)發(fā)展上,來(lái)進(jìn)一步促進(jìn)業(yè)務(wù)發(fā)展,從而形成一個(gè)良性循環(huán)。在我個(gè)人看來(lái),我將成本劃分為兩類:

?

?

?

① 效能提升 — 人力成本

?

人力成本受開(kāi)發(fā)效率影響,效率越高,一個(gè)需求需要的人力成本就越低;影響人力成本的原因有很多,解決方案這里不繼續(xù)展開(kāi),簡(jiǎn)單列舉幾個(gè)會(huì)影響到人力成本的因素:

?

  • 軟件復(fù)雜度

?

不合理的架構(gòu)設(shè)計(jì),以及擁有很長(zhǎng)時(shí)間歷史包袱的應(yīng)用,由于其代碼的復(fù)雜度越來(lái)越高,會(huì)讓開(kāi)發(fā)人員的開(kāi)發(fā)效率明顯降低,要定時(shí)對(duì)應(yīng)用中的代碼進(jìn)行重構(gòu),增加可讀性。

?

  • 測(cè)試 & 回歸

?

作為開(kāi)發(fā)過(guò)程中的重要一環(huán),為了降低故障頻率,自測(cè)往往占據(jù)了比開(kāi)發(fā)更長(zhǎng)的時(shí)間,因此提升自測(cè)的效率和準(zhǔn)確度尤為重要。

?

  • 工作流程

?

不合理的流程也會(huì)拖慢工作進(jìn)度,如工作分配不合理,責(zé)任互相推諉等;對(duì)工作職責(zé)的細(xì)分沒(méi)有明確的定義,或者對(duì)于問(wèn)題的推進(jìn)沒(méi)有嚴(yán)格的流程和產(chǎn)品化的工具,是這個(gè)問(wèn)題發(fā)生的核心原因。

?

② 資源管控 — 技術(shù)成本

?

技術(shù)成本主要分為兩類:

?

  • 計(jì)算成本

?

以內(nèi)存運(yùn)算為主,如容器、計(jì)算型中間件、外部平臺(tái)等,往往流量越高則產(chǎn)生的計(jì)算成本越高,因此管控計(jì)算成本可以從鏈路、性能優(yōu)化上入手,讓同等流量下所需要的算力降低。

?

  • 存儲(chǔ)成本

?

DB等偏重于存儲(chǔ)的中間件,存儲(chǔ)的數(shù)據(jù)越多,占用的磁盤(pán)空間越大,存儲(chǔ)成本則越高,因此管控存儲(chǔ)成本可以從數(shù)據(jù)治理入手。

?

計(jì)算成本與存儲(chǔ)成本并不是完全分離開(kāi)的,舉例緩存,空間存儲(chǔ)等中間件,往往是計(jì)算(讀寫(xiě)操作)與存儲(chǔ)并存,那核算成本的方式以長(zhǎng)板為主。

?

在成本縮減中,技術(shù)成本占的比例是最高的,如何幫助縮減掉業(yè)務(wù)增長(zhǎng)時(shí)瘋狂擴(kuò)張的成本,也是穩(wěn)定性同學(xué)的一個(gè)重要課題。

?

5)數(shù)據(jù)治理

?

與數(shù)倉(cāng)領(lǐng)域的同學(xué)不同,穩(wěn)定性同學(xué)很少會(huì)對(duì)數(shù)據(jù)質(zhì)量去做管理,這里提到的數(shù)據(jù)治理,主要是指治理一些會(huì)影響到穩(wěn)定性情況的一些數(shù)據(jù)。比如,某業(yè)務(wù)發(fā)品時(shí),由于邏輯沒(méi)有對(duì)齊,有些情況下雖然發(fā)品成功,但是會(huì)認(rèn)為發(fā)品失敗,會(huì)不斷進(jìn)行發(fā)布重試,一直失敗一直重試,也沒(méi)有設(shè)置重復(fù)上線,導(dǎo)致同樣一個(gè)商品最多發(fā)了上百萬(wàn)次,使線上某核心鏈路查詢貨商關(guān)系時(shí)大量full gc。

?

一句話總結(jié):由于鏈路不合理、黑灰產(chǎn)、外部胡亂操作或線上問(wèn)題產(chǎn)出的阻塞鏈路、擴(kuò)大成本的大數(shù)據(jù)內(nèi)容,都算作線上不合理的數(shù)據(jù)治理范圍,每年固定的時(shí)段,穩(wěn)定性同學(xué)會(huì)統(tǒng)一對(duì)這些數(shù)據(jù)做一次治理,降低成本,提升鏈路穩(wěn)定性。

?

3、一個(gè)穩(wěn)定性同學(xué)需要的能力

?

來(lái)打個(gè)比方,業(yè)務(wù)同學(xué)好比前線打仗的韓信,攻占地盤(pán),為公司創(chuàng)造業(yè)務(wù)價(jià)值,而穩(wěn)定性的同學(xué)則是維護(hù)大后方的蕭何,為前線的同學(xué)提供保障,維持系統(tǒng)的穩(wěn)定運(yùn)行。如果業(yè)務(wù)發(fā)展不好,則公司無(wú)法維持好經(jīng)營(yíng),但是如果前方斷糧,系統(tǒng)的性能和穩(wěn)定不足以承載這么大的業(yè)務(wù)體量,那么無(wú)論業(yè)務(wù)再怎么發(fā)展,都是白費(fèi)功夫。保證系統(tǒng)穩(wěn)定安全的運(yùn)行,是穩(wěn)定性同學(xué)最重要的工作。穩(wěn)定性的工作強(qiáng)度很大,同時(shí)對(duì)人的心、腦、體考驗(yàn)也極大。它需要多元能力:

?

1)合格的技術(shù)能力

?

衡量一個(gè)穩(wěn)定性同學(xué)是否能cover住垂直域穩(wěn)定性工作的第一個(gè)重要指標(biāo),就是他的技術(shù)能力,對(duì)于技術(shù)能力要求的細(xì)節(jié)。日常要保持一直學(xué)習(xí)的心態(tài),養(yǎng)兵千日,用兵一時(shí),不能臨時(shí)抱佛腳。在此我不做過(guò)多描述,這里只放一張關(guān)于java基礎(chǔ)核心能力的圖供大家感受一下:

?

如何做好垂直域穩(wěn)定性

?

2)臨危不亂的心理素質(zhì)和強(qiáng)大的身體素質(zhì)

?

從事穩(wěn)定性工作,不論與你是否有關(guān),相關(guān)業(yè)務(wù)是否了解,遇到的所有問(wèn)題及故障永遠(yuǎn)都是第一處理人,因此見(jiàn)到的問(wèn)題故障會(huì)比一般同學(xué)多出很多,同時(shí)集團(tuán)對(duì)于故障處理的要求非常嚴(yán)格,這時(shí)候就需要你有強(qiáng)大的心理素質(zhì)。身體素質(zhì)自然不用多說(shuō),如果說(shuō)穩(wěn)定性是業(yè)務(wù)發(fā)展的“1”,那么強(qiáng)壯的身體則是穩(wěn)定性同學(xué)需要的那個(gè)“1”。

?

3)熟能生巧

?

如果說(shuō)技術(shù)能力是排查問(wèn)題需要首要條件,那么熟練度則檢驗(yàn)了一個(gè)穩(wěn)定性同學(xué)是否足夠老成;一個(gè)問(wèn)題新人定位&處理可能需要幾個(gè)小時(shí),但是成熟的穩(wěn)定性同學(xué)憑借經(jīng)驗(yàn)和工具可能瞬間定位到問(wèn)題的根因,確定解決方法。

?

4)拉通 & 人際交往能力

?

穩(wěn)定性同學(xué)大多都會(huì)參與到橫向任務(wù),如大促保障、跨域穩(wěn)定性專項(xiàng)等事情中來(lái),因此,優(yōu)秀的人際交往、協(xié)調(diào),拉通的能力,也是穩(wěn)定性同學(xué)需要擁有的,與其他團(tuán)隊(duì)緊密協(xié)作、積極配合,也會(huì)為自己和團(tuán)隊(duì)留下較好的口碑,以后推進(jìn)其他事情也可以事半功倍。

?

二、穩(wěn)定性體系建設(shè)

?

如何做好垂直域穩(wěn)定性

?

1、防線建設(shè)

?

1)架構(gòu)設(shè)計(jì)

?

穩(wěn)定性工作本身偏向于底層技術(shù),對(duì)于小、中公司而言,穩(wěn)定性同學(xué)的定義更偏向于“技術(shù)架構(gòu)師”的角色,所以底層技術(shù)架構(gòu)上的設(shè)計(jì)是穩(wěn)定性防線建設(shè)的一部分,簡(jiǎn)單舉幾個(gè)例子:

?

① 容量評(píng)估

?

什么情況下需要進(jìn)行容量評(píng)估?我理解有以下兩種場(chǎng)景:

?

  • 新發(fā)應(yīng)用

?

應(yīng)用建立之初,需要根據(jù)預(yù)估上游的流量,計(jì)算容器、中間件的吞吐率,在計(jì)算結(jié)果的基礎(chǔ)上加上一些兜底的機(jī)器后,給出應(yīng)用所需的容量。

?

  • 業(yè)務(wù)變化較大

?

當(dāng)上游或者應(yīng)用內(nèi)部有較大的流量或性能變化時(shí),要調(diào)整之前的容量,如大促期上線下線,或業(yè)務(wù)鏈路有重大迭代變更時(shí)。

?

容量評(píng)估是架構(gòu)設(shè)計(jì)中比較重要的一環(huán),容量太多會(huì)浪費(fèi)成本,容量太少則會(huì)對(duì)線上可用性產(chǎn)生影響。

?

② 部署架構(gòu) & 容災(zāi)

?

在分布式系統(tǒng)大行其道的今天,容災(zāi)的場(chǎng)景基本在集團(tuán)每個(gè)應(yīng)用中都可以見(jiàn)到,比如集團(tuán)的多單元部署,現(xiàn)在比較常見(jiàn)的架構(gòu)主要是由中心A地(中心 + 混部集群)和單元B地(單元 + 混部集群)兩個(gè)比較大的單元構(gòu)成的,也就是所謂的“兩地”,流量從入口端進(jìn)行轉(zhuǎn)發(fā)。

?

容災(zāi)的重要性不言而喻,如果單純?cè)谝坏刈黾夯?,若遇到天?zāi)人禍等不可避免的物理?yè)p失,將會(huì)導(dǎo)致服務(wù)不可用,事實(shí)上也經(jīng)常出現(xiàn)某單元由于網(wǎng)絡(luò)運(yùn)營(yíng)商的問(wèn)題導(dǎo)致服務(wù)掛掉的情況,這個(gè)時(shí)候就可以通過(guò)從入口處切換跨地調(diào)用來(lái)解決。

?

雖然多地部署的理論比較簡(jiǎn)單,但是部署架構(gòu)的一個(gè)重點(diǎn)在于將流量按照不同的作用去劃分分組,如上圖中的讀、寫(xiě)流量分組是分離的,且讀、寫(xiě)按照不同的上游業(yè)務(wù)也有單獨(dú)拆分分組,這樣就可以保證不會(huì)因?yàn)樯嫌文骋粋€(gè)大業(yè)務(wù)出問(wèn)題導(dǎo)致整個(gè)集群不可用的場(chǎng)景出現(xiàn)。

?

當(dāng)然,每個(gè)應(yīng)用所面臨的場(chǎng)景是不同的,那么如何部署、如何容災(zāi),也是這個(gè)垂直域穩(wěn)定性同學(xué)需要考慮的問(wèn)題。

?

③ 數(shù)據(jù)一致性保證

?

當(dāng)今的分布式系統(tǒng),設(shè)計(jì)時(shí)絕大多數(shù)都會(huì)碰到異步鏈路,不管是業(yè)務(wù)上需要異步的去處理數(shù)據(jù),還是中間件的數(shù)據(jù)同步機(jī)制,如果涉及到異步那就有可能會(huì)出現(xiàn)數(shù)據(jù)一致性問(wèn)題,這與高可用問(wèn)題分別是兩個(gè)方向,但是他們兩個(gè)本質(zhì)上一樣重要,甚至數(shù)據(jù)一致性出現(xiàn)問(wèn)題產(chǎn)生的影響、恢復(fù)的難度要遠(yuǎn)大于高可用問(wèn)題。

?

所以,在系統(tǒng)架構(gòu)設(shè)計(jì)之初,就要做好數(shù)據(jù)一致性的保障措施,完善對(duì)賬機(jī)制,并通過(guò)建立的防線發(fā)現(xiàn)存量和增量的問(wèn)題。每個(gè)域面臨的數(shù)據(jù)一致性問(wèn)題場(chǎng)景不同,對(duì)于偏數(shù)據(jù)存儲(chǔ)的部門(mén),往往無(wú)法完全厘清模型與模型、數(shù)據(jù)與業(yè)務(wù)之間的關(guān)系,因此防線總會(huì)有疏漏,而一旦數(shù)據(jù)出現(xiàn)問(wèn)題,往往是最難解決的:

?

  • 歷史數(shù)據(jù)提取困難,如果沒(méi)有數(shù)據(jù)留痕平臺(tái),只能通過(guò)數(shù)據(jù)離線表拉取,會(huì)導(dǎo)致數(shù)據(jù)可能有一定誤差,如果故障時(shí)間線拉的很長(zhǎng),數(shù)據(jù)的提取會(huì)更加困難。

?

  • 復(fù)雜的業(yè)務(wù)邏輯,往往讓人不知道該如何回滾數(shù)據(jù),一旦回滾邏輯出現(xiàn)錯(cuò)誤將直接導(dǎo)致二次故障。

?

整個(gè)數(shù)據(jù)一致性問(wèn)題是一個(gè)非常大的專題,這里只是讓大家稍微有一些體感,想要聊透這個(gè)問(wèn)題需要很長(zhǎng)的篇幅,在這里先放一張之前總結(jié)的資損防控方法圖,供大家參考:

?

如何做好垂直域穩(wěn)定性

?

2)監(jiān)控體系

?

我認(rèn)為監(jiān)控體系的建立是穩(wěn)定性防線體系建設(shè)中最重要,也是難度最大的一環(huán),線上的系統(tǒng)每天都處于不斷的變化中,這種變化既來(lái)自自身的應(yīng)用迭代,也來(lái)自上游業(yè)務(wù)的不斷調(diào)整,隨著時(shí)間的發(fā)展,業(yè)務(wù)的復(fù)雜度會(huì)變的越來(lái)越高,這時(shí)候就需要一個(gè)非常完善的監(jiān)控機(jī)制,能幫我們快速預(yù)防和發(fā)現(xiàn)線上問(wèn)題,如果沒(méi)有一個(gè)好的監(jiān)控體系,那么維護(hù)系統(tǒng)穩(wěn)定性根本無(wú)從談起。

?

如何做好垂直域穩(wěn)定性

?

雖然說(shuō)起來(lái)簡(jiǎn)單,但是要實(shí)際建立一個(gè)完善的監(jiān)控體系卻是一個(gè)非常之難的事情,即使現(xiàn)有的監(jiān)控體系非常完善,但是隨著時(shí)間的不斷推移,現(xiàn)有的監(jiān)控必然會(huì)隨之腐化,重新完善整套監(jiān)控體系需要投入很大的人力成本(比如人員流動(dòng)后,原有監(jiān)控的運(yùn)行體系沒(méi)有交接,可能需要重新編寫(xiě)等)。

?

如何去建立以及維護(hù)一套完整的監(jiān)控體系,其中的方法比較細(xì)節(jié),在此列舉幾個(gè)我認(rèn)為比較關(guān)鍵的內(nèi)容:

?

① 監(jiān)控覆蓋面

?

覆蓋面是評(píng)判體系是否足夠優(yōu)秀的第一個(gè)標(biāo)準(zhǔn),對(duì)于業(yè)務(wù)特別復(fù)雜的接口,覆蓋面越大,發(fā)現(xiàn)問(wèn)題的概率就越高,但是對(duì)于歷史包袱較重或業(yè)務(wù)比較復(fù)雜的系統(tǒng),覆蓋面做到百分百是不可能的,這里我從增量和存量?jī)蓚€(gè)角度討論一下如何提高監(jiān)控覆蓋面:

?

  • 存量

?

梳理業(yè)務(wù)模型,盤(pán)點(diǎn)所有鏈路,優(yōu)先從重要鏈路,例如從能影響線上流程或?qū)е沦Y損的鏈路開(kāi)始,存量的監(jiān)控盤(pán)點(diǎn)是一個(gè)持續(xù)不斷的過(guò)程,隨著時(shí)間的推移,我們的努力會(huì)使監(jiān)控鏈路不斷完善。

?

  • 增量

?

相較于存量,增量則更好處理一些,新業(yè)務(wù)上線時(shí)是否需要監(jiān)控,可以通過(guò)CR或群體評(píng)審來(lái)決定。

?

其中,可能有的存量問(wèn)題鏈路較難發(fā)現(xiàn),或短時(shí)間內(nèi)影響面較小,導(dǎo)致無(wú)人關(guān)注,或者一直梳理不出來(lái),等到某一天問(wèn)題積壓爆發(fā),這個(gè)問(wèn)題在重存儲(chǔ)的系統(tǒng)中非常明顯,我們正在討論一種解決方案:數(shù)據(jù)聚合分析,即從數(shù)據(jù)共性角度,判斷出非法數(shù)據(jù),進(jìn)而判斷出非法鏈路。

?

② 降噪 & 健康度

?

降噪是在監(jiān)控中最讓人頭疼的一環(huán),估計(jì)很多同學(xué)都有過(guò)體會(huì),大多數(shù)情況下,線上告警出的問(wèn)題并不會(huì)影響線上穩(wěn)定性,這種告警一旦過(guò)多,容易讓人逐漸放松警惕,當(dāng)真正出現(xiàn)重大故障時(shí)往往不能第一時(shí)間發(fā)現(xiàn)。告警的有效性,就是我們常說(shuō)的“監(jiān)控健康度”。

?

很多成熟的監(jiān)控產(chǎn)品,會(huì)將監(jiān)控健康度作為一個(gè)重要的指標(biāo),當(dāng)監(jiān)控的告警有效性很低時(shí),會(huì)停用監(jiān)控先進(jìn)行維護(hù),關(guān)于如何進(jìn)行監(jiān)控降噪提高健康度,我個(gè)人經(jīng)驗(yàn)有如下幾點(diǎn):

?

  • 提高維護(hù)效率

?

一個(gè)復(fù)雜的系統(tǒng)往往有很多的監(jiān)控,每種監(jiān)控可能都處理不同的業(yè)務(wù),如果全部依賴穩(wěn)定性同學(xué)進(jìn)行處理,顯然是不可行的,應(yīng)當(dāng)將監(jiān)控按不同的業(yè)務(wù)維度分發(fā)給團(tuán)隊(duì)內(nèi)的同學(xué),避免出現(xiàn)一個(gè)人處理一大批監(jiān)控,最終處理不過(guò)來(lái)導(dǎo)致告警積壓,告警效率降低。

?

  • 及時(shí)降噪

?

明確分工之后,一旦監(jiān)控發(fā)現(xiàn)告警,對(duì)應(yīng)的負(fù)責(zé)人要及時(shí)處理,一般來(lái)說(shuō),需要人為check的監(jiān)控告警積壓數(shù)量不能超過(guò)20條,一旦超過(guò)就會(huì)極大的降低維護(hù)人員的工作效率,這種情況下要及時(shí)溝通,聯(lián)系團(tuán)隊(duì)內(nèi)其他同學(xué)安排時(shí)間協(xié)助排查;當(dāng)發(fā)現(xiàn)需要降噪的數(shù)據(jù)時(shí),要及時(shí)更新過(guò)濾規(guī)則,保證監(jiān)控正常迭代。

?

③ 定時(shí)統(tǒng)計(jì) & 復(fù)盤(pán)

?

團(tuán)隊(duì)內(nèi)部要針對(duì)現(xiàn)有的監(jiān)控進(jìn)行定期盤(pán)點(diǎn),健康度過(guò)低的監(jiān)控要及時(shí)分析原因,并判斷是否可以繼續(xù)啟用,不合理的監(jiān)控關(guān)掉,避免混淆視聽(tīng)和增加監(jiān)控成本。

?

3)流程規(guī)范

?

在日常中,相信大家不難發(fā)現(xiàn),一些大故障,往往都有幾個(gè)共性:

?

  • 一把梭

?

絕大多數(shù)大故障的特性,這種問(wèn)題常發(fā)生于配置推送類的操作,比如很多同學(xué)為了圖快,直接通過(guò)預(yù)案直接推送配置,或代碼中有推送配置等,也有在變更發(fā)布中,沒(méi)有認(rèn)真評(píng)估好變更的風(fēng)險(xiǎn),灰度批次較少導(dǎo)致大故障,換句話說(shuō),灰度的批次和時(shí)間越長(zhǎng),導(dǎo)致大故障的概率就越低。

?

  • 疏忽大意

?

發(fā)布時(shí)沒(méi)有關(guān)注系統(tǒng)核心指標(biāo),雖然說(shuō)灰度可以避免絕大多數(shù)的重大故障,但有些重大問(wèn)題如果在灰度沒(méi)有及時(shí)發(fā)現(xiàn),等接近全部完成時(shí)爆發(fā)出來(lái)的話,本質(zhì)上和“一把梭”沒(méi)有任何的區(qū)別,這種情況常見(jiàn)于很多小流量應(yīng)用中,即使一批機(jī)器也能扛起全部的流量,如果前面幾批都掛掉了,除非看大盤(pán),否則不會(huì)有任何的感知,但是最后一批發(fā)完之后,就直接報(bào)大故障了。

?

因此,嚴(yán)格的流程規(guī)范,會(huì)幫助我們及時(shí)發(fā)現(xiàn)和避免很多本不應(yīng)該有的故障,當(dāng)前阿里集團(tuán)的安全生產(chǎn)團(tuán)隊(duì)已經(jīng)將常見(jiàn)的幾乎所有變更流程都進(jìn)行了管控,內(nèi)部如Aone、ChangeFree等平臺(tái)已經(jīng)進(jìn)行了嚴(yán)格的平臺(tái)化的規(guī)范,只要遵循線上正常的發(fā)布流程并加以防范,基本上不會(huì)出現(xiàn)特別大的故障,簡(jiǎn)單說(shuō)一下我認(rèn)為比較關(guān)鍵的幾個(gè)流程:

?

  • Code Review

?

CR想必大家都做過(guò),但是不應(yīng)該只局限于“Code”,任何會(huì)在線上產(chǎn)生變化的變更,都應(yīng)該有人Review,但是這一步過(guò)度依賴人為,雖然有一些代碼靜態(tài)分析的工具,但是由于業(yè)務(wù)場(chǎng)景的復(fù)雜性,這一步雖然不能完全做到100%的準(zhǔn)確,但是仍可能發(fā)現(xiàn)一些風(fēng)險(xiǎn)和規(guī)避一些低端的問(wèn)題,同時(shí),有經(jīng)驗(yàn)的同學(xué)可以從底層代碼優(yōu)化和建模的角度,降低應(yīng)用的熵增速度。

?

  • 測(cè)試回歸

?

靠人工的check無(wú)法達(dá)到太高的準(zhǔn)確度,那么就需要靠平時(shí)測(cè)試同學(xué)積累起來(lái)的測(cè)試用例進(jìn)行回歸,測(cè)試用例需要平時(shí)不斷的維護(hù)、根據(jù)業(yè)務(wù)變化不停的迭代,才能保證回歸的準(zhǔn)確性;同時(shí),測(cè)試回歸也是與測(cè)試同學(xué)進(jìn)行對(duì)焦,從不同的視角上去發(fā)現(xiàn)問(wèn)題,這也是集團(tuán)要求發(fā)布變更前必須經(jīng)歷的一個(gè)階段。

?

  • 嚴(yán)格審批

?

審批本身也是起到一個(gè)“知會(huì)”的作用,例如在大促期,緊急變更需要審批到大隊(duì)長(zhǎng),也就是這個(gè)意思,老板和橫向PM具有更廣闊的視角,需要讓他們判斷變更的風(fēng)險(xiǎn)性以及當(dāng)前是否有必要進(jìn)行變更。

?

  • 卡點(diǎn) & 灰度

?

上述的每個(gè)階段,都必須通過(guò)產(chǎn)品化進(jìn)行卡點(diǎn),如果不通過(guò)則不能發(fā)布。

?

如何做好垂直域穩(wěn)定性

?

每個(gè)應(yīng)用根據(jù)自己不同的情況都會(huì)有不同的卡點(diǎn),不同的應(yīng)用可能有自己的卡點(diǎn)平臺(tái),這些也可以通過(guò)對(duì)接Aone集成進(jìn)去;至于灰度發(fā)布,大家都很熟悉了,這里就不展開(kāi)討論了。

?

4)混沌工程

?

建立完自認(rèn)為完美的防線之后,肯定需要校驗(yàn)可用率,但是總不能通過(guò)等著線上出問(wèn)題來(lái)檢驗(yàn)防線是否生效,這樣成本就太高了,此時(shí)就需要引入混沌工程,相信大家應(yīng)該都很了解混沌工程了,那么就在這里貼一下相關(guān)的定義:

?

混沌工程,是一種提高技術(shù)架構(gòu)彈性能力的復(fù)雜技術(shù)手段。Chaos工程經(jīng)過(guò)實(shí)驗(yàn)可以確保系統(tǒng)的可用性。混沌工程旨在將故障扼殺在襁褓之中,也就是在故障造成中斷之前將它們識(shí)別出來(lái)。通過(guò)主動(dòng)制造故障,測(cè)試系統(tǒng)在各種壓力下的行為,識(shí)別并修復(fù)故障問(wèn)題,避免造成嚴(yán)重后果。

?

混沌工程在阿里集團(tuán)內(nèi)部的體現(xiàn)為故障演練,基本不需要部門(mén)內(nèi)部自行操作,比較出名的有每年集團(tuán)都會(huì)舉辦的紅藍(lán)演練,以及日常經(jīng)常發(fā)生的生產(chǎn)突襲、斷網(wǎng)演練等。

?

故障注入的平臺(tái),演練時(shí)一般使用集團(tuán)內(nèi)部比較出名的MonkeyKing,具體的使用方法這里不表,市面上有很多開(kāi)源的混沌工程平臺(tái),原理都是類似的。

?

① 問(wèn)題分類

?

針對(duì)不同種類的問(wèn)題,有不同的注入和恢復(fù)機(jī)制 ,不詳細(xì)展開(kāi)了,上一張分類比較好的大圖:

?

如何做好垂直域穩(wěn)定性

?

② 演練機(jī)制

?

整個(gè)故障演練機(jī)制分為四個(gè)部分,基本上也是所有混沌工程的思路:

?

  • 準(zhǔn)備

?

可以在這一階段做一些故障演練前的準(zhǔn)備工作,保障我們的系統(tǒng)以及監(jiān)控在故障演練之前是處于一個(gè)穩(wěn)定的狀態(tài),比如說(shuō)在執(zhí)行演練前自動(dòng)檢查一下機(jī)器的狀態(tài),應(yīng)用的狀態(tài),甚至說(shuō)故障演練的agent是否已經(jīng)部署到了對(duì)應(yīng)的機(jī)器上等等。

?

  • 執(zhí)行

?

在執(zhí)行階段可以選擇你需要的故障場(chǎng)景,mk2里面支持像不同的應(yīng)用注入故障,也支持同時(shí)像一個(gè)目標(biāo)機(jī)器下發(fā)多個(gè)故障,故障的場(chǎng)景也不局限于mk平臺(tái)提供的故障能力,用戶自己開(kāi)發(fā)的故障能力也可以集成進(jìn)來(lái)。

?

  • 驗(yàn)證

?

檢查階段就是進(jìn)行故障執(zhí)行后的一些狀態(tài)檢查,檢查的范圍包括了系統(tǒng)本身的一些指標(biāo),比如我是CPU滿載,那么CPU是否真的滿載了。

?

  • 恢復(fù)

?

我們希望每個(gè)故障場(chǎng)景都是可以有相應(yīng)的恢復(fù)手段的,如果故障注入后,開(kāi)發(fā)人員沒(méi)有辦法在一定時(shí)間內(nèi)處理故障,那么平臺(tái)本身一定要保障故障是可以恢復(fù)的。

?

2、快恢機(jī)制

?

即使防線建設(shè)做的再好,但是人難免會(huì)有疏漏,不存在能百分之百攔截故障的防線,如果故障已經(jīng)發(fā)生,那么當(dāng)前的重點(diǎn)就應(yīng)該是快速止損并恢復(fù)。

?

從發(fā)現(xiàn)、處理到復(fù)盤(pán),阿里集團(tuán)有一套完整的SOP,整個(gè)處理流程非常的規(guī)范,同時(shí),阿里集團(tuán)對(duì)于高可用故障恢復(fù)的時(shí)間要求非常高,一般來(lái)說(shuō)是1-5-10,即一分鐘發(fā)現(xiàn),五分鐘止血,十分鐘恢復(fù),不過(guò)肯定不是所有的故障都能嚴(yán)格達(dá)到這個(gè)高標(biāo)準(zhǔn),但是處理速度當(dāng)然是越快越好,避免故障升級(jí)。

?

那么下面就從定位、止血、恢復(fù)這三個(gè)階段來(lái)講述一下快恢中具體要做的事情:

?

1)快速定位

?

很多同學(xué)第一次面對(duì)問(wèn)題或者故障時(shí),往往頭腦空白不知從何查起,如果碰到大故障時(shí),很多主管在后面圍觀,心情則會(huì)更加緊張,進(jìn)一步拖慢了查問(wèn)題的時(shí)間,那么如何對(duì)線上的故障和問(wèn)題進(jìn)行快速定位呢?

?

首先,在定位問(wèn)題之前,要快速的確認(rèn)是不是屬于本域的問(wèn)題,很多時(shí)候問(wèn)題的表象看似出自于自己的應(yīng)用,但實(shí)則可能是上下游、中間件或者硬件問(wèn)題引起的,如果方向錯(cuò)誤,可能會(huì)拖延故障的處理時(shí)間,放大線上影響和故障等級(jí),那么如何快速定位,我認(rèn)為可以從變更的角度去入手思考:

?

本域是否發(fā)生過(guò)變更?這個(gè)是最核心的判斷因素之一。

?

如果沒(méi)有,那很大可能跟本域的關(guān)系不大,請(qǐng)注意,這個(gè)變更不僅僅是通常理解上的代碼發(fā)布、配置推送、數(shù)據(jù)操作等,而是所有可能會(huì)對(duì)線上的運(yùn)行環(huán)境產(chǎn)生影響的操作,如代碼中的配置推送,上下線或置換容器等;當(dāng)然,并不是說(shuō)沒(méi)有變更就完全沒(méi)關(guān)系,有些情況也有例外,舉幾個(gè)常見(jiàn)的例子:

?

  • 屬于定時(shí)任務(wù)、延時(shí)執(zhí)行等變更后一段時(shí)間才運(yùn)行的鏈路。

?

  • 由于流量評(píng)估不準(zhǔn),平時(shí)流量較少,但某一時(shí)間段峰值流量突然劇增的鏈路。

?

  • 上線前測(cè)試不足或上線后流量較少,業(yè)務(wù)覆蓋面不全的鏈路,可能由于突然的冷門(mén)流量導(dǎo)致報(bào)錯(cuò)。

?

本質(zhì)上來(lái)說(shuō),這些情況產(chǎn)生的錯(cuò)誤還是由于“變更”引起的,只不過(guò)是變更生效的時(shí)間被延后了。

?

如果發(fā)現(xiàn)存在變更,那么要結(jié)合大盤(pán),判斷故障的時(shí)間線是否與變更的時(shí)間線吻合或相差不大,如果是的話那么就八九不離十了。

?

在定位到產(chǎn)生問(wèn)題的域后,如果不是自己的問(wèn)題,那么可以盡量協(xié)助排查,如果是域內(nèi)產(chǎn)生的問(wèn)題,那么就要著手開(kāi)始定位根因,這個(gè)時(shí)候就是考驗(yàn)穩(wěn)定性同學(xué)的基本功和經(jīng)驗(yàn)了,同時(shí)也要結(jié)合集團(tuán)給出的一些比較好的產(chǎn)品化工具,例如:

?

① 監(jiān)控大盤(pán)

?

常見(jiàn)的監(jiān)控系統(tǒng)有很多,一些開(kāi)源的監(jiān)控大盤(pán)讓我們面對(duì)大多數(shù)問(wèn)題時(shí)基本不需要去機(jī)器上命令行排查了,對(duì)于不同的場(chǎng)景,用對(duì)了監(jiān)控可以事半功倍。

?

阿里內(nèi)部有各種各樣的大盤(pán),可以讓集團(tuán)的同學(xué)在處理問(wèn)題時(shí)的速度更快,同樣部分開(kāi)源的大盤(pán)也非常強(qiáng)大,至于如何做產(chǎn)品選型,大家可以自行評(píng)估,思路大概就是如下幾種大盤(pán):

?

  • 硬件 & 中間件指標(biāo)大盤(pán)

?

從容器硬件水位、中間件(RPC、緩存、DB...)水位等偏重于技術(shù)指標(biāo)的大盤(pán)中,通過(guò)時(shí)間線定位出問(wèn)題的大致方向和時(shí)間線。

?

  • 鏈路追蹤大盤(pán)

?

以傳輸協(xié)議、接口作為維度,找出相關(guān)的鏈路和trace,具體問(wèn)題具體排查。

?

  • 流量調(diào)度系統(tǒng)

?

偏重于單機(jī)大盤(pán)的系統(tǒng),可以從秒級(jí)維度查出單臺(tái)容器的性能指標(biāo),并可以實(shí)現(xiàn)流量調(diào)度,將有問(wèn)題的容器流量摘除。

?

② 分布式日志系統(tǒng)

?

對(duì)于一些代碼層面或業(yè)務(wù)層面的報(bào)錯(cuò),單純通過(guò)大盤(pán)進(jìn)行深度定位是不現(xiàn)實(shí)的,究其根因還是要到底層去查日志報(bào)錯(cuò)堆棧,這個(gè)時(shí)候就需要用到分布式日志系統(tǒng)了,通過(guò)分布式日志系統(tǒng)采集的信息,可以配置相應(yīng)的大盤(pán),或直接搜索錯(cuò)誤堆棧,進(jìn)行細(xì)節(jié)上的排查。

?

2)快速止血 & 恢復(fù)

?

之前將問(wèn)題劃分為高可用以及數(shù)據(jù)問(wèn)題,那么也按照這個(gè)分類來(lái)講一下對(duì)應(yīng)的止血 & 恢復(fù)策略:

?

① 高可用問(wèn)題

?

止血與恢復(fù)在高可用問(wèn)題上,大多數(shù)情況是相關(guān)聯(lián)的,止血即恢復(fù),如:

?

  • 某系統(tǒng)變更導(dǎo)致應(yīng)用夯死,回滾重啟的同時(shí),系統(tǒng)恢復(fù)正常,達(dá)到了止血和恢復(fù)效果。

?

  • 推送某開(kāi)關(guān),導(dǎo)致業(yè)務(wù)鏈路阻塞,回滾開(kāi)關(guān)后,鏈路恢復(fù)正常。

?

  • 由于網(wǎng)絡(luò)服務(wù)商原因,導(dǎo)致某地域的機(jī)房網(wǎng)絡(luò)重傳率過(guò)高,通過(guò)切流其他單元達(dá)到了恢復(fù)止血。

?

同時(shí),相信大家都接觸過(guò)高可用問(wèn)題,對(duì)于這類問(wèn)題的快恢也有一定的了解,限于篇幅原因這里就不再一一描述不同高可用問(wèn)題的恢復(fù)策略了,直接在這里引用和拓展一下之前總結(jié)過(guò)的高可用問(wèn)題快恢六招:

?

  • 切流:遇到天災(zāi)人禍等不可避免的地域性故障,應(yīng)對(duì)單元維度,機(jī)房維度,機(jī)器維度切流;業(yè)務(wù)層面上要提前布防,通過(guò)集團(tuán)提供的diamond、switch等配置中心進(jìn)行代碼熔斷。

?

  • 擴(kuò)容:流量暴增時(shí)對(duì)集群進(jìn)行擴(kuò)容,適用于流量超出預(yù)期的場(chǎng)景。

?

  • 限流:接口限流可以從入口層面保護(hù)絕大部分流量,熱點(diǎn)限流可以保障流程中涉及的中間件或者下游不被打掛。

?

  • 回滾:較為直接的止血方式,回滾前需先機(jī)房隔離或切容災(zāi),防止回滾時(shí)間較長(zhǎng)升級(jí)故障。

?

  • 降級(jí):若是鏈路弱依賴,先降級(jí)再排查。

?

  • 重啟:應(yīng)對(duì)內(nèi)存溢出,fullgc連接數(shù)滿等。

?

② 數(shù)據(jù)問(wèn)題

?

數(shù)據(jù)問(wèn)題與高可用問(wèn)題有非常大的差異,高可用問(wèn)題恢復(fù)起來(lái)較為簡(jiǎn)單,通常有比較明確的策略,但數(shù)據(jù)問(wèn)題則不同,我將其分為兩類:

?

  • 數(shù)據(jù)計(jì)算錯(cuò)誤:由于線上邏輯問(wèn)題導(dǎo)致數(shù)據(jù)計(jì)算錯(cuò)誤,進(jìn)而阻斷鏈路或產(chǎn)生臟數(shù)據(jù)。

?

  • 數(shù)據(jù)存儲(chǔ)錯(cuò)誤:持久化與非持久化的數(shù)據(jù)存儲(chǔ)內(nèi)容與期望值出現(xiàn)偏離,如商品價(jià)格落庫(kù)錯(cuò)誤、緩存數(shù)據(jù)錯(cuò)誤等,導(dǎo)致鏈路上讀到的都是臟數(shù)據(jù),產(chǎn)生數(shù)據(jù)不一致或資損問(wèn)題。

?

其中,數(shù)據(jù)計(jì)算錯(cuò)誤的恢復(fù)策略較為簡(jiǎn)單,可以直接通過(guò)熔斷、切流等機(jī)制關(guān)閉增量問(wèn)題來(lái)源來(lái)進(jìn)行恢復(fù)止血,數(shù)據(jù)問(wèn)題真正的難點(diǎn)在于存儲(chǔ)錯(cuò)誤,非持久化的數(shù)據(jù)存儲(chǔ),如緩存,可以通過(guò)熔斷增量問(wèn)題入口,清除存量數(shù)據(jù)來(lái)解決,但是一旦持久化的數(shù)據(jù)臟掉且量級(jí)非常大的話,從數(shù)據(jù)的提取到數(shù)據(jù)的回滾都非常的困難:

?

  • 數(shù)據(jù)提取

?

  1. 量級(jí)大:在很多情況下,回滾數(shù)據(jù)需要提取非常大量的數(shù)據(jù),提取速度很慢。

    ?

  2. 復(fù)雜程度高:模型比較復(fù)雜的系統(tǒng),提取數(shù)據(jù)時(shí)需要非常復(fù)雜的過(guò)濾規(guī)則,且經(jīng)常出現(xiàn)提取到一半時(shí)發(fā)現(xiàn)過(guò)濾規(guī)則有問(wèn)題的情況,這時(shí)候之前提取的數(shù)據(jù)就無(wú)用了,進(jìn)一步加長(zhǎng)恢復(fù)的時(shí)間。

    ?

  3. 數(shù)據(jù)實(shí)時(shí)性:如果沒(méi)有數(shù)據(jù)留痕系統(tǒng),那么提取數(shù)據(jù)最常見(jiàn)的方式就是從ODPS中撈取,即天表或小時(shí)表,但是這兩種表都會(huì)有數(shù)據(jù)延遲,即從產(chǎn)出數(shù)據(jù)表的時(shí)刻起,到當(dāng)前的時(shí)刻為止,如果數(shù)據(jù)發(fā)生過(guò)變化,那么離線表中是無(wú)法獲取到的,也就是從離線表中拿到的是臟數(shù)據(jù),會(huì)導(dǎo)致一批數(shù)據(jù)回滾不準(zhǔn),產(chǎn)生二次故障。

?

  • 數(shù)據(jù)回滾

?

  1. 風(fēng)險(xiǎn)高:提取出的數(shù)據(jù)如果不準(zhǔn),回滾將直接出現(xiàn)二次故障,進(jìn)一步加大數(shù)據(jù)回滾的難度。

  2. 性能問(wèn)題:當(dāng)回滾的數(shù)據(jù)量過(guò)大,需要一個(gè)產(chǎn)品化程度比較高的數(shù)據(jù)訂正平臺(tái)做控速、灰度控制、失敗重試以及進(jìn)度管控,否則訂正速度一旦過(guò)快,可能直接擊穿鏈路節(jié)點(diǎn)。

?

因此,數(shù)據(jù)存儲(chǔ)問(wèn)題或我們常見(jiàn)的資損問(wèn)題,往往主要關(guān)注的不是恢復(fù)時(shí)間,而是主動(dòng)發(fā)現(xiàn)率、止血時(shí)間、資損金額等,因?yàn)橐焖倩謴?fù)量級(jí)很大的數(shù)據(jù)存儲(chǔ)問(wèn)題是不現(xiàn)實(shí)的,往往都是依賴人為提取數(shù)據(jù)以及手動(dòng)恢復(fù),事實(shí)上針對(duì)數(shù)據(jù)存儲(chǔ)問(wèn)題,也沒(méi)有系統(tǒng)能做到通用化的數(shù)據(jù)回滾策略,因?yàn)槊總€(gè)業(yè)務(wù)、每個(gè)系統(tǒng)的提取數(shù)據(jù),回滾數(shù)據(jù)的邏輯基本都是不同的,如果依賴平臺(tái)通用邏輯回滾,那么二次故障的概率會(huì)非常高,所以說(shuō),對(duì)于數(shù)據(jù)存儲(chǔ)問(wèn)題,要做到第一時(shí)間通過(guò)熔斷、切流等機(jī)制止血后,在優(yōu)先保證數(shù)據(jù)絕對(duì)正確的情況下,再進(jìn)行回滾恢復(fù),不能盲目的追求恢復(fù)時(shí)間。

?

3、反哺

?

1)復(fù)盤(pán) & Action 跟進(jìn)

?

每一次故障都是血的教訓(xùn),但是以我的視角來(lái)看,發(fā)生故障并不完全是一件壞事,因?yàn)閼?yīng)用系統(tǒng)是人造就的,是人就一定會(huì)犯錯(cuò),所以系統(tǒng)也不可能保證百分之百的強(qiáng)壯,有問(wèn)題則證明系統(tǒng)、流程還有不足,才能推動(dòng)我們不斷的向前進(jìn)步,這也是我們每一次故障之后要進(jìn)行復(fù)盤(pán)的原因,犯了錯(cuò)并不怕,重要的是如何改正。

?

集團(tuán)對(duì)于故障的復(fù)盤(pán)有一套嚴(yán)格的執(zhí)行流程,大概如下圖所示:

?

如何做好垂直域穩(wěn)定性

?

具體詳細(xì)的復(fù)盤(pán)流程不詳細(xì)展開(kāi),談?wù)勎艺J(rèn)為復(fù)盤(pán)這個(gè)節(jié)點(diǎn)比較重要的幾個(gè)問(wèn)題:

?

① 三省吾身

?

無(wú)論是自己,亦或是團(tuán)隊(duì)其他同學(xué)導(dǎo)致的故障,一定要問(wèn)自己幾個(gè)問(wèn)題:

?

  • 為什么:背景是什么,故障是怎么發(fā)生的?根因是什么?為什么當(dāng)時(shí)沒(méi)發(fā)現(xiàn)?

?

  • “我”:

?

  1. 就是我:這個(gè)故障是我導(dǎo)致的,我當(dāng)時(shí)怎么處理的這個(gè)問(wèn)題?恢復(fù)的快不快?還有沒(méi)有可以改進(jìn)的地方了?

  2. 如果是我:他這次產(chǎn)生的故障,如果放在我身上,我會(huì)不會(huì)跟他做一樣的事情?如果要我來(lái)恢復(fù),我應(yīng)該怎么做?

?

  • 下一步:這次的故障暴露了什么問(wèn)題?是代碼bug還是流程問(wèn)題導(dǎo)致的?我可以給團(tuán)隊(duì)提什么樣的建議來(lái)解決這個(gè)問(wèn)題?

?

  • 動(dòng)手去做:確定解法,我可不可以幫助團(tuán)隊(duì)同學(xué)去做完這件事情,會(huì)對(duì)我自己有多少成長(zhǎng)?

?

② Action 落實(shí)

?

很多時(shí)候,我們都只局限在“這一次”的故障中,而不會(huì)去思考“每一次”。在我看來(lái),Action真正的作用,不只是為了單純的解決這一次的問(wèn)題,而是要我們舉一反三,從根因上思考,系統(tǒng)中是否還存在與這次故障相同的問(wèn)題?我們要如何分類的去解決,這樣才能真正的將這一次故障的效應(yīng)和Action發(fā)揮最大的作用。

?

2)穩(wěn)定性分享

?

除了穩(wěn)定性的技術(shù)建設(shè),文化宣導(dǎo)也是基礎(chǔ)建設(shè)的一部分。

?

除了故障方面,穩(wěn)定性同學(xué)所做的底層優(yōu)化專項(xiàng)等偏向于技術(shù)層面的工作,也可以在團(tuán)隊(duì)內(nèi)部或跨部門(mén)做分享,建立工程師文化,培養(yǎng)技術(shù)興趣,以及擴(kuò)大部門(mén)和團(tuán)隊(duì)在集團(tuán)中的影響力,以我所在的商品團(tuán)隊(duì)舉例,每月都會(huì)舉行一次“工程師之夜”的分享會(huì),包含技術(shù)、業(yè)務(wù)模型等比較有代表性的工作成果,同時(shí)團(tuán)隊(duì)內(nèi)部?jī)?yōu)秀的同學(xué)也會(huì)經(jīng)??缬蛉プ黾夹g(shù)分享。

?

三、后記

?

穩(wěn)定性工作遠(yuǎn)比文章里的內(nèi)容要復(fù)雜的多,每一個(gè)單點(diǎn)拉出來(lái),都能形成一篇文章去介紹,限于篇幅問(wèn)題,無(wú)法將穩(wěn)定性所有的內(nèi)容表達(dá)出來(lái),這里將我過(guò)去幾個(gè)月的思考和大家分享,歡迎一起交流評(píng)論。最后,也向所有從事穩(wěn)定性工作的同學(xué)致敬,希望各位都能在其中獲得自己想要的成長(zhǎng)和收獲。

?

>>>>

參考資料

?

  • 面向失敗的設(shè)計(jì)-故障與攻防演練錘煉容災(zāi)應(yīng)急能力

    https://developer.aliyun.com/article/726337

  • 知乎:什么是混沌工程?Answer:亞馬遜云科技

    https://www.zhihu.com/question/308294657

  • 天啟回歸提效與精準(zhǔn)測(cè)試

    https://developer.aliyun.com/topic/n-cases?id=115120

?

作者丨清寰

到了這里,關(guān)于如何做好垂直域穩(wěn)定性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 企業(yè)如何通過(guò)熔斷降級(jí)增強(qiáng)服務(wù)穩(wěn)定性和系統(tǒng)可用性?

    企業(yè)如何通過(guò)熔斷降級(jí)增強(qiáng)服務(wù)穩(wěn)定性和系統(tǒng)可用性?

    API 的調(diào)用穩(wěn)定性被視為數(shù)據(jù)服務(wù)的最重要的指標(biāo)。該指標(biāo)的影響因素是多種多樣的,「袋鼠云數(shù)據(jù)服務(wù)平臺(tái) DataAPI」不僅多次對(duì)于調(diào)用性能和穩(wěn)定性進(jìn)行壓測(cè)和調(diào)優(yōu),而且還提供了多種配置項(xiàng)優(yōu)化手段供客戶進(jìn)行自行調(diào)優(yōu)。但是當(dāng)遇到不可預(yù)期的大流量或其他突然情況時(shí)還是

    2024年02月05日
    瀏覽(32)
  • 如何基于ELK構(gòu)建實(shí)時(shí)告警系統(tǒng),保障你的系統(tǒng)穩(wěn)定性

    在現(xiàn)代的分布式系統(tǒng)中,日志數(shù)據(jù)是非常重要的。為了監(jiān)控和分析日志數(shù)據(jù),Elasticsearch 已經(jīng)成為了一個(gè)非常流行的選擇。Elasticsearch 不僅可以存儲(chǔ)大量的日志數(shù)據(jù),還可以實(shí)時(shí)地搜索和分析數(shù)據(jù)。但是,當(dāng)您的系統(tǒng)發(fā)生異常情況時(shí),如何及時(shí)獲得通知呢?這就需要一個(gè)實(shí)時(shí)的

    2024年02月12日
    瀏覽(22)
  • 第一次操盤(pán)大促,穩(wěn)定性保障如何做到萬(wàn)無(wú)一失?

    第一次操盤(pán)大促,穩(wěn)定性保障如何做到萬(wàn)無(wú)一失?

    ? 業(yè)界有很多大促活動(dòng),像618、雙11、雙12等等。每一次大促不只是給業(yè)務(wù)帶來(lái)了新高,對(duì)于技術(shù)同樣也有很重要的意義,縱觀一些優(yōu)秀的技術(shù)團(tuán)隊(duì),都是跟著業(yè)務(wù)一起成長(zhǎng)的。在高并發(fā)大流量的背景下,如何支撐好業(yè)務(wù)運(yùn)營(yíng),是一件很有挑戰(zhàn)性的事情, 它可以從多方面檢驗(yàn)

    2024年02月11日
    瀏覽(20)
  • 穩(wěn)定性和高可用如何保障?一手測(cè)評(píng)華為云網(wǎng)站高可用解決方案

    穩(wěn)定性和高可用如何保障?一手測(cè)評(píng)華為云網(wǎng)站高可用解決方案

    在如今科技高速發(fā)展的時(shí)代,幾乎每個(gè)企業(yè)都依賴互聯(lián)網(wǎng),離不開(kāi)互聯(lián)網(wǎng)。很多企業(yè)的業(yè)務(wù)也都依托于互聯(lián)網(wǎng),比如我們熟知的電商、股市,直播、甚至是用于乘坐地鐵、公交買(mǎi)票過(guò)閘的APP。如今可以說(shuō)是一個(gè)互聯(lián)網(wǎng)時(shí)代的完全體。 但你們是否想過(guò)一個(gè)問(wèn)題?如果在上班高峰

    2024年02月02日
    瀏覽(20)
  • 上一任留下的 Eureka,我該如何提升她的性能和穩(wěn)定性(含數(shù)據(jù)比對(duì))?

    上一任留下的 Eureka,我該如何提升她的性能和穩(wěn)定性(含數(shù)據(jù)比對(duì))?

    開(kāi)篇:一次小小的技術(shù)討論 Aliware 周末的時(shí)候,和一位在國(guó)內(nèi)某互聯(lián)網(wǎng)公司負(fù)責(zé)運(yùn)維的朋友聊天,由于工作相關(guān),剛好聊到了公司項(xiàng)目中微服務(wù)架構(gòu)這塊的一些問(wèn)題,他們公司的微服務(wù)架構(gòu)使用的是業(yè)界比較常用的 Spring Cloud Netflix 那一套作為底座,有專門(mén)的同學(xué)負(fù)責(zé)運(yùn)維一套

    2024年02月04日
    瀏覽(19)
  • 【穩(wěn)定性】穩(wěn)定性建設(shè)之彈性設(shè)計(jì)

    隨著業(yè)務(wù)的快速變化和技術(shù)的不斷發(fā)展,系統(tǒng)面臨著諸多挑戰(zhàn),例如流量峰值、依賴服務(wù)故障、硬件故障、網(wǎng)絡(luò)中斷、軟件缺陷等,這些因素都可能影響到系統(tǒng)的正常運(yùn)行。在這種背景下,彈性設(shè)計(jì)(Resilience Design)應(yīng)運(yùn)而生。彈性設(shè)計(jì)是一種系統(tǒng)的設(shè)計(jì)和構(gòu)建方法, 系統(tǒng)的

    2024年02月08日
    瀏覽(19)
  • 穩(wěn)定性建設(shè)框架

    穩(wěn)定性建設(shè)框架

    一、為什么要做穩(wěn)定性建設(shè) 1、從熵增定律引出穩(wěn)定性建設(shè)的必要性 物理學(xué)上,用“熵”來(lái)描述一個(gè)體系的混亂程度??枴じダ锏侣岢鲮卦龆?,他認(rèn)為在一個(gè)封閉的系統(tǒng)內(nèi),如果沒(méi)有外力的作用,一切物質(zhì)都會(huì)從有序狀態(tài)向無(wú)序狀態(tài)發(fā)展。 如果我們不希望系統(tǒng)變混亂,

    2024年02月08日
    瀏覽(22)
  • 3分鐘了解Android中穩(wěn)定性測(cè)試_手機(jī)穩(wěn)定性測(cè)試,大廠軟件測(cè)試高級(jí)多套面試專題整理集合

    3分鐘了解Android中穩(wěn)定性測(cè)試_手機(jī)穩(wěn)定性測(cè)試,大廠軟件測(cè)試高級(jí)多套面試專題整理集合

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過(guò)華為、字節(jié)跳動(dòng)等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長(zhǎng),但自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新軟件測(cè)試全套學(xué)習(xí)資料》

    2024年04月26日
    瀏覽(24)
  • 【穩(wěn)定性】秘密武器--功能開(kāi)關(guān)技術(shù)

    繼上篇【穩(wěn)定性:關(guān)于縮短MTTR的探索】后,看到一些線上問(wèn)題應(yīng)急預(yù)案采用的是回滾方案, 但是在大部分牽扯代碼場(chǎng)景下,開(kāi)關(guān)技術(shù)才是線上問(wèn)題快速止血的最佳方式 。比如履約平臺(tái)組的Promise作為下單黃金鏈路,如遇線上問(wèn)題的話, 采用通用的回滾方式需要5-10+分鐘(500+臺(tái)

    2024年02月08日
    瀏覽(25)
  • 6.3 收斂性與穩(wěn)定性

    6.3 收斂性與穩(wěn)定性

    數(shù)值計(jì)算方法的收斂性是指,當(dāng)取步長(zhǎng)趨近于零時(shí),數(shù)值解趨近于精確解的速度。一般來(lái)說(shuō),數(shù)值計(jì)算方法的收斂性是判斷其優(yōu)劣的重要指標(biāo)之一。 數(shù)值計(jì)算方法的收斂性可以通過(guò)數(shù)學(xué)分析來(lái)研究,一般需要對(duì)數(shù)值解和精確解之間的誤差進(jìn)行估計(jì),以得到其誤差的漸進(jìn)界,從

    2023年04月23日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包