ROCKETMQ

消息队列(二)如何保证消息队列的高可用?

一、什么是高可用性?对于高可用性,维基百科上是这么描述的:高可用性(英语:highavailability,缩写为HA),IT术语,指系统无中断地执行其功能的能力,代表系统的可用性程度。也就是说,我们不可能做到100%的可用性,所以用可用性度来表示高可用性,通常我们会用多少个9来表示高可用的目标,比如99.99%表示系统的年停机时间为8.76个小时,也就是99.99%的时间都是可用的。要做到高可用

消息队列高可用靠消除单点故障和数据镜像实现:RocketMQ 通过 NameServer 集群加 Broker 主从(Master-Slave)架构,Master 宕机重新选举;RabbitMQ 依赖镜像集群模式,每个节点保存完整队列数据;Kafka 采用 Leader-Follower 多副本,leader 宕机自动切换。工业界一般认为数据备份 3 份即 1 主 2 从较为安全。

  • 高可用需消除单点故障并具备故障检测恢复能力
  • NameServer 集群互不通信,每台持有完整路由信息
  • Broker 采用主从架构,Master 宕机重新选举继续写服务
  • RabbitMQ 仅镜像集群模式可保障高可用
  • 工业界一般认为数据备份 3 份即 1 主 2 从较安全

一、什么是高可用性?

对于高可用性,维基百科上是这么描述的:高可用性(英语:high availability,缩写为 HA),IT 术语,指系统无中断地执行其功能的能力,代表系统的可用性程度。

也就是说,我们不可能做到 100% 的可用性,所以用可用性度来表示高可用性,通常我们会用多少个 9 来表示高可用的目标,比如 99.99% 表示系统的年停机时间为 8.76 个小时,也就是 99.99% 的时间都是可用的。要做到高可用,我们至少要实现下面两点:

  • 对软硬件的冗余备份,以消除单点故障。

  • 对故障的检测和恢复。

二、如何保证消息队列的高可用

不同的消息队列,保证高可用的方式有一些区别,这里分别记录下各种消息队列的高可用实现方式。

1、RocketMQ 高可用

RocketMQ 进程我们一般称为 Broker,Broker 通常是集群部署的,每个 Broker 需要注册到 NameServer 中。从这里我们可以知道高可用有两个地方需要解决,一是 Broker 挂了怎么办,二是 NameServer 挂了怎么办。

对于 NameServer,它的高可用保障是集群化部署,各个 Na

原创不易,完成人机校验,阅读全文

常见问题

RocketMQ 的高可用是怎么实现的?

NameServer 集群化部署且互不通信,各自持有完整路由信息;Broker 采用 Master-Slave 主从架构,Master 宕机重新选举继续提供写服务,Slave 可读不可写。

RabbitMQ 哪种模式能保证高可用?

只有镜像集群模式:每个节点都存完整队列元数据和内容,单节点宕机不影响整体服务;缺点是不支持分布式,每台机器都保存一份完整数据。

消息队列数据备份几份比较安全?

工业界一般认为比较安全的备份数是 3 份,即至少 1 主 2 从,如 RocketMQ 的 Master-Slave、Kafka 的 Leader-Follower 都靠多副本防止数据丢失。

相关推荐