一、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系列随笔——介绍及安装的更多相关文章

  1. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  2. 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.安 ...

  3. percona-toolkit系列之介绍和安装(mysql复制工具)

    percona-toolkit使用教程(一) 一.percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统 ...

  4. saltstack系列(一)——介绍与安装

    saltstack简介 saltstack 是服务器基础架构集中化管理平台.具备配置管理.远程执行.监控等功能. saltstack 基于python. 注意: puppet是一种Linux.Unix ...

  5. MySQL系列-第一章节:MySQL介绍与安装

    1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...

  6. RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践

    RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...

  7. Golang学习系列:(一)介绍和安装

    Golang学习系列:(一)介绍和安装 Java程序员带你来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的,带有垃圾回收的.快速编译的语言,它具有一下特点: 他可以在一台计算机上用几 ...

  8. .net RabbitMQ 介绍、安装、运行

    RabbitMQ介绍 什么是MQ Message Queue(简称:MQ),消息队列 顾名思义将内容存入到队列中,存入取出的原则是先进先出.后进后出. 其主要用途:不同进程Process/线程Thre ...

  9. Flume系列一之架构介绍和安装

    Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...

随机推荐

  1. Calibre LVS BOX 详细用法

    https://www.cnblogs.com/yeungchie/ LVS BOX的使用对于后端的团队协作起到非常便利的作用. 通过在lvs rules file添加BOX的相关语句可以达到这个目的 ...

  2. C/C++编程笔记:C语言预处理命令是什么?不要以为你直接写#就行!

    很多小伙伴在自己写代码的时候,已经多次使用过#include命令.使用库函数之前,应该用#include引入对应的头文件.其实这种以#号开头的命令称为预处理命令. C语言源文件要经过编译.链接才能生成 ...

  3. LeetCode(1)---检查括号出现的合法性

          题目: 检查字符串中"( )","[ ]","{ }" 的合法性,即是否成对出现 eg,如出现"[()]", ...

  4. 【FZYZOJ】无向图的联通图个数 题解(组合数学)

    题目大意:求无向图的连通图个数.由于个数可能很大,只需要求出结果$mod1000000009$的值.$n\leq 1000$ ------------------------- 对于一个含有$n$个结 ...

  5. 一文入门人工智能的明珠:生成对抗网络(GAN)

    一.简介 在人工智能领域内,GAN是目前最为潮流的技术之一,GAN能够让人工智能具备和人类一样的想象能力.只需要给定计算机一定的数据,它就可以自动联想出相似的数据.我们学习和使用GAN的原因如下: 1 ...

  6. MySQL面试题!新鲜出炉~

    01.Mysql 的存储引擎,myisam和innodb的区别? 答:1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务 ...

  7. 网络安全传输系统-sprint1传输子系统

    一.产品规划与设计 二.传输子系统 基本框架:(1)不带安全功能的传输系统 (2)安全加密功能 part1:基本传输子程序设计(不带安全加密功能) 客户端 服务器 int main(int argc, ...

  8. 安卓APP开发的初步了解

    今天成功安装了Android Studio 并且对APP的开发框架结构进行了初步了解 如上图:app基本结构情况 下面来仔细解释一下各个方面目录的作用 首先 manifests目录:包含Android ...

  9. MyFirstJavaWeb

    源代码: Register.jsp <%@ page language="java" contentType="text/html; charset=utf-8&q ...

  10. 16、Mediator 仲裁者模式

    只有一个仲裁者 Mediator 模式 组员向仲裁者报告,仲裁者向组员下达指示,组员之间不在相互询问和相互指示. 要调整多个对象之间的关系时,就需要用到 Mediator 模式.将逻辑处理交给仲裁者执 ...