我正计划创建一个高可用性的Redis集群。阅读了许多有关构建Redis集群的文章后,我感到困惑。那到底是什么
对Redis Sentinel Master1 Slave1 Slave2集群的其他问题:
对Redis多节点分片群集的其他问题:
我不确定这两个解决方案是否唯一。希望你们能帮助我理解Redis的体系结构。很抱歉有这么多问题。
答案 0 :(得分:1)
我将尝试回答您的一些问题,但首先让我描述Redis的不同部署选项。 Redis具有三种基本部署:单节点,哨兵和集群。
所以回答您的问题:
两次部署之间的决定应基于您的预期负载。 如果可以通过单个Redis主节点管理写负载,则可以进行Sentinel部署。
如果一个节点无法处理您的预期负载,则必须进行群集部署。
Redis Sentinel部署不可扩展,因此使群集变大不会提高性能。唯一的例外是添加从站可以提高您的读取性能(如果您将读取请求定向到从站)。
在具有多个端口的单个节点上运行的Redis群集仅用于开发和演示目的。在生产中是没有用的。
在Redis Cluster部署中,客户端应该可以访问所有节点(并且只有Master1节点)。这是因为数据在主机之间进行分片。 如果客户端尝试将数据写入Master1,但Master2是数据的所有者,则Master1将向客户端返回一条MOVE消息,引导其将请求发送到Master2。 您不能在所有Redis节点的前面都拥有一个HAProxy。
与5中相同的答案,在群集部署中,客户端应该直接连接到所有主服务器和从服务器,而不是通过LB或Keepalived。
不确定我是否完全理解您的问题,但是Redis Cluster是Redis唯一可扩展的解决方案。
Redis群集部署仅在所有键都在同一节点中时才支持多键操作。您可以使用“哈希标签”强制多个密钥由同一主机处理。
一些好的链接可以帮助您更好地理解它:
有关不同Redis部署选项的说明:https://blog.octo.com/en/what-redis-deployment-do-you-need
有关Redis群集的体系结构的详细说明:https://blog.usejournal.com/first-step-to-redis-cluster-7712e1c31847