redis集群环境
生产者有多个 消费者有多个 两边随时可增加
redis上消息只会被一个消费者消费,不会有多个订阅者消费同一个消息,简单一对一
解决:
消费者崩溃问题:RPOPLPUSH保证不会由于程序问题导致消息不丢失。那么这部分中间状态数据如何处理。考虑集群copy到目标队列名称需要根据消费者程序部署unique名,可结合zk来做,当出现程序崩溃,该队列会自动成为可消费队列,消费完成后会被干掉
为了利用集群,多个队列写,生产者只负责轮训写,消费者轮训读
生产者崩溃问题,同样有成效记录来补偿中间状态。类似消费者来决定中间状态值的改变。
考虑redis内存问题,生产者根据队列情况进行阀值控制,避免消费太慢,写入太快