Redis PUB / SUB和高可用性

时间:2016-08-08 14:42:39

标签: redis high-availability

目前,我正在开发分布式测试执行和报告系统。我打算使用Redis PUB / SUB作为消息队列和消息分发系统。

我是Redis的新手,所以我试着阅读尽可能多的文档并玩弄它。其中一个最重要的主题是高可用性。正如我所说,我不是专家,但我知道可能的选择 - 使用Sentinel,复制,群集等。

我不清楚Pub / Sub功能和HA选项是如何相互关联的。使用Redis构建可靠的消息传递系统的最佳做法是什么?可靠的我的意思是,如果我的Redis消息代理已经关闭,应该有某种备份节点(奴隶?)应该能够接管这个角色。

是否有纯粹的服务器端解决方案?或者我是否需要在Redis客户端周围创建一个智能包装来处理这个问题? Sentinel驱动的设置会帮助我吗?

2 个答案:

答案 0 :(得分:6)

在Redis中使用故障转移执行pub sub意味着考虑客户端中的其他因素。要理解的关键是订阅是每个连接。如果您订阅了节点上的频道但它失败了,您将需要处理重新连接并重新订阅。因为订阅是在连接级别完成的,所以它不是可以复制的东西。

关于它如何运作以及您可以期待看到的细节及其解决方法,请参阅我今年早些时候在https://objectrocket.com/blog/how-to/reliable-pubsub-and-blocking-commands-during-redis-failovers

撰写的帖子。

您可以通过订阅奴隶并向主人发布来降低风险表面,但是您需要让不可升级的奴隶订阅并仍然需要处理失去奴隶 - 失去的机会也很多一个给定的奴隶,因为有一个主人。

答案 1 :(得分:1)

IMO,PUB / SUB不是一个好选择,可能是disque(来自antirez,Redis的作者)更合适:

  

Disque,一种内存中的分布式作业队列