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