原文:(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景

本篇并没有直接讲到技术,例如没有先写个Helloword。我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是其他的,以免到最后发现自己学错了。同时如果已经确定就是他,最好先要了解下技术产生的背景等因素,以便对技术有更深刻全面的了解(那句话怎么讲的“你不了解过去的我,又怎么理解现在的我”)。

为什么使用RabbitMQ


为什么我开始选择学习RabbitMQ:

  1. 安装部署简单,上手门槛低,功能丰富,符合AMQP标准;
  2. 企业级消息队列,经过大量实践考验的高可靠;
  3. 集群易扩展,可以轻松的增减集群节点;
  4. 有强大的WEB管理页面。

企业为什么将RabbitMQ作为消息队列系统:

在我学习RabbitMQ的初期我在网上查到一些这方面的资料,我认为比较好的是下面这封http://www.doc88.com/p-5826232080382.html 一方面是他对于RabbitMQ的评价本身,更重要的是对于技术选型评价的两个维度:十万米高空看技术和显微镜看技术

十万米高空看RabbitMQ:

  1. 有商业化的运营,不会轻易死掉;
  2. 遵循AMQP协议,不会被绑架;
  3. 强大的社区支持,为技术进步提供动力;
  4. 大量成功的应用案例,例如阿里、网易等互联网巨头都有使用。

显微镜看RabbitMQ:

  1. Erlang开发,AMQP的最佳搭档,在支持持久化的消息队列中性能算很优秀的;
  2. 支持消息持久化、支持消息确认机制、灵活的任务分发机制等,支持功能非常丰富;
  3. 可靠性高;
  4. 集群扩展很容易,并且可以通过增加节点实现成倍的性能提升;
  5. WEB管理和监控,有些技术癌更喜欢命令行界面,但WEB管理为后期运维提供很大的便利。

    RabbitMQ劣势:

    在kafka和zero面前性能被虐成渣,(持久化消息和ACK确认的情况下生产和消费消息单机大约在1-2万左右)

结论:如果你希望使用一个可靠性高、功能强大、易于管理的消息队列系统那么就选择RabbitMQ吧,如果你想用一个性能高,但偶尔丢点数据不是很在乎可以使用kafka或者zeroMQ。

RabbitMQ产生的背景


1、消息队列系统最在可以追溯到上个世纪(是不是感觉很久远,其实是1983年,那时候我还没用出生)。1983年最早的消息队列软件Teknekron诞生,当时紧用于一些金融交易等系统。

2、上世纪九十年代,诞生了多家消息队列系统,例如IBM MQ、微软的MSMQ、TIBCO MQ等消息队列在企业中的应用也愈加广泛。显然这些商用的消息队列系统如果企业要使用需要付出高昂的成本,并且各个消息队列之间使用不同的API不同的协议。

3、2004年,AMQP(Advanced Message Queuing Protocol,高级消息队列协议)开始开发。通过这一标准可以和任意AMQP供应商提供的MQ服务进行交互。

4、2006年,光阴荏苒时光如梭,一转眼就说到了重点。我们的主角使用Erlang语言实现的AMQP开源版本,RabbitMQ诞生了,同年AMQP协议首次发布。

为什么叫RabbitMQ?

很多人估计和我一样也有这个疑问,我在《RabbitMQ实战》这本书中找到了答案:兔子行动非常迅速而且繁殖起来也非常疯狂,所以就把Rabbit用作这个分布式软件的命名(就是真么简单)。

RabbitMQ技术交流QQ群:327034977(添加时请备注RabbitMQ)

(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景的更多相关文章

  1. (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念

    原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...

  2. RabbitMQ消息队列(一): Detailed Introduction 详细介绍

     http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...

  3. RabbitMQ消息队列1: Detailed Introduction 详细介绍

    1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...

  4. (转)RabbitMQ消息队列(九):Publisher的消息确认机制

    在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...

  5. (转)RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)

    在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成.那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会 ...

  6. (转)RabbitMQ消息队列(六):使用主题进行消息分发

    在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因, ...

  7. (转)RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

    上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...

  8. python【第十一篇】消息队列RabbitMQ、缓存数据库Redis

    大纲 1.RabbitMQ 2.Redis 1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议 ...

  9. RabbitMQ消息队列应用

    RabbitMQ消息队列应用 消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是 ...

随机推荐

  1. 单位阶跃函数(Heaviside/unit step function)—— 化简分段函数

    注意,单位阶跃函数一种不连续函数. 1. 常见定义 最经典的定义来自于 Ramp function(斜坡函数,max{x,0})的微分形式: H(x)=ddxmax{x,0} 2. 化简分段函数 如对 ...

  2. alert警告框

    标签中写: <div class="alert alert-warning fade in"> <button class="close" d ...

  3. Linux下基于LDAP统一用户认证的研究

    Linux下基于LDAP统一用户认证的研究                   本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  4. MFC中对话框的各种消息触发时间

    小结:WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕.可以安全的使用这个窗口了,例如在它上面画控件等等.这个状态肯定是在调用ShowWindows()显示窗口之前.WM_WM_IN ...

  5. DTU(用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备)

    DTU (Data Transfer unit),是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备.DTU广泛应用于气象.水文水利.地质等行业.

  6. 1.1 Introduction中 Consumers官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Consumers 消费者(Consumers) Consumers label t ...

  7. document.write的注意点

    如果给button点击事件添加document.write会消除页面所有元素,包括button按钮 <!DOCTYPE html> <html> <head> &l ...

  8. Docker---(7)Docker安装启动RabbitMQ

    原文:Docker---(7)Docker安装启动RabbitMQ 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/ ...

  9. 【习题 6-1 UVA-673】Parentheses Balance

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 括号匹配. 栈模拟就好. 多种括号也是一样可以做的. [代码] #include <bits/stdc++.h> usi ...

  10. 【CS Round #43 C】Rectangle Partition

    [链接]点击打开链接 [题意] 有一辆火车,它的长度为L,然后假设这辆车现在随机可能地出现在0..D之间,然后假设它已经耗光了油. 问你它需要走的期望距离是多少. 这里要走的距离指的是车里最近的加油站 ...