一、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. PHP scandir() 函数

    ------------恢复内容开始------------ 实例 列出 images 目录中的文件和目录: <?php$dir = "/images/"; // Sort ...

  2. day13. 迭代器与高阶函数

    一.迭代器 """ 能被next调用,并不断返回下一个值的对象,叫做迭代器(对象) 概念: 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果 ...

  3. 【NOI2016】区间 题解(线段树+尺取法)

    题目链接 题目大意:给定$n$个区间$[l_i,r_i]$,选出$m$个区间使它们有一个共同的位置$x$,且使它们产生的费用最小.求最小费用.费用定义为最长的区间长度减去最短区间长度. ------- ...

  4. 查看 Linux 系统服务的 5 大方法

    Linux 系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务. 在本文中,良许将为大家介绍如何列出 Linux 系统里所有运行的服务,以及如何检查某个服务 ...

  5. 设计实现SAM--无服务器应用模型

    Author:心谭 From:[Serverless]设计实现SAM--无服务器应用模型 Des: 专注算法与 web 开发的技术博客 什么是SAM? sam全称是:Serverless Applic ...

  6. 【项目实战】sass使用基础篇(上)

    Sass是一种CSS预处理语言.CSS预处理语言是一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让css更加简洁.适应性更强 ...

  7. 伸展树(Splay)学习笔记

    二叉排序树能够支持多种动态集合操作,它可以被用来表示有序集合,建立索引或优先队列等.因此,在信息学竞赛中,二叉排序树应用非常广泛. 作用于二叉排序树上的基本操作,其时间复杂度均与树的高度成正比,对于一 ...

  8. C/C++中char[]和string的连接/合并

    一: C风格字符串连接 #include <iostream> using namespace std; int main() { const char *str = "hell ...

  9. AlgorithmMan,一套免费的算法演示神器

    概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/971 访问.  文章末尾附带GitHub开源下载地址. 0.概述 ...

  10. Centos+Nginx部署Vue项目

    1.项目打包生成dist文件夹 在项目根目录下打开cmd窗口,输入命令 npm run build //生成dist文件夹 2.将dist文件夹上传到centos7 使用scp命令或者用远程连接工具将 ...