gpt4 book ai didi

Redis primary/secondary 没有复制

转载 作者:IT王子 更新时间:2023-10-29 06:05:04 26 4
gpt4 key购买 nike

我是 Redis 新手。我在 Sentinel 上阅读了他们的文档和 Replication他们在其中讨论了副本如何尽可能地与主服务器保持同步,但如果主服务器在成功写入后发生故障,副本仍然有可能无法接收到该写入。如果 Sentinel 随后将此副本标记为新的主服务器,则该副本可能提供陈旧数据。

如果我不能承受失去一致性并且更喜欢一致性而不是可用性,我该如何关闭复制以便当 Sentinel 将新副本标记为主副本时,所有第一个请求都将是缓存未命中并且我的缓存可以慢慢预热而不是返回可能过时的数据?

另外,这是个好主意吗?还有其他好的选择吗?

最佳答案

I cannot afford to lose consistency and prefer it over availability

目前尚不清楚 Redis 自动故障转移是否适合您的应用程序。看起来每个客户端都需要仔细跟踪服务器可用性。

假设您有几个客户端,一个主节点 M1 和三个副本节点 R2、R3、R4。客户端 C5 向 M1 写入新的银行账户余额,M1 立即永久失效,R2 被提升为 master M2。 Master 在回复 client 之前没有从 replica 获得 acknowledge。在将回复发送到 C5 之前,服务器之间不会发生类似 paxos 的共识协议(protocol)。

C5 可以记住每个写入请求中嵌入的计数器/时间戳,忘记写入负载,并检测过时的读取。但是客户端 C6 不能,除非您在协议(protocol)之外快速可靠地提供此类数据。 Nathan Fritz观察到您的应用程序可能会先发出一个写入事件,然后再发出一个 PUBLISH 事件,并使用该事件的 LISTEN 监控多个副本,从而延迟向最终用户报告成功。考虑纳入 derecho如果需要虚拟同步的可靠 promise ,请进入您的应用程序。 Redis 的生产版本针对的是问题空间的不同部分,而不是您的主要兴趣。

关于Redis primary/secondary 没有复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47786488/

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