通常,面試官在評(píng)估你的系統(tǒng)架構(gòu)設(shè)計(jì)能力時(shí),經(jīng)常會(huì)要求你分享在上一家公司如何設(shè)計(jì)系統(tǒng)架構(gòu),以便了解你的設(shè)計(jì)能力和思維過程。
在解釋架構(gòu)設(shè)計(jì)時(shí),你會(huì)逐步向面試官證明自己負(fù)責(zé)的系統(tǒng)如何實(shí)現(xiàn)高可用性。這需要涉及一個(gè)公認(rèn)的指標(biāo) - 服務(wù)水平協(xié)議(Service-Level Agreement,SLA)。服務(wù)水平協(xié)議是由服務(wù)提供者和用戶雙方簽訂的合同或協(xié)議,規(guī)定了雙方的商務(wù)關(guān)系或部分商務(wù)關(guān)系。簡單來說,SLA是衡量服務(wù)可用性的一個(gè)重要指標(biāo)。
業(yè)界通常使用"幾個(gè)9"的標(biāo)準(zhǔn)來衡量互聯(lián)網(wǎng)應(yīng)用的可用性。例如,京東的可用性是四個(gè)9(99.99%)。這意味著京東的服務(wù)承諾在所有運(yùn)行時(shí)間中只有0.01%的不可用時(shí)間,也就是說一年中只有大約52.6分鐘不可用。這個(gè)99.99%被稱為系統(tǒng)的可用性指標(biāo)。
52.6 分鐘是怎么計(jì)算出來的呢?
圖片
從公式中可以看出, SLA 等于 4 個(gè) 9,也就是可用時(shí)長達(dá)到了 99.99% ,不可用時(shí)長則為是0.01%,一年是 365 天, 8760 個(gè)小時(shí),一年的不可用時(shí)長就是 52.6 分鐘,那么:
SLA 等于 3 個(gè) 9,就相當(dāng)于一年不可用時(shí)長等于 526 分鐘;
SLA 等于 5 個(gè) 9,就相當(dāng)于一年不可用時(shí)長等于 5.26 分鐘。
可以發(fā)現(xiàn),用 SLA 等于 4 個(gè)9 作為參照物,少個(gè) 9 相當(dāng)于小數(shù)點(diǎn)往后移一位,多個(gè) 9 相當(dāng)于小數(shù)點(diǎn)往前移一位(我把系統(tǒng)可用性指標(biāo)總結(jié)成一張表格)。
圖片
在評(píng)估系統(tǒng)的高可用性時(shí),僅僅按時(shí)間指標(biāo)度量是不夠的。因?yàn)樵诨ヂ?lián)網(wǎng)公司,低峰期和高峰期對業(yè)務(wù)的影響是不同的,這需要綜合考慮。你可以采用以下方法來回答關(guān)于高可用性的問題:
我們可以通過設(shè)計(jì)一個(gè)監(jiān)控系統(tǒng)來保證系統(tǒng)服務(wù)SLA達(dá)到四個(gè)9,這個(gè)監(jiān)控系統(tǒng)可以分為三個(gè)核心部分:基礎(chǔ)設(shè)施監(jiān)控報(bào)警、系統(tǒng)應(yīng)用監(jiān)控報(bào)警,以及存儲(chǔ)服務(wù)監(jiān)控報(bào)警。通過這個(gè)監(jiān)控系統(tǒng)的設(shè)計(jì),我們可以更好地了解哪些環(huán)節(jié)對整個(gè)系統(tǒng)的可用性產(chǎn)生影響,這將幫助我們在面試中更清晰地展示系統(tǒng)高可用性設(shè)計(jì)的理念。
基礎(chǔ)設(shè)施監(jiān)控
監(jiān)控報(bào)警指標(biāo)分為兩種類型。
系統(tǒng)要素指標(biāo):主要有 CPU、內(nèi)存,和磁盤。
網(wǎng)絡(luò)要素指標(biāo):主要有帶寬、網(wǎng)絡(luò) I/O、CDN、DNS、安全策略、和負(fù)載策略。
為什么我們要監(jiān)控這些指標(biāo)?因?yàn)樗鼈兪桥袛嘞到y(tǒng)的基礎(chǔ)環(huán)境是否為高可用的重要核心指標(biāo)。
圖片
監(jiān)控工具有一些常見的選擇,它們可以幫助你有效地監(jiān)控系統(tǒng)的性能。這些工具包括:
這些工具提供了豐富的監(jiān)控功能,可以幫助你監(jiān)測系統(tǒng)的各個(gè)方面,從基礎(chǔ)的CPU和內(nèi)存使用到更高級(jí)的K8S監(jiān)控。此外,你還可以結(jié)合運(yùn)營商提供的監(jiān)控平臺(tái),以覆蓋整個(gè)基礎(chǔ)設(shè)施監(jiān)控的需求。
監(jiān)控報(bào)警策略一般由時(shí)間維度、報(bào)警級(jí)別、閾值設(shè)定三部分組成。
圖片
為了幫助你更好地理解監(jiān)控報(bào)警策略,讓我用一個(gè)例子來說明。假設(shè)我們正在監(jiān)控一個(gè)系統(tǒng)的CPU、內(nèi)存和磁盤使用情況,監(jiān)測的時(shí)間間隔是每分鐘,并且我們設(shè)置了一些占比的閾值。基于這些條件,我們可以制定以下監(jiān)控報(bào)警策略:
圖片
為了第一時(shí)間監(jiān)測到指標(biāo)的健康度,報(bào)警級(jí)別可以分為緊急、重要,以及一般。當(dāng) CPU、內(nèi)存,以及磁盤使用率這三項(xiàng)指標(biāo)的每分鐘采集的指標(biāo)達(dá)到 90% 使用率時(shí),就觸發(fā)“緊急報(bào)警”;達(dá)到 80% 觸發(fā)“重要報(bào)警”;70% 觸發(fā)“一般報(bào)警”。
系統(tǒng)應(yīng)用監(jiān)控
業(yè)務(wù)狀態(tài)監(jiān)控報(bào)警是關(guān)注系統(tǒng)自身狀態(tài)的監(jiān)控報(bào)警,與基礎(chǔ)設(shè)施監(jiān)控類似,它也由監(jiān)控指標(biāo)、監(jiān)控工具和報(bào)警策略組成。不同之處在于,系統(tǒng)應(yīng)用監(jiān)控報(bào)警的核心監(jiān)控指標(biāo)主要包括以下6個(gè)關(guān)鍵指標(biāo):流量、耗時(shí)、錯(cuò)誤、心跳、客戶端數(shù)和連接數(shù)。用于實(shí)現(xiàn)這些監(jiān)控指標(biāo)的工具包括CAT、SkyWalking、Pinpoint、Zipkin等。
圖片
一般來講,常用的第三方存儲(chǔ)有 DB、ES、Redis、MQ 等。
在面試中,當(dāng)回答關(guān)于監(jiān)控和保障系統(tǒng)可用性的問題時(shí),可以結(jié)合三個(gè)核心監(jiān)控部分(基礎(chǔ)設(shè)施監(jiān)控、系統(tǒng)應(yīng)用監(jiān)控、存儲(chǔ)服務(wù)監(jiān)控)來闡述你的全局監(jiān)控視角,強(qiáng)調(diào)你的設(shè)計(jì)思路。例如,你可以這樣回答:
"為了確保系統(tǒng)的可用性和穩(wěn)定性,我設(shè)計(jì)了一套綜合性的監(jiān)控體系,用于在生產(chǎn)環(huán)境中對系統(tǒng)進(jìn)行全面監(jiān)控。這包括基礎(chǔ)設(shè)施、系統(tǒng)應(yīng)用和存儲(chǔ)服務(wù)的監(jiān)控。具體的監(jiān)控指標(biāo)和細(xì)節(jié)可以根據(jù)實(shí)際業(yè)務(wù)場景進(jìn)行定制,比如在游戲領(lǐng)域,我們更關(guān)注流量和客戶端連接數(shù)等關(guān)鍵指標(biāo)。這種綜合性的監(jiān)控系統(tǒng)有助于我們迅速發(fā)現(xiàn)潛在問題并及時(shí)采取措施來維護(hù)系統(tǒng)的高可用性。"
當(dāng)面試官進(jìn)一步追問如何應(yīng)對線上告警時(shí),你可以回答:
"當(dāng)面對線上告警時(shí),我會(huì)迅速響應(yīng),并根據(jù)告警的嚴(yán)重性采取相應(yīng)的措施。首先,我會(huì)查看告警的詳細(xì)信息,分析問題所在,以確定是否是假警報(bào)或真實(shí)問題。如果是真實(shí)問題,我將根據(jù)事先設(shè)定的報(bào)警策略來通知相關(guān)團(tuán)隊(duì)成員。然后,我們會(huì)在團(tuán)隊(duì)內(nèi)部協(xié)作,采取緊急措施來解決問題,包括故障排查、系統(tǒng)恢復(fù)和監(jiān)控指標(biāo)調(diào)整等。一旦問題得到解決,我會(huì)進(jìn)行事后分析,以確保我們可以從中吸取教訓(xùn),以防止未來類似問題的發(fā)生。總之,我會(huì)盡最大努力確保系統(tǒng)的高可用性,同時(shí)確保及時(shí)有效地響應(yīng)和處理告警情況。"
這種回答方式突出了你對全局監(jiān)控和緊急事件處理的理解,以及你的責(zé)任感和應(yīng)對危機(jī)的能力。
對于線上故障,要有應(yīng)急響應(yīng)機(jī)制,我總結(jié)以下幾點(diǎn)供你參考:
圖片
本文鏈接:http://www.tebozhan.com/showinfo-26-15584-0.html如何向面試官證明你做的系統(tǒng)是高可用的?
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: Next.js 14 正式發(fā)布,更快、更強(qiáng)、更可靠!你Get到了嗎?
下一篇: 微服務(wù)Saas如何做私有化部署