Zookeeper+activemq + leveldb 搭建消息集群消息丢失,为什么啊?

Activemq搭建集群共3台服务器分别为A,B,C,当A为Master时,并往A发消息,由于没有及时去消费,当A挂了,并B选举为Master时,之前发给A的消息全部丢失了,为什么配置了LevelDB高可用,消息还是会丢失了?
Queue和Topic都测试了,也设置了持久化,为什么挂掉的服务器消息没有复制到下一个选举的Master去?

3个回答

leveldb配置replicas=‘3’
Client发送给Master的持久化消息(包括ACK和事务),master首先在本地保存,然后立即同步(sync)给选定的(replicas/2)个slaves,只有当这些节点也同步成功后,此消息的交互才算结束;对于剩下的replicas个节点,master采用异步的方式(async)转发。这种设计要求,可以保证集群中消息的可靠性,只有当(replicas/2 + 1)个节点物理故障,才会有丢失消息的风险。通常replicas为3,这要求开发者需要至少部署3个broker实例。如果replicas过大,会严重影响master的吞吐能力,因为它在sync消息的过程中会消耗太多的时间

你发给a的消息备份了?

我搭建了2个集群做了负载,另外一台集群也能收到消息,但我去消费的时候 就是获取不到之前的消息

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐