rabiitmq

Rabbitmq集群高可用

RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡。

Rabbit模式大概分为以下三种:单一模式、普通模式、镜像模式

单一模式:最简单的情况,非集群模式。

没什么好说的。

普通模式:默认的集群模式。

对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。

当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。

所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。

该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。

如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……

镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案

该模式解决了上述问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在consumer取数据时临时拉取。

该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。

所以在对可靠性要求较高的场合中适用(后面会详细介绍这种模式,目前我们搭建的环境属于该模式)

时间: 2024-11-08 02:24:23

rabiitmq的相关文章

rabiitmq消息模式二

消费端限流 什么是消费端的限流? 假设一个场景,首先,我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据! 消费端限流RabbitMQ提供的解决方案 RabbitMQ提供了一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于Consumer或者Channel设置Qos的值)未被确认前,不进行消费新的消息 Void BasicQos(uint pre

如何在Linux虚拟机中配置rabbitMQ

1.配置Erlang环境的linux虚拟机 配置的步骤直接上图: 2.rabiitMQ安装到linux 直接上图:      2.1安装MQ 2.2修改rabbitMQ的配置文件 2.3开启后台管理插件: 2.4 开启对外端口两个,一个时服务中心的,一个是程序访问的(或者直接关闭防火墙): 2.5启动服务器 2.6这样通过你的虚拟机IP+端口号15672就可以访问了 2.7添加用户: 2.8添加Virtual Host 2.9  在Virtual Host中添加有权限操作的用户 2.10配完之后

大数据扫盲

大数据扫盲 目录 大数据扫盲????1 0.1.????大数据处理流程????1 0.2.????大数据处理技术架构????2 1.????数据分区与路由????2 1.1.????二级映射机制????3 1.1.1.????哈希分区????3 1.1.2.????虚拟桶(virtual bucket)????3 1.1.3.????一致性哈希(consistent hashing)????4 1.2.????一致性????4 1.2.1.????CAP理论????4 1.2.2.????ACI

rabbitmq在storm中使用

storm中只能进行任务计算,不能保存中间结果,最后结果. 这就有一个需求,保存计算结果,最好还是分布式的,因为storm也是分布式,大数据计算. 流行的分布式计算中使用队列保存数据居多. kafka适合大量写入,但是稳定性差,项目采用的是rabbitmq. rabiitmq有2种模式: 1.集群模式(高稳定性). 2.主从模式(读速度快). 最少的是3台机器,3个实例. rabbit有长连接,短连接模式.在60秒时,要进行重连接.

Linux CentOS6.5下RabbitMQ集群部署配置

一.服务器与主机名列表 环境:2台Linux主机,主机名和IP如下,rabbitmq执行用户为rabbitmq,所属组为rabbitmq 172.16.192.145   ecs003 172.16.192.146   ecs004 二.在个节点服务器上做好hosts解析 #cat>>/etc/hosts< 172.16.192.145   ecs003 172.16.192.146   ecs004 EOF 三.在各节点安装Rabbitmq 1.安装epel源和rabbit-relan

Python一路走来 RabbitMQ

一:介绍:(induction) Rabbitmq 是一个消息中间件.他的思想就是:接收和发送消息.你可以把它想成一个邮政局.当你把你的邮件发送到邮箱的,首先你需要确认的是:邮政员先生能把你的邮件发送给你想发送的地方.在这个比喻中,rabbitmq就是一个邮箱.一个邮政局.一个邮递员. 在这里rabbitmq和传统邮政局的区别:rabbitmq不处理信纸.取而代之的是:接收.储存.发送二进制数的消息. rabbitmq和消息用如下专业术语: 生产者意思发送.A程序发送消息被称为:producer

python2.0_s12_day10_rabbitMQ使用介绍

RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除

分布式之消息队列复习精讲

引言 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识. 庆幸的是两位朋友都很有上进

为什么分布式一定要有消息队列?

0 为什么写这篇文章?博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识.1 为什么要使用消息队列分析:一