前言
??對(duì)于大規(guī)模的核心系統(tǒng)來說,安全生產(chǎn)是基本要求唇礁。相比to c的消費(fèi)者業(yè)務(wù)來說,to b的穩(wěn)定性要求更高惨篱。to b的業(yè)務(wù)中穩(wěn)定性是業(yè)務(wù)盏筐。
??穩(wěn)定性、服務(wù)高可用方面在學(xué)校和很多公司來說砸讳,都缺乏很多經(jīng)驗(yàn)和培養(yǎng)琢融,大家都是從零開始摸索怎么做穩(wěn)定性建設(shè)。特啟了一系列文章來說明簿寂;
服務(wù)端穩(wěn)定性體系
??重點(diǎn)介紹服務(wù)端穩(wěn)定性需要考慮的關(guān)鍵要素和策略漾抬,重點(diǎn)介紹變更之外的穩(wěn)定性保障。
主要包括:
1常遂、事前:消除潛在風(fēng)險(xiǎn)纳令,確保系統(tǒng)穩(wěn)定運(yùn)行不出問題。上醫(yī)治未病烈钞,所以這一點(diǎn)要重點(diǎn)投入泊碑。
2、事中:監(jiān)控快速感知和響應(yīng)的體系毯欣,包括風(fēng)險(xiǎn)的感知馒过、控制,并且團(tuán)隊(duì)要訓(xùn)練有素才能最快速度消除風(fēng)險(xiǎn)酗钞。
3腹忽、事后:深度復(fù)盤和改進(jìn),這里不深入討論砚作;
變更過程中的風(fēng)險(xiǎn)更多來自變更前的設(shè)計(jì)窘奏、代碼質(zhì)量、review葫录、自動(dòng)化測(cè)試等着裹,而不是僅僅依靠灰度、監(jiān)控和回滾米同。
穩(wěn)定運(yùn)行
1骇扇、機(jī)器健康度:磁盤空間摔竿、網(wǎng)絡(luò)抖動(dòng)、流量不均引起單機(jī)風(fēng)險(xiǎn)等少孝。尤其是磁盤空間滿继低,對(duì)于成熟團(tuán)隊(duì)來說應(yīng)該是低級(jí)事故,不應(yīng)該出現(xiàn)稍走。應(yīng)該有完善的平臺(tái)袁翁、機(jī)制確保一定不會(huì)出現(xiàn)磁盤滿。
2婿脸、容量規(guī)劃:計(jì)劃中的大促等粱胜,需要提前規(guī)劃好容量。在規(guī)劃前需要準(zhǔn)確壓測(cè)摩的系統(tǒng)性能數(shù)據(jù)盖淡。
3年柠、自愈能力:這是一項(xiàng)高級(jí)但也非常必要的能力⊥食伲可以舉一個(gè)典型的發(fā)面案例:系統(tǒng)異常導(dǎo)致內(nèi)存中的任務(wù)隊(duì)列大量堆積冗恨,異常清除后還在持續(xù)消費(fèi)內(nèi)存中堆積的任務(wù),必須人工重啟來干預(yù)味赃。這種情況下掀抹,應(yīng)該設(shè)置合理的隊(duì)列最大長(zhǎng)度、丟棄過期的任務(wù)心俗、背壓等手段來實(shí)現(xiàn)自愈傲武,避免依賴人工干預(yù)導(dǎo)致故障恢復(fù)時(shí)間拉長(zhǎng)。
4城榛、極限壓測(cè):理想的壓測(cè)應(yīng)該是常態(tài)化進(jìn)行極限場(chǎng)景壓測(cè)揪利、每次變更前后進(jìn)行壓測(cè)、定期進(jìn)行線上流量回放壓測(cè)以及時(shí)發(fā)現(xiàn)流量特征變化對(duì)性能的影響狠持。實(shí)際中疟位,因?yàn)樽詣?dòng)化程度不夠高,不能完全做到喘垂,但是要持續(xù)往這個(gè)方向發(fā)展甜刻。
風(fēng)險(xiǎn)感知
1、監(jiān)控:監(jiān)控這部分需要單獨(dú)做系統(tǒng)性設(shè)計(jì)正勒,后面單獨(dú)分享得院。原因是平時(shí)還是經(jīng)常看到核心系統(tǒng)都有監(jiān)控章贞,但是監(jiān)控的覆蓋面祥绞、問題診斷能力嚴(yán)重不足。做的稍微好點(diǎn)的有調(diào)用量、成功率蜕径、耗時(shí)等監(jiān)控怪蔑,做的差的只有幾個(gè)調(diào)用量的監(jiān)控根本不具備問題感知能力。
2丧荐、預(yù)警:預(yù)警首先要覆蓋所有故障場(chǎng)景,直接造成故障風(fēng)險(xiǎn)的一定要有電話告警喧枷。而且預(yù)警要持續(xù)優(yōu)化虹统,降低到大家每條都能處理的程度,過度告警等于沒有告警了隧甚。
3车荔、反饋:收到預(yù)警后要能快速處理,可以值班也可以由指定人跟進(jìn)戚扳。
風(fēng)險(xiǎn)控制
1忧便、容災(zāi)切換:如果有同城容災(zāi)、異地容災(zāi)帽借、單元化珠增、區(qū)域化等容災(zāi)手段的話,切換到其他可用區(qū)是一個(gè)可用快速恢復(fù)服務(wù)的手段砍艾。
2蒂教、限流:當(dāng)DB出現(xiàn)大量慢sql,突發(fā)流量造成容量風(fēng)險(xiǎn)時(shí)候脆荷,限流是避免系統(tǒng)徹底崩潰的有效手段凝垛,限流能力必須提前做好建設(shè)。
3蜓谋、降級(jí):降級(jí)通常會(huì)有一定的犧牲梦皮,但是可以確保核心的功能可用,比如犧牲一定體驗(yàn)桃焕。
4剑肯、故障隔離:通常是最后沒有辦法的時(shí)候的手段,比如新設(shè)備上線后會(huì)在很長(zhǎng)一段時(shí)間里會(huì)有獨(dú)立的接入點(diǎn)覆旭,避免新設(shè)備的訪問異常造成無線大的訪問沖擊影響其他存量設(shè)備接入退子。
團(tuán)隊(duì)訓(xùn)練有素
??以上的風(fēng)險(xiǎn)感知、風(fēng)險(xiǎn)控制手段能否有效執(zhí)行型将,取決于團(tuán)隊(duì)是否訓(xùn)練有素寂祥。平時(shí)頭腦清醒,重大故障期間慌的不知所措時(shí)很容易出現(xiàn)的七兜,即使有預(yù)案也想不起來或者不敢執(zhí)行丸凭。
1、應(yīng)急預(yù)案演練:前面講過,只有反復(fù)演練過的故障才敢真的去執(zhí)行惜犀,尤其是有損預(yù)案铛碑。
2、突襲演練:突襲更接近于真實(shí)場(chǎng)景的演練虽界,日称常可以團(tuán)隊(duì)內(nèi)互相突襲,也可以找風(fēng)險(xiǎn)團(tuán)隊(duì)協(xié)助聯(lián)動(dòng)做紅藍(lán)對(duì)抗突襲莉御。
3撇吞、故障響應(yīng)演練:專業(yè)的故障響應(yīng)過程,一定要有多個(gè)訓(xùn)練有素的角色高效配合才能最大限度壓縮故障時(shí)長(zhǎng)礁叔,要有指揮員負(fù)責(zé)整體把控牍颈、資源協(xié)調(diào),通訊員負(fù)責(zé)信息收集琅关、對(duì)組織內(nèi)和客服甚至公關(guān)口徑及時(shí)傳遞有效信息煮岁,要有專人去執(zhí)行預(yù)案盡快恢復(fù)服務(wù),也有要人去分析原因確保元無法消除影響后進(jìn)一步處理涣易。最典型的不專業(yè)表現(xiàn)是故障后所有人都撲上去尋找原因画机,這是大忌。如果看過足夠多集團(tuán)重大故障的話新症,應(yīng)該能夠發(fā)現(xiàn)我們有不少的故障原因是十幾個(gè)人數(shù)天時(shí)間才能真正分析清楚的色罚。故障期間,原因分析之要能滿足故障恢復(fù)即可账劲,不要強(qiáng)迫自己一定要分析到根本原因戳护。比如服務(wù)異常后,定位到是db異常瀑焦,這個(gè)時(shí)候如果有提前db降級(jí)預(yù)案腌且,就可以快速評(píng)估是否執(zhí)行了,而不是分析db異常的根本原因榛瓮,我們有些db異常最后分析到是mysql內(nèi)核層的bug,如果要分析到這種級(jí)別的根本原因才能恢復(fù)服務(wù)那對(duì)業(yè)務(wù)來說絕對(duì)是災(zāi)難铺董。
穩(wěn)定性建設(shè)(一)--服務(wù)端穩(wěn)定性體系
[穩(wěn)定性建設(shè)(二)--穩(wěn)定性之監(jiān)控]
[穩(wěn)定性建設(shè)(三)--穩(wěn)定性之系統(tǒng)自愈能力]
[穩(wěn)定性建設(shè)(四)--穩(wěn)定性之應(yīng)急預(yù)案建設(shè)]
[穩(wěn)定性建設(shè)(五)--穩(wěn)定性之預(yù)案規(guī)范]
[穩(wěn)定性建設(shè)(六)--穩(wěn)定性之統(tǒng)一錯(cuò)誤日志規(guī)范]
[穩(wěn)定性建設(shè)(七)--穩(wěn)定性之故障應(yīng)急處理流程]