【发布时间】:2020-07-21 16:20:55
【问题描述】:
我想配置一个具有以下预期行为的集群:
- Сluster 必须是 HA(至少 3 个节点)。
- 我有队列,维护处理顺序很重要。消费者总是在一个线程中读取这个队列。如果他接受了消息,那么我们认为我们的任务完成了。
- 我不需要负载平衡 - 保持消息的顺序对我来说很重要。
- 我想避免脑裂。
- 如果我们有 3 个节点,那么如果其中 1 个节点发生故障,集群应该会继续工作。
我尝试了以下配置:
- 主+从+从+复制。
它有效。但是并没有解决脑裂的问题
- 主+从+从+Pinger
据我了解,这并不能 100% 保证检测到网络问题。我们也可能会出现脑裂。
- 3 对实时/备份节点。
这是解决了脑裂问题,但是我们如何避免以下情况:
- 生产者向队列中的 A 组发送消息(维护处理顺序很重要)
- A 组崩溃(所有节点的 1/3 2/6)
- A组日志中存储的消息
- 集群继续工作;
- 生产者向队列中的 B 组发送消息(维护处理顺序很重要)
- 消费者首先收到此消息;我们不支持所需的消息顺序。
我应该如何构建集群来解决这些问题?
【问题讨论】:
标签: activemq-artemis