使用AWS ElastiCache的Redis端点



我将AWS ElastiCache用于Redis,作为spring-boot应用程序的缓存解决方案。我正在使用spring-boot-starter-data-redisjedis客户端连接我的缓存。

想象一下,我在集群模式下启用了缓存,并且有3个碎片,每个碎片有2个节点。我同意,那么最好的方法是使用配置端点。或者,我可以列出所有节点的所有端点,然后完成任务。

然而,即使我使用其中一个碎片中的单个节点的端点,我的缓存解决方案也能工作。这在我看来不太合适。我觉得即使它有效,从长远来看,这可能会导致集群出现问题。当所有6个节点都被分割成3个碎片,但只使用一个节点的端点时。我有以下问题。

使用一个节点的端点是否会在集群中造成不平衡?

这是由AWS ElastiCacheRedis自动处理的吗?

如果我只使用一个节点的端点,这是否意味着其他节点永远不会被使用?

谢谢!

回答您的问题;

  1. 使用一个节点的端点是否会在集群中造成不平衡?无

  2. 这是由AWS ElastiCache for Redis自动处理的吗?某种

  3. 如果我只使用一个节点的端点,这是否意味着其他节点永远不会被使用?否。所有节点都在使用中。

这就是启用群集模式的工作方式。在您的案例中,您有3个碎片,这意味着您的所有插槽(存储键值数据的位置(都被划分为3个子集群,即碎片。

这个答案也解释了这一点——https://stackoverflow.com/a/72058580/6024431

因此,从本质上讲,您的节点足够智能,可以将您的请求重定向到具有需要存储数据的密钥槽的节点。因此,没有失衡。Redis为您处理重定向。

现在,在使用节点端点时,您将面临其他问题。Elasticache运行在云端(本质上是AWS硬件(。所有硬件都面临问题。您有3个主副本(1p、2p、3p(和3个副本(1r、2r、3r(。因此,如果主服务器由于硬件问题(比如1p(而停机,则复制副本将升级为群集的新主服务器(1r(。现在的问题是,您的应用程序直接连接到1p,而1p现在已降级为副本。因此,所有的WRITE操作都将失败。

无论何时发生这种情况,您都必须手动更改应用程序代码。

或者,如果您使用配置端点(或其他集群级端点(而不是节点端点,那么这个问题对您的应用程序来说最多只是一个小问题,可能会持续1-2秒。

干杯!

相关内容

  • 没有找到相关文章

最新更新