redis cluster 集群架构

时间:2021-07-15 08:10:06
  1. 关于redis cluster 集群
    redis cluster集群是分布式的。
    1.1 redis 集群数据分片(redis cluster data sharding)-哈希槽的概念
    有M个哈希槽,每个master会有[0,M]个哈希槽slots。当若干个master拥有的哈希槽的集合总数为M时,该redis cluster才能全部读写工作正常态。
    1.2 master - slave
    slave是master 的replicas,salve本身不占哈希槽slots.一个master可以没有或有任意个slave,每个master拥有的salve数量是任意的。
    redis cluster 集群架构
    当某个master 挂掉(failover)时候,slave会自动顶替它的master
    redis cluster 集群架构
    如果某个master恰巧没有slave,挂掉之后,整个redis集群就都挂掉了redis cluster 集群架构
    1.3 redis 集群的一致性。
    redis集群是不保证严格一致性(strong consistency)的,即总是存在某个write,返回成功,而实际没有成功的概率的。因为redis 使用的是异步复制(asynchronous)
    redis cluster 集群架构
    你可以使用wait,实现同步复制(synchronous),这会减少write失败的概率,但是对性能就降低了。即使这样也不能保证严格一致性(strong consistency).因为总存在某个情况备份时候,一个slave没有收到master 的write同步,却被选举为master。(it is always possible under more complex failure scenarios that a slave that was not able to receive the write is elected as master).
    例如当正好有个write command传入给master A,A存储后回应客户端OK(还来不及slave同步),极短的时间内该master down,它的一个slave 被选举为master,但是该new master根本不知道刚刚的write command的事情。
    redis cluster 集群架构

2.关于redis cluster 操作大体步骤
redis cluster 集群架构

参考资料:
[同步复制与异步复制]
http://xiyou.cntv.cn/v-e181299b-dbd3-11e3-9596-05b169fcb184.html