rabbitmq集群

MQ常问的问题

夙愿已清 提交于 2019-12-19 16:42:07
1:为什么使用MQ? 主要是:解耦、异步、削峰。 (1)解耦:A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。如果使用 MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。如果新系统需要数据,直接从 MQ 里消费即可;如果某个系统不需要这条数据了,就取消对 MQ 消息的消费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况。 就是一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的,如果用 MQ 给它异步化解耦。 (2)异步:A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地写库要 3ms,BCD 三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 3 + 300 + 450 + 200 = 953ms,接近 1s,用户感觉搞个什么东西,慢死了慢死了。用户通过浏览器发起请求。如果使用 MQ,那么 A 系统连续发送 3 条消息到 MQ 队列中

[推荐] Windows 安装和配置 RabbitMQ 服务器详细图文步骤

时光毁灭记忆、已成空白 提交于 2019-12-19 16:29:46
文章目录 一、下载并安装 Erlang 安装 Erlang 设置 ERLANG_HOME 环境变量 验证Erlang是否安装成功: 二、下载并安装 RabbitMQ 安装 RabbitMQ 设置RABBITQM_SERVER环境变量 三、安装 rabbitmq_management 查看 RabbtitMQ 的所有插件 安装 rabbitmq_management 可视化界面插件 四、管理 rabbitmq_management 用户 查看 rabbitmq 已注册用户 创建一个用户 给用户root设置tag 五、利用Python实现测试 Producer 生产者代码 Consumer 消费者代码 RabbitMQ是一个在AMQP协议标准基础上完善的,可复用的消息中间件。 它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上; 具有可伸缩性(即集群服务),消息持久化的特性。 好文章 记得 收藏 + 点赞 + 关注 额 !!! ---- Nick.Peng 一、下载并安装 Erlang 因为 RabbitMQ 服务器是基于 Erlang 环境的,所以安装 RabbitMQ 服务器前必须先安装 Erlang; 安装 Erlang 时要注意安装的 RabbityMQ

Rabbit安装(单机及集群,阿里云)

不打扰是莪最后的温柔 提交于 2019-12-19 16:12:20
Rabbit安装(单机及集群,阿里云) 前言 虽然我并不是部署人员,但是自己私人测试环境的各类东东还是得自己安装的。 尤其在规模不大的公司,基本安装部署工作都是后端的份内之事。 那么最令人痛苦的,莫过于自己就是安装大佬教程走,但是就是过不去。尤其是初学者,解决问题的能力,还不足,往往就直接卡死了。 其实还有另外一个问题,那就是很多的教程,包括许多视频的教学,大多采用不真实的环境。要么是多台虚拟机实现集群,要么是一台线上服务器走天下。当然作者们也有着诸多考虑,有的是为了学员可以零成本的感受安装,另一方面学员大多都是学习知识,而不是为了实际应用(真的懂得,又不大需要这个东东)。最重要的是,学习阶段,大部分安装都是单机的,可以满足需求了。 但是,我发现在很多的扣扣群,微信群依然存在着那么一批正式环境安装遇到各类问题,苦求无门的朋友。在我回复之后,部分人提议我可以将这部分经验发出来,帮助更多的人。 所以有了这个系列,我会通过真实的阿里服务器集群(三台),搭建各个中间件的集群等。 最后,由于打马赛克太麻烦了。并且我之后可能会开放安装视频,所以有的IP什么的,我并不方便打马赛克。但是希望你们不要做坏事儿哈。 Rabbit安装概述 简介 RabbitMQ是一款消息中间件,其安装分为: 单机安装(只有一台服务器,上面只有一个RabbitMQ的Broker实例) 多主集群转发数据

linux安装RabbitMQ

白昼怎懂夜的黑 提交于 2019-12-18 09:58:17
一、RabbitMQ概念 RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用。 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息.具体过程如下: 从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消息队列,并且当消息队列收到消息之后,接收消息队列传来的消息,并且给予相应的处理.消息队列常用于分布式系统之间互相信息的传递. Rabbit模式大概分为以下三种:单一模式、普通模式、镜像模式 单一模式: 最简单的情况,非集群模式,即单实例服务。 普通模式: 默认的集群模式。 queue创建之后,如果没有其它policy,则queue就会按照普通模式集群。对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构,但队列的元数据仅保存有一份,即创建该队列的rabbitmq节点(A节点),当A节点宕机,你可以去其B节点查看,./rabbitmqctl list_queues

Docker搭建RabbitMQ集群

a 夏天 提交于 2019-12-17 07:16:21
Docker搭建RabbitMQ集群 Docker安装 见 官网 RabbitMQ镜像下载及配置 见 此博文 集群搭建 首先,我们需要启动运行RabbitMQ docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq rabbitmq:latest 参数说明: ​ -d:后台进程运行 ​ --hostname:主机名称 ​ -p:端口映射 ​ 15672:http访问端口 ​ 5672:AMQP访问端口 ​ -v:文件映射 ​ --name:容器名称 启动多个RabbitMQ docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq1 rabbitmq:latest docker run -d -

CentOS7.X环境下基于docker安装部署RabbitMQ集群

丶灬走出姿态 提交于 2019-12-17 06:58:33
在之前的文章中我已经介绍过使用源码来安装RabbitMQ(可参考文章https://blog.51cto.com/8355320/2445237 ),安装过程也比较繁琐,今天因环境需求,需搭建RabbitMQ集群,由于业务也都采取docker容器方式部署,因此也研究将RabbitMQ采用docker来部署,本文特将部署步骤记录下来: 备注:docker的安装部署,这里就不在添加部署过程,可参考文章https://blog.51cto.com/8355320/2438741 搭建环境: 操作系统:CentOS7.6 内存大小:8GB 硬盘:200G 1、IP地址规划 主机名 IP地址 RabbitMQ01 192.168.8.131 RabbitMQ02 192.168.8.132 RabbitMQ03 192.168.8.133 RabbitMQ04 192.168.8.134 2、RabbitMQ集群安装 (1)四个节点同时运行,下载RabbitMQ镜像 [root@RabbitMQ01~]# docker pull rabbitmq:3-management (2)四个节点分别运行,启动RabbitMQ容器 [root@RabbitMQ01~]# docker run -d --restart=always --hostname rabbit01 --name rabbit

[架构选型 】 全面了解Kafka和RabbitMQ选型(1) -两种不同的消息传递方式

断了今生、忘了曾经 提交于 2019-12-16 10:45:41
转载 https://cloud.tencent.com/developer/article/1399226 首席架构师智库 发表于 智能计算时代 订阅 382 在这篇文章中: RabbitMQ Apache Kafka 结论 在这一部分中,我们将探讨RabbitMQ和Apache Kafka以及它们的消息传递方法。每种技术在设计的每个方面都做出了截然不同的决定,每种方面都有优点和缺点。我们不会在这一部分得出任何有力的结论,而是将其视为技术的入门,以便我们可以深入探讨该系列的后续部分。 RabbitMQ RabbitMQ是一个分布式 消息队列 系统。分布式,因为它通常作为节点集群运行,其中队列分布在节点上,并可选择复制以实现容错和高可用性。它原生地实现了AMQP 0.9.1,并通过插件提供其他协议,如STOMP,MQTT和HTTP。 RabbitMQ同时采用经典和新颖方式。从某种意义上来说,它是面向消息队列的经典,并且具有高度灵活的路由功能。正是这种路由功能才是其杀手级功能。构建快速,可扩展,可靠的分布式消息传递系统本身就是一项成就,但消息路由功能使其在众多消息传递技术中脱颖而出。 交换机(exchanges)和队列 超简化概述: 发布者向交换机(exchanges)发送消息 将消息路由到队列和其他交换机(exchanges) RabbitMQ在收到消息时向发布者发送确认

Kafka、RabbitMQ、RocketMQ、ActiveMQ

心已入冬 提交于 2019-12-15 05:27:06
一、资料文档 Kafka:中。有kafka作者自己写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少。没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述。activemq:多。没有专门写activemq的书,网上资料多。 二、开发语言 Kafka:Scala rabbitmq:Erlang zeromq:c rocketmq:java activemq:java 三、支持的协议 Kafka:自己定义的一套…(基于TCP) rabbitmq:AMQP zeromq:TCP、UDP rocketmq:自己定义的一套… activemq:OpenWire、STOMP、REST、XMPP、AMQP 四、消息存储 Kafka:内存、磁盘、数据库。支持大量堆积。 kafka的最小存储单元是分区,一个topic包含多个分区,kafka创建主题时,这些分区会被分配在多个服务器上,通常一个broker一台服务器。分区首领会均匀地分布在不同的服务器上,分区副本也会均匀的分布在不同的服务器上,确保负载均衡和高可用性,当新的broker加入集群的时候,部分副本会被移动到新的broker上。根据配置文件中的目录清单

二、RabbitMQ脑裂解决方案

青春壹個敷衍的年華 提交于 2019-12-15 04:19:34
一、 背景 目前生产环境RabbitMQ集群分布在铜牛机房和马驹桥机房,其中铜牛机房两个节点,马驹桥机房两个节点; 当铜牛和马驹桥机房之间网络中断或者有较大波动时,RabbitMQ集群会发生网络分区(脑裂),分成两个分区,当网络恢复时,网络分区的状态还是会保持,除非采取一些措施去解决,造成消息消费异常等问题。 二、 网络分区处理方式 处理网络分区的方式有两种: 1.手动处理网络分区:挑选一个信任的分区,重启其他分区的节点; 2.自动处理网络分区 RabbitMQ提供了4种处理网络分区的方式,在rabbitmq.config中配置cluster_partition_handling参数即可,分别为:ignore、pause_minority、pause_if_all_down、autoheal ignore :默认是ignore,ignore的配置是当网络分区的时候,RabbitMQ不会自动做任何处理,即需要手动处理。 pause_minority :当发生网络分区时,集群中的节点在观察到某些节点down掉时,会自动检测其自身是否处于少数派(小于或者等于集群中一半的节点数)。少数派中的节点在分区发生时会自动关闭(类似于执行了rabbitmqctl stop_app命令),当分区结束时又会启动。处于关闭的节点会每秒检测一次是否可连通到剩余集群中,如果可以则启动自身的应用

三、四种集群模式

痴心易碎 提交于 2019-12-15 02:37:56
一、主备模式 也称为 Warren (兔子窝) 模式。实现 rabbitMQ 的高可用集群,一般在并发和数据量不高的情况下,这种模式非常的好用且简单。 也就是一个主/备方案,主节点提供读写,备用节点不提供读写。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主节点恢复运行后,原来的主节点就变成备用节点,和 activeMQ 利用 zookeeper 做主/备一样,也可以一主多备。 HaProxy 配置: 注意了,上面的 rabbitMQ 集群节点配置 # inter 每隔 5 秒对 mq 集群做健康检查, 2 次正确证明服务可用,2 次失败证明服务器不可用,并且配置主备机制 二、远程模式 远程模式可以实现双活的一种模式,简称 shovel 模式,所谓的 shovel 就是把消息进行不同数据中心的复制工作,可以跨地域的让两个 MQ 集群互联,远距离通信和复制。 Shovel 就是我们可以把消息进行数据中心的复制工作,我们可以跨地域的让两个 MQ 集群互联。 如图所示,有两个异地的 MQ 集群(可以是更多的集群),当用户在地区 1 这里下单了,系统发消息到 1 区的 MQ 服务器,发现 MQ 服务已超过设定的阈值,负载过高,这条消息就会被转到 地区 2 的 MQ 服务器上,由 2 区的去执行后面的业务逻辑,相当于分摊我们的服务压力。 在使用了