高可用是通過設計,減少系統不能提供服務的時間,是分佈式系統的基礎也是保障系統可靠性的重要手段。而 Redis 作爲一款普及率最高的內存型中間件,它的高可用技術也非常的成熟。
我們本課時的面試題是,Redis 是如何保證系統高可用的?它的實現方式有哪些?
回答:
Redis 高可用的手段主要有以下四種:
數據持久化
主從數據同步(主從複製)
Redis 哨兵模式(Sentinel)
Redis 集羣(Cluster)
其中數據持久化保證了系統在發生宕機或者重啓之後數據不會丟失,增加了系統的可靠性和減少了系統不可用的時間(省去了手動恢復數據的過程);而主從數據同步可以將數據存儲至多臺服務器,這樣當遇到一臺服務器宕機之後,可以很快地切換至另一臺服務器以繼續提供服務;哨兵模式用於發生故障之後自動切換服務器;而 Redis 集羣提供了多主多從的 Redis 分佈式集羣環境,用於提供性能更好的 Redis 服務,並且它自身擁有故障自動切換的能力。
面試常考點分析
高可用的問題屬於 Redis 中比較大的面試題了,因爲很多知識點都和這個面試題有關,同時也屬於比較難的面試題了。因爲涉及了分佈式集羣,而分佈式集羣屬於 Redis 中比較難懂的一個知識點。和此問題相關的面試題還有以下幾個:
數據持久化有幾種方式?
Redis 主從同步有幾種模式?
什麼是 Redis 哨兵模式?它解決了什麼問題?
Redis 集羣的優勢是什麼?
1.數據持久化
持久化功能是 Redis 和 Memcached 的主要區別之一,因爲只有 Redis 提供了此功能。
在 Redis 4.0 之前數據持久化方式有兩種:AOF 方式和 RDB 方式。
RDB(