RabbitMQ系列随笔——介绍及安装
一、RabbitMQ介绍
RabbitMQ是由erlang开发的AMQP(Advanced Message Queuing Protocol)的开源实现。他是高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间性设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,消费者亦然。
RabbitMQ支持多种客户端,如:.net、java、c、php等。支持ajax,在用于在分布式系统中存储转发消息能起到至关重要的作用 ,并且在易用性、扩展性、高可用性等方面也表现不俗。
二、RabbitMQ作用
博主认为RabbitMQ在程序世界中主要起到以下3个至关重要的作用(不足之处望大神斧正)。
1、解耦
举个例子:假如你在网上买了一件商品(这个过程很复杂,我们这里只说部分操作),这时候系统需要通知库存该商品减1。那么这个时候系统可能会调用接口处理这个过程(过程本身没有任何问题),在这个过程中应用系统和库存之间存在了一个较为高的耦合,显然这种高耦合的操作对于一个订单系统来说是不可接受的,频繁的请求可能会导致系统效率极低甚至崩溃。这个时候MQ就能解决我们的问题,我们将订单消息发送给MQ服务队列中,库存系统只需要获取MQ服务队列中的订单信息进行处理,这个时候应用系统和库存之间并没有任何耦合关系。由于MQ异步处理机制可以提应用系统的效率,集群的使用可以解决订单并发问题。
2、异步
首先我们来看一张图(在官网获取)
在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。可以看到P把消息发送给hello这个缓冲区,C想多久处理就多久处理。

3、削峰
此削峰不是天龙八部里面的萧峰(^_^)。何为削峰,削峰你可以解读为“流量削峰”、“削峰限流”等。如何削峰
举个例子:我们还是以订单系统为例。假如有一场秒杀活动(这个时候你的系统流量是少有的高峰期),原本你的系统1秒能处理10w条数据,但是在处于流量高峰的时候,系统数据远远不只10w条,这个时候可能造成服务器压力过大、数据处理出现问题等。MQ恰恰可以解决该问题,前面第2点异步也介绍到MQ有一个缓冲区,我们可以利用这个缓冲区做流量削峰处理。我们只需要在业务处理板块做好数据处理限流操作即可。那么有人又要问了如果秒杀人数超过商品人数怎么办。同理也可以使用MQ解决问题,在MQ中我们可以对商品设置一个峰值,只要超过这个峰值,就会提示商品已抢完等信息(这点类似抢红包)。如下图

三、RabbitMQ安装(客户端)
MQ下载地址:https://www.rabbitmq.com/download.html(官网)。
具体安装过程博主在这里不在赘述,说几点注意事项。
1、在安装RabbitMQ之前必须先安装Erlang,没错是要先安装Erlang仔细的朋友可能已经发现,在文章的开头我们已经说过RabbitMQ是由erlang开发,所以要先安装Erlang环境。下载地址和MQ一样。
2、安装完Erlang之后安装MQ(无脑下一步就行)。
3、安装完成之后一定要先激活并且重启。如图

打开上图红框中的应用,依次执行rabbitmq-plugins enable rabbitmq_management、net stop RabbitMQ && net start RabbitMQ命令。
4、MQ默认端口15672、默认用户密码均为guest。
5、如果要建立新的用户,最好设置为Admin权限。
安装成功之后使用http://localhost:15672打开MQ客户端,出现下图证明客户端安装成功

看到这里是不是有一种对MQ豁然开朗的感觉。
下一篇:RabbitMQ系列随笔——.NET MQ实战练习。
RabbitMQ系列随笔——介绍及安装的更多相关文章
- windows下mongodb基础玩法系列一介绍与安装
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- RabbitMQ系列之Centos 7安装RabbitMQ 3.6.1
1.安装EPEL-7: rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm 2.安 ...
- percona-toolkit系列之介绍和安装(mysql复制工具)
percona-toolkit使用教程(一) 一.percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统 ...
- saltstack系列(一)——介绍与安装
saltstack简介 saltstack 是服务器基础架构集中化管理平台.具备配置管理.远程执行.监控等功能. saltstack 基于python. 注意: puppet是一种Linux.Unix ...
- MySQL系列-第一章节:MySQL介绍与安装
1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...
- RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- Golang学习系列:(一)介绍和安装
Golang学习系列:(一)介绍和安装 Java程序员带你来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的,带有垃圾回收的.快速编译的语言,它具有一下特点: 他可以在一台计算机上用几 ...
- .net RabbitMQ 介绍、安装、运行
RabbitMQ介绍 什么是MQ Message Queue(简称:MQ),消息队列 顾名思义将内容存入到队列中,存入取出的原则是先进先出.后进后出. 其主要用途:不同进程Process/线程Thre ...
- Flume系列一之架构介绍和安装
Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...
随机推荐
- PHP imagecolorclosestalpha - 取得与指定的颜色加透明度最接近的颜色的索引
imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色的索引.高佣联盟 www.cgewang.com 语法 int imagecolorclosestalpha ( ...
- java中的枚举类enum
enum SeasonEnum {//枚举类: 本类规定了SeasonEnum(季节)类只能有四个对象SPRING,SUMMER,AUMUTN,WINTER //创建枚举类的的四个对象SPRING,S ...
- [转]Nginx限流配置
原文:https://www.cnblogs.com/biglittleant/p/8979915.html 作者:biglittleant 1. 限流算法 1.1 令牌桶算法 算法思想是: 令牌以固 ...
- 基于AspectCore打造属性注入
前言 源自于晓晨在成都.net社区群的一篇文章 <晓晨的ASP.NET Core 奇淫技巧之伪属性注入> 他的思路是 Ioc容器替换 ControllerActivator,因为只能在控制 ...
- spring的IOC(反转控制)
Spring概念 1.1.1 spring 是什么 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制 ...
- Linux-sed命令使用笔记
Linux的sed命令和python脚本一起,可以对文本进行快速的修改.比如在删除日志的时候,python写出固定日期删除脚本,再用sed循环将python脚本的日期修改调用,就可以批删除指定日期的日 ...
- 她娇羞道“不用这样细致认真的说啊~~”———详细图解在Linux环境中创建运行C程序
她娇羞说,不用这样细致认真的说啊———详细图解在Linux环境中创建运行C程序“不,这是对学习的负责”我认真说到 叮叮叮,停车,让我们看看如何在Linux虚拟机环境中,创建运行C程序 详细图解在Lin ...
- 前端面试基础题:Ajax原理
Ajax 的原理简单来说是在⽤户和服务器之间加了—个中间层( AJAX 引擎),通过XmlHttpRequest 对象来向服务器发异步请求,从服务器获得数据,然后⽤ javascrip t 来操作 D ...
- 谈谈Nginx和php之间是交互与通信的方式
Nginx是俄国人最早开发的Webserver,现在已经风靡全球,相信大家并不陌生.PHP也通过二十多年的发展来到了7系列版本,更加关注性能.这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标 ...
- Druid数据源的使用
1 Druid数据源简介 Druid是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能.通过访问http://localhost:8080(自己的端口)/druid/ 可以查看 ...