内容简介:之前rabbitmq学习与实践分享(2)中主要谈到了rabbitmq提供的一些手段和机制来从生产端,消费端以及broker端保证消息机制的可靠性。但是没有考虑到单点故障以及broker如何抗住高负载,来保证消息中间件的高可用性。本文主要结合自己的理解谈论这个问题。rabbitmq 提供高可用性的机制主要有以下2种手段:rabbitmq 的集群有以下几个特点:
之前rabbitmq学习与实践分享(2)中主要谈到了rabbitmq提供的一些手段和机制来从生产端,消费端以及broker端保证消息机制的可靠性。但是没有考虑到单点故障以及broker如何抗住高负载,来保证消息中间件的高可用性。本文主要结合自己的理解谈论这个问题。
rabbitmq 提供高可用性的机制主要有以下2种手段:
- 集群
- 镜像队列
二.rabbitmq 集群:
rabbitmq 的集群有以下几个特点:
- rabbitmq 集群的所有节点都会备份元数据信息,但是不会备份消息。备份的元数据信息包括:
- 1)队列的元数据:比如队列的名称,属性;
- 2)交换器:比如交换器的名称,属性;
- 3)绑定关系的元数据:交换器之间的绑定关系,以及交换器与队列之间的绑定关系;
-
- vhost 的元数据;
rabbitmq 集群中创建队列,只会在单个节点,而不是所有节点上创建队列的进程并包含队列的完整消息(元数据,状态,内容)。创建队列进程的节点称为宿主节点,该节点知道队列的所有信息,其他的节点仅仅知道队列的元数据信息以及包含指向这个宿主节点的指针。 所以如果这个宿主节点因某种原因出现宕机时,该节点中的消息会丢失。当然后面介绍的镜像队列可以解决这种情况出现的消息丢失问题。
rabbitmq 集群的搭建:
rabbitmq集群的搭建过程偏运维,此处就不做介绍了,涉及到相关的命令如下:
具体命令的用法以及相关含义,后面章节再单独介绍。
rabbitmq集群节点的类型:
- 内存节点:将所有队列,交换器,绑定关系,vhost的用户,权限等等元数据信息都存储在内存里。
- 磁盘节点: 指上述元数据信息存储在磁盘里。 为了确保节点重启之后,元数据信息不会丢失,单节点的集群节点只能是磁盘节点,多节点的集群中必须有一个节点是磁盘节点。 如图:上面disc 表示是磁盘节点;ram 表示是内存节点; 如果有新的队列,或者交换器创建的时候,需要先通知磁盘节点进行保存,如果一个集群中只有一个磁盘节点,并且不幸宕机了,那么该集群只能收发消息,不能进行任何新的变更操作(比如创建新的队列)了。
镜像队列
镜像队列的机制主要作用就是通过冗余队列中的消息,来避免集群中宿主队列宕机时导致的消息丢失问题。引入镜像队列机制,通过将队列镜像到其他的broker节点上,对一个宿主队列(master)配置多个slave节点,从而提升可用性。
针对镜像队列而言:所有的操作(除了消息发送)都是先应用到队列的主节点,然后通过主节点传播到镜像队列的从节点的,当主节点宕机时,最老的从节点会自动晋升成为新的主节点. 镜像队列的配置是通过policy 设置的: rabbitmqctl set_policy -p vhost [ --priority priority ] [--apply-to apply-to] name pattern {definition} 复制代码
参数简要介绍:pattern 指要匹配的队列模式 definition 包含3个部分:
- ha-mode :指定镜像队列的模式,有以下几个取值:all 表示在所有的节点上进行镜像;exactly 表示在指定数量的节点上进行镜像,具体几个节点通过ha-params参数指定;nodes 指定节点名称列表。
- ha-params:指定不同的ha-params 用到的参数;
- ha-sync-mode:镜像同步模式,分为automatic(自动)和手动(manual). 手动的操作可以通过rabbitmqctl sync_queue 命令完成。
小结
本文主要简要的介绍了一下rabbitmq 如何提升可用性来保证消息不丢失的。但是在实际生产环境,面对突发的流量的时候,rabbitmq 如何能扛住呢,有没有什么机制可以实现呢,比如流控? 这块内容在下一小节继续分享。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- (全栈学习实践)四、docker搭建redis主从实践
- 深度学习最佳实践 原 荐
- 评书:《美团机器学习实践》
- 项目实践-Fragment学习(一)
- golang 容器的学习与实践
- Service Worker学习与实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
结网@改变世界的互联网产品经理
王坚 / 人民邮电出版社 / 2013-5-1 / 69.00元
《结网@改变世界的互联网产品经理(修订版)》以创建、发布、推广互联网产品为主线,描述了互联网产品经理的工作内容,以及应对每一部分工作所需的方法和工具。产品经理的工作是围绕用户及具体任务展开的,《结网@改变世界的互联网产品经理(修订版)》给出的丰富案例以及透彻的分析道出了从发现用户到最终满足用户这一过程背后的玄机。新版修改了之前版本中不成熟的地方,强化了章节之间的衔接,解决了前两版中部分章节过于孤立......一起来看看 《结网@改变世界的互联网产品经理》 这本书的介绍吧!