根据Broker集群中各个节点间关系的不同,Broker集群可以分为以下几类:
只有一个broker。这种方式也只能是在测试时使用,生产环境下不能使用,因为存在单点问题。
broker 集群仅由多个 master 构成,不存在 Slave。同一 Topic 的各个 Oueue 会分布在各个 master节点上。
优点 :
配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘条不丢),性能最高;
缺点 :
单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅 (不可消费),消息实时性会受到影响。
Broker 集群由多个 master 构成,每个 master 又配置了多个 slave (在配置了RAID磁盘阵列的情况下,一master一般配置一个slave即可)。master 与 slave的关系是主备关系,即 master 负责处理消息的读写请求,而 slave 仅负责消息的备份与 master 宕机后的角色切换。
异步复制即前面所讲的复制策略中的异步复制策略,即消息写入master成功后,maste r立即向 producer 返回成功 ACK,无需等待 slave 同步数据成功。
该模式的最大特点之一是,当 master 宕机后 slave 能够自动切换为 master。不过由于 slave 从 master 的同步具有短暂的延迟(毫秒级),所以当 master 宕机后,这种异步复制方式可能会存在少量消息的丢失问题。
该模式是多 Master 多 slave 模式的同步复制实现。所谓同步双写,指的是消息写入 master 成功后 master 会等待 slave 同步数据成功后才向producer 返回成功 ACK,即 master 与 slave 都要写入成功后才会返回成功 ACK,也即双写。
该模式与异步复制模式相比,优点是消息的安全性更高,不存在消息丢失的情况。但单个消息的RT略高,从而导致性能要略低 (大约低10%)。
该模式存在一个大的问题: 对于目前的版本,Master宕机后,Slave 不能自动切换到 Master。