1、RedisCluster分布式集群解決方案
為了解決單機內存,并發等瓶頸,可使用此方案解決問題.
Redis-cluster是一種服務器Sharding技術,Redis3.0以后版本正式提供支持。
這里的集群是指多主多從,不是一主多從。
2、redis集群的目標
1.高性能可線性擴展至最多1000節點
2.集群中沒有代理,(集群節點間)使用異步復制,沒有歸并操作。
可以接受的寫入丟失:
在發生failover之前的小段時間窗內的寫操作可能在failover中丟失)。而在(網絡)分區故障下,對少數派master的寫入,發生寫丟失的時間窗會很大。
可用性:
Redis Cluster在以下場景下集群總是可用:大部分master節點可用,并且對少部分不可用的master,每一個master至少有一個當前可用的slave。更進一步,通過使用 replicas migration 技術,當前沒有slave的master會從當前擁有多個slave的master接受到一個新slave來確保可用性。
3、Redis Cluster的日常工作
1.負責維護數據,和獲取集群狀態,包括將keys映射到正確的節點。
2.集群節點同樣可以自動發現其他節點、檢測不工作節點、以及在發現故障發生時晉升slave節點到master
3.所有集群節點通過由TCP和二進制協議組成的稱為 Redis Cluster Bus 的方式來實現集群的節點自動發現、故障節點探測、slave升級為master等任務。
4.每個節點通過cluster bus連接所有其他節點。
5.節點間使用gossip協議進行集群信息傳播,以此來實現新節點發現,發送ping包以確認對端工作正常,以及發送cluster消息用來標記特定狀態。
6.cluster bus還被用來在集群中創博Pub/Sub消息,以及在接收到用戶請求后編排手動failover。
4、分片模塊
哈希槽(Hash Slot)
各種分區方案