rabbitmq出现了以下问题,作为一种解决方法,我们每个周末都会手动重启服务器。
Network partition detected
Mnesia reports that this RabbitMQ cluster has experienced a network partition. This is a dangerous situation. RabbitMQ clusters should not be installed on networks which can experience partitions.
我们已经浏览了其他关于这个主题的热门帖子,比如这里和这里
我们的网络不太可靠,偶尔会出现一些小问题,但当它出现时,我会期望4节点rabbitmq集群中的1个加入集群的其余部分,就像在相同服务器上安装4个tomcat节点一样。
虽然单个分区上的节点继续独立运行,但这似乎不是从一个节点的故障中优雅地恢复。
我们没有很好的运气使用任何 rabbitmqctl
命令,如 rabbitmqctl cluster_status
-它曾经偶尔导致rabbitmq进程挂起,这需要sudo kill来挂起rabbitmq进程。
我们正在评估迁移到kafka或任何其他能够很好地处理消息分区的消息代理
任何关于不需要手动重启或Kafka处理这种情况的能力的想法都是非常感谢的
1条答案
按热度按时间axkjgtzd1#
我认为带有复制的kafka应该能够非常容易地处理网络分区,只要分区的代理数低于主题的复制因子(也就是说,消费者和生产者对于他们正在操作的主题总是可以达到至少一个代理)。
在zookeeper发现分区并将信息传播给生产者和消费者时,为了避免客户机中的反压力,您可能需要设置短的zk heartbeating(是的,您需要zk,而且还需要一个集群,因为您绝对不希望对整个zk集群进行分区)。
公平的警告:使用kafka代理集群将删除消息队列的fifo特性,如果您期望生产者生成的消息和消费者读取的消息的顺序相同,这可能会非常令人不安,这与rabbitmq是一样的。