面試官:你項(xiàng)目是如何保證高可用的?
項(xiàng)目的高可用、高并發(fā)和高擴(kuò)展是當(dāng)前開發(fā)中必須追求的三大目標(biāo),因此也是面試中經(jīng)常被問到的內(nèi)容,所以我們今天就來看看,如何才能保證項(xiàng)目的高可用性呢?
1.高可用的度量指標(biāo)
項(xiàng)目的可用性的度量指標(biāo)是以可用性百分比(N個(gè)9)來衡量的,也就是通過系統(tǒng)正常運(yùn)行時(shí)間占比衡量的,例如:
- 99.9%(3個(gè)9):年故障時(shí)間≤8.8小時(shí),日故障時(shí)間≤7.44分鐘。
- 99.99%(4個(gè)9):年故障時(shí)間≤53分鐘,日故障時(shí)間≤8.6秒。
- 99.999%(5個(gè)9):年故障時(shí)間≤5分鐘,日故障時(shí)間≤0.86秒。
通常情況下,核心服務(wù)(如支付系統(tǒng))通常要求 4 個(gè) 9,其他普通服務(wù)要求為 3 個(gè) 9 即可。
保證項(xiàng)目高可用的手段有以下幾個(gè):
圖片
具體來說。
2.運(yùn)維層面保證高可用
- 多機(jī)部署:如 MySQL 主從部署、Redis 集群部署、項(xiàng)目多機(jī)部署等,通過多臺(tái)服務(wù)器同時(shí)運(yùn)行相同的業(yè)務(wù),分散壓力,提高容錯(cuò)性,當(dāng)其中一臺(tái)或多臺(tái)服務(wù)器出現(xiàn)故障時(shí),業(yè)務(wù)仍能正常運(yùn)行。
- 多區(qū)域部署:將系統(tǒng)部署在不同的地理區(qū)域,避免因某個(gè)區(qū)域的災(zāi)難(如地震、火災(zāi)等)導(dǎo)致整個(gè)系統(tǒng)不可用,提高系統(tǒng)的容災(zāi)能力。
3.服務(wù)設(shè)計(jì)層面保證高可用
- 微服務(wù)架構(gòu):將系統(tǒng)拆分成多個(gè)獨(dú)立的小服務(wù),每個(gè)服務(wù)獨(dú)立開發(fā)、部署和運(yùn)行,降低服務(wù)之間的耦合度,提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性,即使某個(gè)服務(wù)出現(xiàn)故障,也不會(huì)影響整個(gè)系統(tǒng)。
- 負(fù)載均衡+健康檢測(cè):通過負(fù)載均衡器將用戶請(qǐng)求合理分配到多臺(tái)服務(wù)器上,避免某臺(tái)服務(wù)器過載,同時(shí)對(duì)服務(wù)器進(jìn)行健康檢測(cè),及時(shí)發(fā)現(xiàn)并隔離故障服務(wù)器,確保用戶請(qǐng)求能被正常處理。
- 服務(wù)限流:在系統(tǒng)出現(xiàn)高并發(fā)請(qǐng)求時(shí),限制單位時(shí)間內(nèi)通過的請(qǐng)求數(shù)量,防止系統(tǒng)因過載而崩潰,保證系統(tǒng)在高負(fù)載情況下的穩(wěn)定性和可用性。
- 服務(wù)熔斷與降級(jí):當(dāng)某個(gè)服務(wù)出現(xiàn)故障或響應(yīng)時(shí)間過長(zhǎng)時(shí),暫時(shí)切斷對(duì)該服務(wù)的請(qǐng)求,直接返回失敗結(jié)果或降級(jí)結(jié)果,避免故障擴(kuò)散,保證核心業(yè)務(wù)的正常運(yùn)行。
4.監(jiān)控與告警
- 系統(tǒng)監(jiān)控:實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的運(yùn)行狀態(tài),包括服務(wù)器的 CPU、內(nèi)存、磁盤使用率,網(wǎng)絡(luò)流量等,及時(shí)發(fā)現(xiàn)潛在問題。
- 性能監(jiān)控:關(guān)注系統(tǒng)的性能指標(biāo),如響應(yīng)時(shí)間、吞吐量、并發(fā)數(shù)等,發(fā)現(xiàn)性能瓶頸,以及及時(shí)發(fā)現(xiàn)潛在問題。
- 日志監(jiān)控:收集和分析系統(tǒng)日志,及時(shí)發(fā)現(xiàn)錯(cuò)誤、異常和安全問題,便于快速定位和解決問題。
小結(jié)
項(xiàng)目的高可用性需要通過運(yùn)維層面,以及服務(wù)設(shè)計(jì)層面的多項(xiàng)措施共同保證其可用性。之后再加上監(jiān)控和告警機(jī)制,提前預(yù)防和發(fā)現(xiàn)問題,從而一定程度的避免不可用問題的發(fā)生。
除了以上這些手段之外,你還知道哪些保證高可用的機(jī)制呢?