在 Web服務器中,高可用是指服務器可以正常訪問的時間,衡量的標準是在多長時間內可以提供正常服務(99.9%、99.99%、99.999%等等)
在 Redis 層面,高可用的含義要寬泛一些,除了保證提供正常服務(如主從分離、快速容災技術等),還需要考慮數據容量擴展、數據安全等等。在Redis中,實現高可用的技術主要包括持久化、主從複製、哨兵機制和集羣,下面簡單說明它們的作用,以及解決了什麼樣的問題:
持久化:持久化是最簡單的高可用方法。它的主要作用是數據備份,即將數據存儲在硬盤,保證數據不會因進程退出而丟失。
主從複製:複製是高可用Redis的基礎,哨兵和集羣都是在複製基礎上實現高可用的。複製主要實現了數據的多機備份以及對於讀操作的負載均衡和簡單的故障恢復。缺陷是故障恢復無法自動化、寫操作無法負載均衡、存儲能力受到單機的限制。
哨兵:在複製的基礎上,哨兵實現了自動化的故障恢復。缺陷是寫操作無法負載均衡,存儲能力受到 單機的限制。
集羣:通過集羣,Redis 解決了寫操作無法負載均衡以及存儲能力受到單機限制的問題,實現了較爲完善 的高可用方案。
機制 | 作用 | 缺點 |
---|---|---|
持久化 | 數據備份 | 單機,無容災機制 |
主從複製 | 數據冗餘、故障恢復、讀負載均衡 | 故障恢復無法自動化;寫操作無法負載均衡;存儲能力受到單機的限制 |
集羣 | 數據分片,讀寫負載均衡,故障自動恢復,分佈式 | 不支持事務,批量操作,多數據空間 |