【问题标题】:Optimizing Redis cluster nodes优化 Redis 集群节点
【发布时间】:2020-03-12 05:25:07
【问题描述】:

据我了解,在 Redis 集群中,总共有 16384 个插槽分布在节点上。因此,如果我有一个像 entity:user:userID (like user:1234) 这样的键并且值是一个序列化的 user 对象,并说明我的应用程序是否有 500k+ 用户。它应该均匀地分配到每个插槽。我们目前总共有 6 个节点(3 个主节点和 3 个从节点),我们一直在想什么时候应该在总共 8 个节点中添加 2 个节点。我们也确实将缓存数据写入磁盘,有时我们会在持久化到磁盘时收到延迟警告。我假设如果有更多节点,则每个节点需要保留的数据就会更少,从而提高性能/资源使用率。但是除了磁盘 i/o 之外,是否有一个固定的性能测量来让我们知道何时应该开始添加额外的节点? 谢谢!

【问题讨论】:

    标签: redis redis-cluster


    【解决方案1】:

    如果您的限制因素是用于复制的磁盘 I/O,则使用 SSD 可以显着提高性能。

    需要进行横向扩展的另外两个迹象包括服务器负载和节点已用内存。还有其他的,但这两个很容易推理。

    如果您的限制因素是由于请求自然增加而导致节点上的处理能力(例如服务器负载),那么横向扩展将有助于将负载分布到更多节点上。如果一个节点始终高于其他节点,这可能表明存在热分区,这是一个需要解决的单独问题。

    如果您的限制因素是总存储容量(例如已用内存),因为存储在缓存中的数据会自然增加,那么横向扩展将有助于增加集群的总存储容量。如果您有一个非常大的数据集,并且定期使用的密钥集很小,那么 Redis Labs 的 Redis on Flash 等技术可能适用。

    【讨论】: