mq的介绍和概述


title: db-mq-introduce tags:

  • work
  • mq categories:
  • db date: 2019-04-19 11:43:37

一、简述

  1. 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。

二、topic和queue

  1. topic用于Pub/Sub发布订阅(广播),任意一个监听队列的消费者都会收到队列中的每一条消息,生产者只塞一条消息。是一对多的对应关系
  2. queue用于点对点的方式,一个queue可以有多个监听者,但是每个消息只会被消费一次。是一对一的对应关系。

三、优势

  1. 系统解耦,系统与系统之间没有直接的调用关系。
  2. 调用是异步,可以提高响应时间,为数据处理提高性能支持。

四、应用场景

  1. 异步
  2. 解耦
  3. 冗余:有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕
  4. 扩展性:分布式扩容,提高吞吐量
  5. 过载保护:当数据量剧增的时候,应用程序来不及处理,可以暂时缓存在mq中,等应用程序慢慢处理。
  6. 可恢复性:消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
  7. 顺序保证:在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。
  8. 缓冲:在任何重要的系统中,都会有需要不同的处理时间的元素。消息队列通过一个缓冲层来帮助任务最高效率的执行,该缓冲有助于控制和优化数据流经过系统的速度。以调节系统响应时间。
  9. 数据流处理:分布式系统产生的海量数据流,如:业务日志、监控数据、用户行为等,针对这些数据流进行实时或批量采集汇总,然后进行大数据分析是当前互联网的必备技术,通过消息队列完成此类数据收集是最好的选择。

五、常用协议

  1. AMQP协议:
    AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。
  2. MQTT协议:
    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
  3. STOMP协议:
    STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息代理(Broker)进行交互。命令模式(非topic\queue模式)
  4. XMPP协议:
    (可扩展消息处理现场协议,Extensible Messaging and Presence Protoco)核心是基于XML流传输
  5. 自定义:
    有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能。

六、五种中间件的对比

rocketMqrabbitMqactiveMqzeroMqkafka
支持语言只有java语言无关语言无关语言无关语言无关
消息丢失理论no理论no
延时毫秒微妙微妙极低,号称最快微妙
持久化磁盘文件内存,文件内存,文件,dbno文件
负载均衡yesyesyesyes依赖zookeeper
使用场景企业级,大数据量企业级小型系统,数据量不大多用于金融,支持复杂队列实时处理,日志收集

转载于:https://juejin.im/post/5cbdbc78f265da039c0551e0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值