rabbitmq集群

浅谈消息队列及常见的消息中间件

佐手、 提交于 2019-12-05 14:52:40
浅谈消息队列及常见的消息中间件 前言 消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段。它具有 低耦合 、 可靠投递 、 广播 、 流量控制 、 最终一致性 等一系列功能。 当前使用较多的 消息队列 有 RabbitMQ 、 RocketMQ 、 ActiveMQ 、 Kafka 、 ZeroMQ 、 MetaMQ 等,而部分 数据库 如 Redis 、 MySQL 以及 phxsql 也可实现消息队列的功能。 正文 1. 消息队列概述 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流 ,并基于 数据通信 来进行分布式系统的集成。 通过提供 消息传递 和 消息排队 模型,它可以在 分布式环境 下提供 应用解耦 、 弹性伸缩 、 冗余存储 、 流量削峰 、 异步通信 、 数据同步 等等功能,其作为 分布式系统架构 中的一个重要组件,有着举足轻重的地位。 2. 消息队列的特点 2.1. 采用异步处理模式 消息发送者 可以发送一个消息而无须等待响应。 消息发送者 将消息发送到一条 虚拟的通道 ( 主题 或 队列 )上, 消息接收者 则 订阅 或是 监听 该通道。一条信息可能最终转发给 一个或多个 消息接收者,这些接收者都无需对 消息发送者 做出 同步回应 。整个过程都是 异步的 。 2.2. 应用系统之间解耦合 主要体现在如下两点:

rabbitmq集群不重启服务在线reset脚本

时间秒杀一切 提交于 2019-12-05 14:41:35
#使用前互信做好,主机之间ssh不要输入密码 #三台节点的主机名称(改名称要在每一台的hosts里,也是当前集群的主机名) RABBIT_SERVER_01=jimmy-rabbit-1 RABBIT_SERVER_02=jimmy-rabbit-2 RABBIT_SERVER_03=jimmy-rabbit-3 #在rabbit节点一执行的内容 rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app rabbitmqctl add_user <用户名> <密码> rabbitmqctl set_permissions -p / <用户名> '.*' '.*' '.*' #在其他节点执行的内容 echo " rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@$RABBIT_SERVER_01 rabbitmqctl start_app " > rabbit-reset-node2.sh scp -r -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no rabbit-reset-node2.sh $RABBIT_SERVER_02:/root/ ssh

Linux 部署 rabbitMQ集群

a 夏天 提交于 2019-12-05 14:26:34
1. 部署Erlang 1.1 RabbitMQ依赖于Erlang,版本对应请查看 https://www.rabbitmq.com/which-erlang.html 1.2 下载安装Erlang # 添加epel扩展源 yum install epel-release # 先删除可能存在的erlang(非必须) yum list erlang yum remove erl* # 清空和更新安装源(非必须) yum clean yum update # 参考 https://github.com/rabbitmq/erlang-rpm -> Erlang 21.x -> o use Erlang 21.x on CentOS 6 # 配置安装源 vim /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/6 gpgcheck=1 gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=0 # 安装 yum

RabbitMQ高可用配置(Haproxy + Keepalived)

久未见 提交于 2019-12-05 11:14:43
网络结构如下图: 共有104、105、106三台RabbitMQ Server,互为集群 其中104和105安装了Haproxy,每个Haproxy承担三台RabbitMQ server的负载均衡 两台Harpoxy采用Keepalived互为主备,VIP是172.16.0.108 操作系统为Ubuntu 以下介绍操作步骤: 1、三台主机安装RabbitMQ apt-get install rabbitmq-server 开启RabbitMQ management,激活控制台以方便MQ的管理与监控 sudo rabbitmq-plugins enable rabbitmq_management 开启监控后可以输入http://ip:15672可以登录管理界面,默认账户guest/guest 2、配置MQ集群 2.1 cookie文件 因为RabbitMQ的集群是通过Erlang的集群来实现的,所以,要求三台机器的 /var/lib/rabbitmq/.erlang.cookie 文件内容一致,用VI等工具将它的内容修改为 zHDCGETPYWOWREASJUAB 由于RabbitMQ在启动Booker时会检查该文件的权限,必须为400,否则会报错,所以要修改文件的权限 chmod 400 .erlang.cookie 2.2 修改各机器hosts 172.16.0.104 pzs

rabbitmq消息队列

为君一笑 提交于 2019-12-05 06:56:32
为什么使用 Rabbit mq? 1.Rabbit mq 是一个高级消息队列,在分布式的场景下,拥有高性能。,对负载均衡也有很好的支持。 2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来。 3.实现消费者和生产者之间的解耦。 4.对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作。 5.可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一 个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在 1.1、rabbitMQ的优点(适用范围) 1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器。 2. 健壮、稳定、易用、跨平台、支持多种语言、文档齐全。 3. 有消息确认机制和持久化机制,可靠性高。 4. 开源 其他MQ的优势: 1. Apache ActiveMQ曝光率最高,但是可能会丢消息。 2. ZeroMQ延迟很低、支持灵活拓扑,但是不支持消息持久化和崩溃恢复。 其他消息队列,Kafka 定位是日志消息队列。吞吐量最大。 相比阿里的Rocket MQ ,Rabbit 来源: https://www.cnblogs.com

消息队列mq总结

牧云@^-^@ 提交于 2019-12-05 02:52:34
一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有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) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列

RabbitMQ的管控台的使用说明

夙愿已清 提交于 2019-12-04 17:43:02
1、RabbitMQ的管控台确实是一个好东西,但是如果是新手,比如刚接触RabbitMQ的时候,看到RabbitMQ的管控台也是一脸懵逼的说,慢慢接触多了,才了解一些使用。   1)、RabbitMQ的管控台中概览的Totals。如果有消息进行消费的话,如果我们创建队列的话,这里面显示消费进度和情况,实施进行显示,可以看到一个折线图的表现形式。     RabbitMQ的管控台中概览的Global counts。Connections代表了有多少链接,Channels代表了有多少网络通信信道,Exchanges代表了有多少交换机,Queues代表了有多少队列,Consumers代表了有多少消费者。   2)、RabbitMQ的管控台中概览的Nodes表示当前节点的情况状态,File descriptors是文件描述,Socket descriptors是通信情况,Erlang processes代表了Erlang的进程数,Memory代表了整个服务的内存使用情况,Disk space代表了磁盘的使用情况,Rates mode,Info代表了存储状态。path对应了RabbitMQ的一些配置路径,Config file代表了存储路径,Database directory代表了数据的存储路径,Log file代表了日志文件的存储路径。   3)

RabbitMQ在windows环境下的安装、集群配置

时光毁灭记忆、已成空白 提交于 2019-12-04 04:15:52
公司要对常见的几种消息中间件进行选型,最后在ActiveMQ、RabbitMQ、RocketMQ中选择了RabbitMQ作为技术标准。本文对RabbitMQ的安装使用过程进行记录。 1、首先了解一下我们用消息中间件主要来解决的三类问题:   a、系统间的解耦:两个系统之间本来是直接调用的(强依赖),可以通过在中间加入消息中间件来解耦。   b、削峰(高并发):例如秒杀场景,上游订单系统效率很高(一瞬间生成了1万个订单),下游秒杀系统的业务逻辑比较复杂费时,可以在中间加入消息中间件,上游系统发送消息到mq,下游系统根据自己的处理能力定时到mq里取任务,使得整个系统健壮性增强。   c、异步:原来是同步顺序执行的过程集合(A->B->C),可以改成某些过程同时执行(A->B 与 A->C 同时执行),使得整个系统对外响应变快。 2、rabbitmq是使用erlang语言开发的,所以安装的时候要先装erlang环境,而且rabbitmq的不同版本对应不同的erlang版本,这点要特别注意,否则装了运行不起来,具体在rabbitmq官网可以查看版本对应关系。另外就是注意.erlang.cookie文件在c:\windows目录下最好得有,不然可能运行不起来。安装教程网上很多,例如: https://blog.csdn.net/qq_36505948/article/details

DotNet Core中使用RabbitMQ

眉间皱痕 提交于 2019-12-03 14:02:49
原文: DotNet Core中使用RabbitMQ   上一篇随笔记录到RabbitMQ的安装,安装完成,我们就开始使用吧。 RabbitMQ简介   AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。   AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。   RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景。 DotNet Core使用RabbitMQ 通过nuget安装: https://www.nuget.org/packages/RabbitMQ.Client/ 定义生产者: //创建连接工厂 ConnectionFactory

DotNet Core中使用RabbitMQ

柔情痞子 提交于 2019-12-03 13:28:38
  上一篇随笔记录到RabbitMQ的安装,安装完成,我们就开始使用吧。 RabbitMQ简介   AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。   AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。   RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景。 DotNet Core使用RabbitMQ 通过nuget安装: https://www.nuget.org/packages/RabbitMQ.Client/ 定义生产者: //创建连接工厂 ConnectionFactory factory = new ConnectionFactory