【问题标题】:Using endpoints of AWS ElastiCache for Redis使用 AWS ElastiCache for Redis 的终端节点
【发布时间】:2022-04-29 21:43:35
【问题描述】:

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

想象一下我的缓存在启用集群模式和 3 个分片,每个分片有 2 个节点。我同意那么最好的方法是使用配置端点.或者,我可以列出所有节点的所有端点并让工作完成。

但是,即使我使用来自其中一个分片的单个节点的端点,我的缓存解决方案仍然有效。这对我来说不合适。我觉得即使它有效,从长远来看,这也可能会导致集群出现问题。当所有 6 个节点一起划分为 3 个分片但仅使用一个节点的端点时。我有以下问题。

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

或者

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

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

谢谢!

    标签: spring-data-redis amazon-elasticache redis-cluster aws-elasticache


    【解决方案1】:

    回答您的问题;

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

    2. 这是否由 AWS ElastiCache for Redis 自动处理? 有些

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

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

      这在这个答案中也得到了解释 - https://stackoverflow.com/a/72058580/6024431

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

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

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

      或者,如果您使用配置端点(或其他集群级别端点)而不是节点端点,则此问题最多只会对您的应用程序造成影响,可能持续 1-2 秒。

      干杯!

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2015-08-03
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多