gpt4 book ai didi

java - 我应该从 Redis Cluster slave 读取数据吗?

转载 作者:IT王子 更新时间:2023-10-29 05:57:48 28 4
gpt4 key购买 nike

我们有一个用作缓存的 Redis 集群配置。现在,由于写入主从(与其他数据库)的正常模式,我们正在尝试对 Redis 集群做同样的事情。
经过一些调查,我们发现没有任何 Redis 客户端(在 java 中)像 redisson、jedis 和 Spring Data Redis 支持这个。我们似乎已经找到了一些解决方法,但它看起来很丑陋,现在我在想这是否值得?

这是我的用例

  • 大约最高 QPS:1000
  • 有效负载大小:最大 1 MB(压缩后)
  • 集群大小为 3 个主机,每个主机有 2 个从机(相当高规范的机器)
  • 可怕的部分:这个集群的实际网络带宽是 Max 1GB(1 GB 单独用于集群内通话)

考虑到这一点,我有以下问题:

  • 它(从 slave 读取)会以任何方式帮助我吗?
  • 是否有任何我应该避免的坑洞(任何特殊的服务器端配置)?
  • 狭窄的道路会成为问题吗?
  • 是否有标准的方法(库/客户端)可以正确地做到这一点

非常感谢任何帮助(博客、案例研究、建议)。

最佳答案

您对 slave reads 的期望是什么?

这是可能的 usual pattern从奴隶那里读取,但它带有一组效果。

  1. 从读取引入陈旧的数据读取
  2. 从多个来源读取允许控制读取源。这在处理可用性问题(例如,主服务器已关闭,因此您可以进行从属读取以保持可用性)或延迟问题(例如,使用延迟最低的节点进行读取)时很有用
  3. 您可以使用从读取来分配服务器负载。虽然这是可能的,但 Redis 需要过多的负载才能看到一些效果

引自http://redis.io/topics/cluster-spec#scaling-reads-using-slave-nodes :

Normally slave nodes will redirect clients to the authoritative master for the hash slot involved in a given command, however, clients can use slaves in order to scale reads using the READONLY command.

READONLY tells a Redis Cluster slave node that the client is ok reading possibly stale data and is not interested in running write queries.

Jedis 没有内置支持从主节点以外的其他节点读取数据。 Redissonlettuce为 Master 和 Slave 读取提供内置支持。 Redisson 在内部使用平衡器(随机、循环、加权)来分配操作,lettuce 提供了一种偏好驱动(Master only、Master preferred、slave、nearest)的方法。

Spring Data Redis 构建在 Jedis 和 lettuce 之上,但不提供从 slave 读取的通用功能。

一个好的经验法则是使用从站是为了可用性,而不是为了性能。

关于java - 我应该从 Redis Cluster slave 读取数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498293/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com