当前位置: 首页 > 知识库问答 >
问题:

AWS Redis-群集模式已启用/禁用。它如何分配流量?

郭凡
2023-03-14

我们最近选择在应用程序中使用Amazon elastic cache redis,但在查阅文档时,有些事情还不清楚。

1) 禁用群集模式的Redis群集在群集的AWS控制台中有主endpoint,当我们使用jedis客户端连接到主endpoint时,该主endpoint是否将读取流量分配给群集的读取副本?或者应用程序必须显式连接才能读取群集中的副本?绝地武士的客户

2) 为redis启用的群集模式在redis的AWS控制台中具有配置endpoint,因此,当我们使用客户端连接到此配置endpoint时,配置endpoint是否会在群集中的碎片之间分配写入和读取流量?或者应用程序必须使用通过碎片主endpoint的JedisCluster对象显式连接到每个碎片?

3) 对于为Redis启用的集群模式,弹性缓存如何在碎片之间分割密钥?

共有2个答案

濮阳振
2023-03-14

看起来,在群集感知客户端中,如果客户端足够智能,它可以使用配置endpoint来发现所有主/从,然后由您来连接和维护它们,这样群集感知客户端就有了一些选项:

  1. 在任何种子节点上调用集群时隙命令,在这种情况下,协调器节点发现整个拓扑https://redis.io/commands/cluster-slots
  2. 调用任何endpoint,如果他们从错误的节点中查询或选择不属于该节点的无效哈希,则返回MOVED响应:https://redis.io/topics/cluster-spec客户端可能会使用重定向错误重定向到其他节点-MOVED和-ASK。理论上,客户端可以自由地向集群中的所有节点发送请求,如果需要,可以重定向,因此客户端不需要保持集群的状态。然而,能够缓存键和节点之间映射的客户端可以以一种明智的方式提高性能

一旦发现了Topology,即插槽所有权信息(关于哪个主机拥有哪个插槽分区),客户机就可以选择一个标准的CRC哈希来查找插槽,并直接转到该节点。

晋俊贤
2023-03-14

刚刚从链接中注意到:https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Endpoints.html,看起来您可以使用他们的https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Endpoints.html#Endpoints.Find.CLI.ReplGroups并发现实际的endpoint,并将其视为常规分片/副本节点,或者使用他们的endpoint:

Redis standalone node,将节点的endpoint用于读写操作。

Redis(群集模式禁用)群集,将主endpoint用于所有写入操作。使用读卡器endpoint在所有读取副本之间均匀地分割到endpoint的传入连接。将各个节点endpoint用于读取操作(在API/CLI中,这些endpoint称为读取endpoint)。块引用

因此,看起来主endpoint将充当代理,读卡器endpoint也会这样做,再加上一些负载平衡,包括基于密钥将密钥路由到正确的切分。读取客户端将只连接到一个endpoint。

Redis(已启用群集模式)群集,对所有操作使用群集的配置终结点。您必须使用支持Redis群集(Redis 3.2)的客户端。您仍然可以从单个节点endpoint读取(在API/CLI中,这些endpoint称为读取endpoint)。

与之前相同,但使用单个endpoint进行读取和写入。这样做可能是为了让可用性和故障透明,无论发生什么情况。

 类似资料:
  • 问题内容: 我的目标是使用的Android 4.0中的REST Web服务。除非我尝试执行某些操作,否则此方法效果很好。这是相关的代码部分: 这将引发以下异常: 通过调试,我意识到通过的输出流是类型的,并且通过挖掘Android源代码,我发现如果需要重试请求(无论出于何种原因),它就会抛出上述异常,因为它指出了这一点。是 不是 用它想在那里。 现在的问题是:如何使HttpsURLConnectio

  • Redis streams是否受益于群集模式?假设您有10个流,它们是分布在集群中还是全部分布在同一个节点上?我计划使用Redis streams实现真正的高吞吐量(每秒200万条消息),因此我担心Redis streams在这种规模下的性能。 如果Redis streams不能在集群模式下进行开箱即用的扩展,那么任何关于水平扩展Redis streams的指导都会非常棒。

  • 我已经创建了一个启用RBAC的Azure Kubernetes集群。 请帮助我知道我对RBAC的理解是错误的还是我在这里做错了什么!!

  • 我有1个VPC——在1个EC2实例(amazon ami)和1个Redis(支持群集模式)下,使用Auth(密码)和对所有IP:端口开放的安全组(仅用于测试)——设置非常简单。 telnet在我的EC2实例(配置endpoint)的6379端口工作 无法使用Redis CLI连接到Redis服务器-无论是配置endpoint还是节点endpoint都无关紧要;使用v.5.0.4版本的Redis C

  • 我想从节点endpoint的角度来理解故障转移案例https://forums.aws.amazon.com/,案件的IP地址 主故障切换和副本升级 副本故障切换 该配置被禁用为群集模式:只有1个碎片(1个主碎片和2个副本)启用了多个AZ。比如- 问题- 节点endpoint是DNS名称吗? 已在IP地址级别或节点endpoint级别处理故障转移? 故障转移后,主endpoint可以指向不同的节点

  • 根据这份文件: 然而,与Redis(群集模式禁用)群集不同,当前,一旦创建了Redis(群集模式启用)群集,其结构就不能以任何方式改变;不能添加或删除节点或碎片。如果需要添加或删除节点,或更改节点类型,则必须重新创建集群。(来源) 然而,本文档似乎描述了向集群添加碎片的过程: 通过使用Amazon ElastiCache for Redis 3.2.10版本的在线重新划分和分片重新平衡,您可以动态