use*_*450 2 high-availability redis
目前我正在开发分布式测试执行和报告系统.我打算使用Redis PUB/SUB作为消息队列和消息分发系统.
我是Redis的新手,所以我试着尽可能多地阅读文档并玩弄它.其中一个最重要的主题是高可用性.正如我所说,我不是专家,但我知道可能的选择 - 使用Sentinel,复制,群集等.
我不清楚Pub/Sub功能和HA选项是如何相互关联的.使用Redis构建可靠的消息传递系统的最佳做法是什么?可靠的我的意思是,如果我的Redis消息代理已关闭,那么应该有某种应该能够接管这个角色的备份节点(奴隶?).
是否有纯粹的服务器端解决方案?或者我是否需要在Redis客户端周围创建一个智能包装来处理这个问题?Sentinel驱动的设置会帮助我吗?
在Redis中使用故障转移执行pub sub意味着考虑客户端中的其他因素.要理解的关键是订阅是每个连接.如果您订阅了节点上的频道但它失败了,您将需要处理重新连接并重新订阅.因为订阅是在连接级别完成的,所以它不是可以复制的东西.
关于它如何工作以及你可以期待看到的细节,以及它周围的方法,请参阅我今年早些时候在https://objectrocket.com/blog/how-to/reliable-pubsub-and-上发表的一篇文章.阻挡的命令-期间-redis的-故障转移
您可以通过订阅从属并发布到主服务器来降低风险表面,但是您需要拥有不可升级的从服务器来订阅并且仍然需要处理丢失的服务器 - 丢失给定的服务器的机会也是如此之多因为有一个主人.