初識大促保障,常會有這樣的疑問:保障保的到底是什么,確保沒有問題或者不出問題嗎?這似乎是個偽命題。而作為保障這件事本身,不僅要堅信所為有意義,更要有所為,這就需要把不可能的偽命題轉(zhuǎn)化為可以不斷深入的可行任務(wù)。談及保障的根本,其實我們要面對的是對抗不確定性,這個不確定性來自四面八方。比如大地震,會導(dǎo)致整個機(jī)房中斷,如何應(yīng)對?比如負(fù)責(zé)核心系統(tǒng)的工程師離職了,如何應(yīng)對?再比如下游接口掛了,如何應(yīng)對?系統(tǒng)磁盤壞了,數(shù)據(jù)面臨丟失風(fēng)險,如何應(yīng)對?我想關(guān)于上述問題的應(yīng)對方式,大家在工作中或多或少都有所了解,而這個不確定性的處理過程,就是容災(zāi),其不同的‘災(zāi)難’,對應(yīng)不同的容災(zāi)級別。
站在用戶的角度思考問題,與客戶深入溝通,找到河源網(wǎng)站設(shè)計與河源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋河源地區(qū)。為了對抗這些不同級別的不確定性,就要付出不同級別的成本,因此可用性也應(yīng)是有標(biāo)準(zhǔn)的。這標(biāo)準(zhǔn)就是大家常說的N個9。隨著N的增加,成本也相應(yīng)增加,那如何在達(dá)到業(yè)務(wù)需要的可用性的基礎(chǔ)上,盡量節(jié)省成本?這也是一個值得思考的話題。除此之外,100%減去這N個9就說所謂的平均故障時間(MTBF),很多人只關(guān)心那些9,而忽略了故障處理時間,這是不該的:你的故障處理速度越快,系統(tǒng)的可用性才有可能越高。
上面扯了一些可用性概念上的東西,下面嘗試使用‘事情’來分個類。這里的‘事’就是故障,分為:事前(故障發(fā)生以前)、事發(fā)(故障發(fā)生到系統(tǒng)或人感知到故障)、事中(故障發(fā)生到故障處理這段時間)、事后(故障結(jié)束之后)。
按照上述分類,不同的階段應(yīng)有著不同的技巧:
1. 事前:副本、隔離、配額、預(yù)案、探知
2. 事發(fā):監(jiān)控、報警
3. 事中:降級、回滾、應(yīng)急預(yù)案
4. 事后:復(fù)盤、思考、技改
部分技術(shù)概念解釋如下:
副本:無狀態(tài)服務(wù)集群便是副本的一個應(yīng)用,因為沒有狀態(tài),便可水平伸縮,而這些無狀態(tài)服務(wù)器之間需要一層代理來統(tǒng)一調(diào)度管理,這便有了反向代理。當(dāng)代理通過心跳檢測機(jī)制檢測到有一臺機(jī)器出現(xiàn)問題時,就將其下線,其他‘副本’機(jī)器繼續(xù)提供服務(wù);存儲領(lǐng)域也是經(jīng)常使用副本技術(shù)的,比如mysql主備切換,rabbitMQ的鏡像隊列,磁盤的RAID技術(shù),各種nosql中的分區(qū)副本,等等數(shù)不勝數(shù),幾乎所有保證高可用的系統(tǒng)都有冗余副本存在。
隔離:線程隔離、進(jìn)程隔離、集群隔離、機(jī)房隔離、讀寫隔離、動靜隔離、爬蟲隔離、熱點隔離、硬件資源隔離。這些隔離其實就是一種,即資源隔離,無論線程、進(jìn)程、硬件、機(jī)房、集群都是一種資源;動態(tài)資源和靜態(tài)資源也不過是資源的一種分類;熱點隔離也即是熱點資源和非熱點資源的隔離;讀寫隔離不過僅僅是資源的使用方式而已,相同的兩份資源,一份用來寫,一份用來讀。因此,隔離的本質(zhì),其實就是對資源的獨(dú)立保護(hù)。因為每個資源都得到了獨(dú)立的保護(hù),其中一個資源出了問題,不會影響到其他資源,這就提高了整體服務(wù)的可用性。
配額:配額技術(shù)通過限制資源供給來保護(hù)系統(tǒng),從而提高整體可用性。限流是配額技術(shù)的一種,它通過調(diào)節(jié)入口流量水位上線,來避免供給不足所導(dǎo)致的服務(wù)宕機(jī)。限流分為集群限流和單機(jī)限流,集群限流需要分布式基礎(chǔ)設(shè)施配合,單機(jī)限流則不需要。除此之外,限流這里我們還需要考慮幾點:
如何設(shè)置合理的限流值?限流值的設(shè)定是需要經(jīng)過全鏈路壓測、妥善評估CPU容量、磁盤、內(nèi)存、IO等指標(biāo)與流量之間的變化關(guān)系(不一定線性關(guān)系)、結(jié)合業(yè)務(wù)預(yù)估和運(yùn)維經(jīng)驗后,才能確定。
對于被限流的流量如何處理?有幾種處理方式,其一直接丟棄,用溫和的文案提醒用戶;其二,靜默,俗稱的無損降級,用緩存內(nèi)容刷新頁面;其三,蓄洪,異步回血,這一般用于事務(wù)型場景。
會不會導(dǎo)致誤殺?單機(jī)限流會導(dǎo)致誤殺,尤其當(dāng)負(fù)載不均衡的情況下,很容易出現(xiàn)誤殺;單機(jī)限流值設(shè)定過小也容易出現(xiàn)誤殺的情況。
預(yù)案:一般分為提前預(yù)案(事前)和應(yīng)急預(yù)案(事中)。提前預(yù)案提前執(zhí)行,比如將系統(tǒng)臨時從高峰模式切換成節(jié)能模式;應(yīng)急預(yù)案關(guān)鍵時刻才執(zhí)行,主要用于止血,比如一鍵容災(zāi)切換等。預(yù)案技術(shù)一般要配合開關(guān)使用,推預(yù)案一般也就是推開關(guān)了。除此之外,預(yù)案也可和限流、回滾、降級等相結(jié)合,預(yù)案的制定也可通過對歷史故障的分析尋找思路。
探知:探知當(dāng)前系統(tǒng)的可用性能力,其實無法提高系統(tǒng)可用性,做不好甚至還會降低系統(tǒng)可用性。壓測和演練是最常見的探知技術(shù) 。壓測分為全鏈路壓測和單鏈路壓測,全鏈路壓測用于像雙十一大促活動等,需要各上下游系統(tǒng)整體配合,單鏈路壓測一般驗證功能或做簡單的場景壓測提取性能指標(biāo)。全鏈路壓測的一般過程是:壓測目標(biāo)設(shè)定和評估,壓測構(gòu)造,壓測腳本編寫部署,壓測數(shù)據(jù)準(zhǔn)備,小流量鏈路驗證,通知上下游系統(tǒng)owner,壓測預(yù)熱,壓測,壓測結(jié)果評估報告,性能優(yōu)化。以上過程反復(fù)迭代,直到達(dá)到壓測目標(biāo)為止;演練一般按規(guī)模劃分:比如城市級別的容災(zāi)演練,機(jī)房級別的容災(zāi)演練,集群規(guī)模的容災(zāi)演練(DB集群,緩存集群,應(yīng)用集群等),單機(jī)級別的故障注入,預(yù)案演練等。
監(jiān)控和報警:一般出現(xiàn)故障的時候,老板大多會有三問:為什么才發(fā)現(xiàn)?為什么才解決?影響有多大?即使故障影響面較大,如果能迅速止血,在做復(fù)盤的時候多少能挽回一些面子,相反如果處理不及時,即使小小的故障,都可能讓你丟了飯碗。越早識別故障,就能越早解決問題,而這眼睛便是監(jiān)控和報警了。
降級:降級的內(nèi)涵豐富,我們只從鏈路角度去思考。降級的本質(zhì)是棄車保帥,通過臨時舍棄部分功能,保證系統(tǒng)整體可用性。降級雖然從整體上看系統(tǒng)仍然可用,但由于取舍的關(guān)系,那么可知所有的降級一定是有損的。不可能有真正的無損降級,而常說的無損降級指的是用戶體驗無損。降級一定發(fā)生在層與層之間(上下游),要么a層臨時性不調(diào)用b層,這叫做熔斷,要么a層臨時調(diào)用c層(c層合理性一定 讀寫降級,實際上是存儲層和應(yīng)用層之間的降級,采用備用鏈路切換方式,損失了一致性; 功能降級,將部分功能關(guān)閉,實際上是應(yīng)用層和功能模塊層之間的降級,采用熔斷方式,損失了部分功能。 爬蟲降級,實際上是搜索引擎爬蟲和應(yīng)用系統(tǒng)之間的降級,采用備用鏈路切換方式,將爬蟲引導(dǎo)到靜態(tài)頁面,損失是引擎索引的建立和頁面收錄。
回滾:當(dāng)執(zhí)行某種變更出現(xiàn)故障時,最為穩(wěn)妥和有效的辦法就是回滾。雖然回滾行之有效,但并不簡單,因為回滾有一個大前提:變更必須具有可回滾性。而讓某一種變更具有可回滾的特性,是要耗費(fèi)很大力氣的。索性的是,大部分基礎(chǔ)服務(wù)已經(jīng)幫我們封裝好了這一特性,比如DB的事務(wù)回滾(DB事務(wù)機(jī)制),代碼庫回滾(GIT的文件版本控制),發(fā)布回滾(發(fā)布系統(tǒng)支持)等等。我們在日常變更操作的時候,必須要確定你的操作是否可回滾,并盡力保證所有變更均可回滾。如果不能回滾,是否可以進(jìn)行熱更新(比如發(fā)布應(yīng)用到app store)或最終一致性補(bǔ)償?shù)阮~外手段保證系統(tǒng)高可用。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。