rabbitmq集群

Docker - 搭建rabbitmq 集群

眉间皱痕 提交于 2020-02-27 19:02:41
文章目录 Docker - 搭建rabbitmq 集群 1、首先,拉取rabbitmq 的镜像 2、然后运行3个rabbitmq 的实例 3、然后我们构建集群,并同步时区 4、如何删除容器 5、打开防火墙,或者端口控制器进行端口放行,检测运行状态 6、通过nginx 做负载均衡 Docker - 搭建rabbitmq 集群 1、首先,拉取rabbitmq 的镜像 我们以3.8.2 版本为例 docker pull rabbitmq:3.8.2-management 2、然后运行3个rabbitmq 的实例 # 运行镜像,集群模式 docker run \ --name rabbitmq-1 \ --hostname = rabbitmq-1 \ --restart = always \ -d \ -e RABBITMQ_DEFAULT_USER = rabbitmq \ -e RABBITMQ_DEFAULT_PASS = OnlinezuozuoCreated.rabbitmq.test.password \ -e RABBITMQ_ERLANG_COOKIE = 'oNYE40jp2YbuXfWKd9vFu1VZiic8' \ -v /etc/docker/volume/rabbitmqcluster/rabbitmq-1:/var/lib/rabbitmq \ -p

RabbitMQ学习笔记-RabbitMQ简介

跟風遠走 提交于 2020-02-27 02:46:31
导语   RabbitMQ 是现在比较热门的消息中间件,在互联网行业和传统行业都有大量地使用。消息中间件有很多,RabbitMQ在高可靠、易扩展、高可用等方面都有很大的优势。在学习RabbitMQ的过程中都有所提升。 文章目录 消息中间件介绍 消息中间件作用 解耦 存储 扩展性 流量削峰 可恢复 顺序保证 缓冲 异步通信 RabbitMQ 起源 总结 消息中间件介绍   消息(Message) 在应用之前传递数据,消息可以是一个字符串,也可以是JSON数据,XML数据等等,当然也可以是复杂的对象。对于消息这个是一个抽象的定义,在任何应用之间的数据传递都可以称为消息,例如QQ消息,微信消息等等。   消息队列中间件(Message Queue Middleware,简称MQM)是指高效的传递机制进行平台之间的与平台无关的数据交流,基于数据通信的方式来进行分布式系统的集成。通过提供一个消息队列和消息的排队模型,可以在分布式环境下进行扩展消息传递。   对于消息中间件来说一般有两种传递模式,当然也有其他的,但是常用的就是以下的两种方式 点对点模式 发布订阅模式   点对点模式是基于队列的模式,消息生产者发送消息到消息队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传递称为可能,例如在RocketMQ中消息的落地,可以使得消息重传。  

RabbitMQ (1)

你离开我真会死。 提交于 2020-02-26 23:41:37
文章目录 RabbitMQ简介 初识RabbitMQ 为什幺用RabbitMQ: RabbitMQ高性能的原因? 什么是AMQP高级消息队列协议? AMQP核心概念(重点) RabbitMQ安装及使用 Docker安装方式 RabbitMQ简介 各大主流中间件对比: activiMq 老牌消息中间件,api全面,但是吞吐量不大 Kafaka 吞吐量大,但是数据无法保证不丢失,主要面向大数据 rokectMQ :吞吐量大,保证数据不丢失,并且支持分布式事物,但是商业版需要收费 rabbitMQ :吞吐量大,数据不易丢失 初识RabbitMQ RabbitMQ是—个开源的消息代理和队列服务器,用来通过普通协议 在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写 的,并且RabbitMQ是基于AMQP协议的。 为什幺用RabbitMQ: 开源、性能优秀,稳定性保障 提供可靠性消息投递模式(confirm)、返回模式(return ) 与SpringAMQP完美的整合、API丰富 集群模式丰富,表达式配置,HA模式,镜像队列模型 保证数据不丟失的前提做到高可靠性、可用性 RabbitMQ高性能的原因? Erlang语言最初在于交换机领域的架构模式,这样使得 RabbitMQ在Broker之间进行数据交互的性能是非常优秀的 Erlang的优点

RabbitMQ 消息中间件

允我心安 提交于 2020-02-26 22:03:58
1、消息中间件 1、简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。 当下主流的消息中间件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。其能在不同平台之间进行通信,常用来屏蔽各种平台协议之间的特性,实现应用程序之间的协同。优点在于能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消息进行传送和转发,是分布式系统中非常重要的组件,主要用来解决应用耦合、异步通信、流量削峰等问题。 2、作用 1、消息中间件主要作用 解耦 冗余(存储) 扩展性 削峰 可恢复性 顺序保证 缓冲 异步通信 2、消息中间件的两种模式 1、P2P模式 P2P模式包含三个角色:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。 P2P的特点: 每个消息只有一个消费者(Consumer),即一旦被消费,消息就不再在消息队列中 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行它不会影响到消息被发送到队列 接收者在成功接收消息之后需向队列应答成功

Rabbitmq简介及部署群集

↘锁芯ラ 提交于 2020-02-26 13:32:00
博文大纲: 一、MQ简介 二、什么是RabbitMQ? 三、安装RabbitMQ 四、部署Rabbitmq集群 1)部署环境 2)安装rabbitmq服务 3)配置host文件,并将上述两个节点加入集群 4)rabbitmq01配置群集并将rabbitmq02、03加入01群集 5)访问web界面 6)web页面添加vhost 五、单台节点加入或退出群集 1)单节点加入集群 2)单节点退出集群 一、MQ简介 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。 二、什么是RabbitMQ? RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也可称为 面向消息的中间件)。支持Windows、Linux/Unix、MAC OS X操作系统和包括JAVA在内的多种编程语言。 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议

消息队列MQ(一)

℡╲_俬逩灬. 提交于 2020-02-24 00:35:29
消息队列 为什么要用消息队列,都有什么优缺点? 要问的是消息队列都有哪些场景,然后项目里具体实现的什么场景,你在这个场景里用的什么消息队列? 期望的回答是, 你们公司有个什么业务,这个业务场景有什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ带给你什么好处? 场景比较多,但是比较核心的是3个: 解耦、异步、削峰 解耦 ​ 需要去考虑你负责的系统中是否有类似的场景,一个系统调用了多个系统和模块,互相之间的调用很复杂,维护起来很麻烦。但是这个调用并不需要直接同步调用接口,如果用MQ给它异步化解耦,也是可以的,你就需要 考虑在你的项目中,是不是可以运用这个MQ去进行解耦。在简历中体现出来 异步化 异步化可以大幅度提升高延迟接口的性能 削锋: 未使用MQ的时候: 使用MQ以后: 系统架构中引入MQ后可能存在的缺陷: 系统可用性降低:系统引入的外部依赖越多,越容易挂掉。 系统的复杂性更高:需要考虑的问题越多 一致性问题 问题2:kafka,activeMq,rabbitMq,rocketMq 都有什么优缺点? 特性 ACTIVEMQ RABBITMQ ROCKETMQ KAFKA 单击吞吐量 万级吞吐量,相比RocketMq和Kafka要第一个数量级 万级,吞吐量相比RocketMq和 Kafka要低一个数量级 10万级,RocketMq也是可以支撑高吞吐的一种MQ 10万级别

RabbitMq客户端开发

巧了我就是萌 提交于 2020-02-18 19:32:43
目录 连接RabbitMQ 使用交换器和队列 exchangeDeclare方法详解 QueueDeclare方法详解 queueBind方法详解 exchangeBind方法详解 何时创建 发送消息 消费消息 推模式 拉模式 消费端的确认与拒绝 关闭连接 连接RabbitMQ 下面的代码(代码清单)用来在给定的参数(IP地址、端口号、用户名、密码等)下 连接RabbitMQ: 也可以选择使用URI的方式来实现 Connection可以用来创建多个Channel实例,但是Channel实例不能在线程间共享, 应用程序应该为每一个线程开辟一个Channel。 某些情况下Channel的操作可以并发运行,但 是在其他情况下会导致在网络上出现错误的通信帧交错,同时也会影响发送方确认(publisher confmn)机制的运行(详细可以参考4.8节),所以 多线程间共享Channel实例是非线程安全的 。 Channel或者Connection中有个isOpen方法可以用来检测其是否已处于开启状态。但并 不推荐在生产环境的代码上使用 isOpen方法,这个方法的返回值依赖于shutdownCause (参考下面的代码)的存在,有可能会产生竞争 ,代码清单是isOpen方法的源码: 错误地使用isOpen方法示例代码如代码清单所示。 通常情况下

8.RabbitMQ实现集群高可用

爱⌒轻易说出口 提交于 2020-02-14 08:30:30
RabbitMQ实现集群高可用 前言 为什么搭建rabbitmq集群? rabbitmq集群有那些模式? 如何搭建Rabbitmq集群? rabbitmq镜像高可用策略有那些? RabbitMQ这款产品本身的优点众多,大家最看好的便是他的异步化提高系统抗峰值能力,然后便是系统及功能结构解耦,既然它如此重要,那么我们就需要考虑它的高可用性。 rabbitmq有3种模式 : 单一模式:即单机情况不做集群,就单独运行一个rabbitmq而已,生产上肯定不能用。 普通模式:普通集群就是在多台机器上启动多个实例。每个队列只会存在其中的一个实例上,然后所有实例同步这些队列的元数据。消费者在进行消费的时候,如果连接的实例上恰好不是队列所在的实例,就会根据队列的元数据去队列所在实例上拉取数据 由此可知,集群模式并没做到分布式,如果队列所在的实例宕机了,会导致接下来其他实例就无法从那个实例拉取消息,所以集群主要是提高吞吐量的 镜像模式:把需要的队列做成镜像队列,存在与多个节点属于** RabbitMQ的HA方案 。**该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉

消息队列mq总结

谁都会走 提交于 2020-02-07 03:57:59
一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式 a、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。 b、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列

rabbit MQ 消息队列

狂风中的少年 提交于 2020-02-07 02:30:46
为什么会需要消息队列(MQ)? 一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式 a、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。 b、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢