【发布时间】:2020-01-31 03:40:20
【问题描述】:
- 我有多个监控服务
MonSvc(1..N)检测更改并发布这些更改。 - 我有多个服务在这些更新上运行(例如
LoggerSvc&Enforcement-Svc)注意:消费者服务需要所有更新,不能错过更新。
我正在使用 Redis 作为我的协调器(代理),但我对如何实现它有点困惑。
选项 1:每个 MonSvc# 将更新发布到 Redis Channel,同时监控服务订阅
这种设计失败是因为如果消费者服务出现故障,它可能会错过以后无法检索的更新
选项 2:每个 MonSvc# Enqueue 更新到 Redis List(Queue),而 Consumers 从队列中获取元素
消费者不会获取所有更新,但每个更新都会获得部分列表。
方案三:每个 MonSvc# Enqueue 更新到多个 Redis Lists(Queues)(队列/消费者),而消费者从队列中取元素
这工作正常,但似乎扩展性很差(MonSvc# 需要知道它发布给谁 + 多少)
如何使用 Redis 实现 “多发布者 >> 多消费者队列”(或者我应该使用更强大的代理?)
【问题讨论】:
标签: redis queue microservices message-queue