gpt4 book ai didi

CacheManager.NET 的 Redis 集群配置

转载 作者:IT王子 更新时间:2023-10-29 06:13:27 25 4
gpt4 key购买 nike

从 CacheManager.NET 的角度来看,我有一个关于 Redis 连接参数的基本问题。如果我们的 Redis 集群有一个主节点和两个从节点,并且有哨兵进程的法定人数,我们是否应该提供指向哨兵进程或实际 Redis 服务器进程的 IP:PORT 组合。

https://seanmcgary.com/posts/how-to-build-a-fault-tolerant-redis-cluster-with-sentinel 中的建议,建议在建立连接之前向哨兵进程询问实际的主人。这可能与 Jedis 一致,后者提供 JedisSentinelPool 来进行初始查找。

本质上,我们想要的是读取(通过 CacheManager.NET)和写入的负载平衡应该转到集群的当前主节点。

最佳答案

CacheManager依赖StackExchange.Redis用于 Redis 实现。因此,无论此客户端库支持什么,CacheManager 也支持。

不幸的是,哨兵支持没有实现,有issues on github for years regarding that

也就是说,我用多主/从 + Sentinel 设置做了一些测试。将所有非哨兵节点作为端点添加到多路复用器配置中,它可以正常工作,因为 Redis 客户端知道如何处理多个主/从实例。

在切换到另一个主服务器的过程中,客户端可能会抛出无法写入只读从服务器等异常。 CacheManager 可能会重试这些调用,并且在短时间后,当领导者选举完成后,调用应该会通过。

但这不是 100% 稳定的,我不会将其投入生产,因为仍然缺少“官方”支持...

除了使用哨兵运行之外,您还可以在应该可以正常工作的集群模式下运行 Redis,或者在处理所有主/从内容的代理之后运行。

Twemproxy是一种选择。

我还是要add support for Twemproxy to CacheManager ,因为许多功能根本不可用,例如 Lua 脚本或获取服务器列表或刷新命令......这将在 1.0.2 中出现

希望对您有所帮助。

关于CacheManager.NET 的 Redis 集群配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641560/

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