童鞋们你们知道rabbitMQ和kafka高可用性的区别吗

87 阅读1分钟

rabbitMQ

1. 单机

2. 普通集群

假设有三台机器,其中一台A有元数据和实际数据,另外两台B和C只有元数据。如果消费者监听的是B和C,消费时则需要去A拉取数据,如果监听的是A则可以直接拉取数据。

优点:

只能提高消费者的吞吐量

缺点:

1:A挂掉则整个系统都不行,没有高可用性

2:集群内部产生大量的数据传输

3. 镜像集群

假设有三台机器,每台机器的实例都会有元数据和实际数据,当有生产者生产消息时,会把这个消息同步到整个集群里的实例

优点:任意一个实例挂掉,不影响其他的实例,每个实例可以单独工作

缺点:不是分布式的,不易于扩展,每个实例都包含所有的数据

kafka

假设一个top有三个partition,分别分布于三台机器上,每台机器的数据又有一个副本

相同的副本之间会推举出一个leader,其他为follower,只有leader有读写功能,leader当中的数据会同步给follower

截图.png