分散式是指將業務系統進行拆分,也就是分散式的每個節點都是實作不同的功能。
叢集是一組協同工作的服務實體,以提供比單一服務實體更具擴展性與可用性的服務平台。 (建議學習:Redis視訊教學)
簡單地說,分散式是以縮短單一任務的執行時間來提升效率的,而群集則是透過提高單位時間內執行的任務數來提升效率。
Redis Cluster 叢集模式通常具有高可用、可擴展性、分散式、容錯等特性。 Redis 分散式方案一般有兩種:
客戶端分區方案
#客戶端就已經決定資料會被儲存到哪個redis 節點或從哪個redis 節點讀取數據。其主要想法是採用雜湊演算法將 Redis 資料的 key 進行雜湊,透過 hash 函數,特定的 key會映射到特定的 Redis 節點上。
客戶端分區方案的代表為 Redis Sharding,Redis Sharding 是 Redis Cluster 出來之前,業界普遍使用的 Redis多實例叢集方法。 Java 的 Redis 用戶端驅動程式庫 Jedis,支援 Redis Sharding 功能,即 ShardedJedis 以及結合快取池的 ShardedJedisPool。
優點
不使用第三方中間件,分區邏輯可控,配置簡單,節點之間無關聯,容易線性擴展,彈性強。
缺點
客戶端無法動態增刪服務節點,客戶端需要自行維護分發邏輯,客戶端之間無連線共享,會造成連線浪費。
代理分區方案
客戶端發送請求到一個代理元件,代理解析客戶端的數據,並將請求轉發至正確的節點,最後將結果回覆給客戶端。
優點:簡化客戶端的分散式邏輯,客戶端透明接入,切換成本低,代理的轉發和儲存分離。缺點:多了一層代理層,加重了架構部署複雜度與效能損耗。
代理分割主流實作的有方案有 Twemproxy 和 Codis。
Twemproxy
Twemproxy 也叫 nutcraker,是 twitter 開源的一個 redis 和 memcache 的中間代理伺服器程式。 Twemproxy 作為代理,可接受來自多個程序的訪問,按照路由規則,轉發給後台的各個 Redis 伺服器,再原路返回。 Twemproxy 有單點故障問題,需要結合 Lvs 和 Keepalived 做高可用方案。
優點:應用範圍廣,穩定性較高,中間代理層高可用。缺點:無法平滑地水平擴容/縮容,無視覺化管理介面,維運不友好,故障,無法自動轉移。
Codis
Codis 是分散式Redis 解決方案,對於上層應用來說,連接 Codis-Proxy 和直接連接原生的Redis-Server 沒有的差異。 Codis 底層會處理請求的轉發,不停機的進行資料遷移等工作。 Codis 採用了無狀態的代理層,對於客戶端來說,一切都是透明的。
優點
實現了上層Proxy 和底層Redis 的高可用,資料分片和自動平衡,提供命令列介面和RESTful API,提供監控和管理介面,可以動態新增和刪除Redis 節點。
缺點
部署架構和配置複雜,不支援跨機房和多租用戶,不支援鑑權管理。
更多Redis相關技術文章,請造訪Redis資料庫使用入門教學欄位學習!
以上是redis叢集和分散式區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!