RabbitMQ基本概念(一)-RabbitMQ的优劣势及产生背景
本篇并没有直接讲到技术,例如没有先写个Helloword。我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是其他的,以免到最后发现自己学错了。同时如果已经确定就是他,最好先要了解下技术产生的背景等因素,以便对技术有更深刻全面的了解(那句话怎么讲的“你不了解过去的我,又怎么理解现在的我”)。
为什么使用RabbitMQ
为什么我开始选择学习RabbitMQ:
- 安装部署简单,上手门槛低,功能丰富,符合AMQP标准;
- 企业级消息队列,经过大量实践考验的高可靠;
- 集群易扩展,可以轻松的增减集群节点;
- 有强大的WEB管理页面。
企业为什么将RabbitMQ作为消息队列系统:
在我学习RabbitMQ的初期我在网上查到一些这方面的资料,我认为比较好的是下面这封http://www.doc88.com/p-5826232080382.html 一方面是他对于RabbitMQ的评价本身,更重要的是对于技术选型评价的两个维度:十万米高空看技术和显微镜看技术。
十万米高空看RabbitMQ:
- 有商业化的运营,不会轻易死掉;
- 遵循AMQP协议,不会被绑架;
- 强大的社区支持,为技术进步提供动力;
- 大量成功的应用案例,例如阿里、网易等互联网巨头都有使用。
显微镜看RabbitMQ:
- Erlang开发,AMQP的最佳搭档,在支持持久化的消息队列中性能算很优秀的;
- 支持消息持久化、支持消息确认机制、灵活的任务分发机制等,支持功能非常丰富;
- 可靠性高;
- 集群扩展很容易,并且可以通过增加节点实现成倍的性能提升;
- 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基本概念(一)-RabbitMQ的优劣势及产生背景的更多相关文章
- (一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景
原文:(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景 本篇并没有直接讲到技术,例如没有先写个Helloword.我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是 ...
- RabbitMQ、Kafka、RocketMQ的优劣势
今天我们一起来探讨: 全量的消息队列究竟有哪些? Kafka.RocketMQ.RabbitMQ的优劣势比较 以及消息队列的选型 最全MQ消息队列有哪些 那么目前在业界有哪些比较知名的消息引擎呢?如下 ...
- RabbitMQ消息队列(一)-RabbitMQ的优劣势及产生背景
本篇并没有直接讲到技术,例如没有先写个Helloword.我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是其他的,以免到最后发现自己学错了.同时如果已经确定就是他,最好先要了解下技 ...
- RabbitMQ基本概念和使用
RabbitMQ是一个消息代理,核心原理:发送消息,接收消息. RabbitMQ主要用于组件之间的解耦,消息发送者无需知道消息使用者的存在,反之亦然. 单向解耦 ...
- RabbitMQ核心概念篇
RabbitMQ介绍 一.RabbitMQ使用场景 RabbitMQ他是一个消息中间件,说道消息中间件[最主要的作用:信息的缓冲区]还是的从应用场景来看下: 1.系统集成与分布式系统的设计 各种子系统 ...
- RabbitMQ如何工作和RabbitMQ核心概念
RabbitMQ是一个开源的消息代理软件.它接受来自生产者的消息并将其传递给消费者.它就像一个中间人,可以用来减少Web应用程序服务器的负载和交付时间. RabbitMQ如何工作 让我们简要介绍一下R ...
- RabbitMQ基本概念和原理
RabbitMQ基本概念和原理 1.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. 2.Rabb ...
- rabbitMQ基本概念
一.网页登录方法 http://127.0.0.1:15672/ 用户名和密码默认为guest/guest 用java代码去连接rabbitmq用的端口是5672 二.rabbitMQ基本概念 Rab ...
- rabbitMQ 基本概念
RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消 息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上, RabbitM ...
随机推荐
- 关于System.InvalidOperationException异常
什么是InvalidOperationException 操作无效异常.当方法调用对对象的当前状态无效时引发的异常. 继承 Object Exception SystemException Inval ...
- ABP 菜单和权限
大致操作步骤,原理之后补充. 添加菜单: 在 ContractOwner.Web.Startup.ContractOwnerNavigationProvider 的SetNavigation方法中添加 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于WIFI模块AT指令TCP透传方式,定时访问升级(含有数据校验)
实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootL ...
- Spring事务注解@Transactional失效的问题
在项目中发现事务失效,使用@Transactional注解标注的Service业务层实现类方法全部不能回滚事务了,最终发现使用因为Spring与shiro进行整合之后导致的问题,将所有的Service ...
- pytorch指定使用的单个GPU
1.pycharm里直接在代码中加入下面 import os os.environ["CUDA_VISIBLE_DEVICES"] = "2" 2.在终端指定使 ...
- Glimma 包
http://master.bioconductor.org/packages/3.9/bioc/html/Glimma.html 安装 if (!requireNamespace("Bio ...
- UDF——输出网格节点坐标
需要在VS当中进行编译,具体内容可参看前面 <在Visual Studio中直接编译Fluent的UDF的总结(串行)> <在Visual Studio中直接编译Fluent的UDF ...
- ZROI1119 【十一·联考】幸福
ZROI1119 [十一·联考]幸福 传送门 一道矩阵快速幂. #include<iostream> #include<cstdio> #include<algorith ...
- Docker整合dockerfly实现UI界面管理(单机版)
一.搜索镜像 docker search dockerfly 二.根据镜像使用排名(一般情况下拉取使用率最高的镜像名),我这里使用的是阿里云镜像地址 docker pull registry.cn-h ...
- Leetcode 1262. 可被三整除的最大和
题目:给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和. 示例 1: 输入:nums = [3,6,5,1,8] 输出:18 解释:选出数字 3, 6, 1 和 8,它们的和是 18( ...