RocketMQ系列之初识MQ

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> RocketMQ系列之初识MQ

前言

消息中间件是目前互联网项目应用特别广泛的一个中间件,主要用于处理异步操作,系统之间的应用解耦,以及并发下的流量削峰等等应用场景,今天开我们就进入消息中间件MQ的讲解,主流的MQ有很多,我们只需要掌握其中一种就可以了,基本都大同小异,OK,正式开始今天的MQ之旅。

RocketMQ系列之初识MQ

什么是MQ?

MQ(Message Queue)消息队列,是一种应用程序之间通信的方式,可以理解为一个存放消息的队列,生产者负责生产消息,并将生产的消息存放入队列中,消费者负责从队列中获取对应的消息进行消费,生产者无需关心消息是否被消费,只需要关心是否将消息正确的存入队列即可,同样消费者也无需关心消息从哪生产或者说消息是否生产成功,只需要正确的处理消息即可,以这样一种方式实现了生产者和消费者之间的完全解耦。

RocketMQ系列之初识MQ RocketMQ系列之初识MQ

MQ有什么作用?

异步:可以将某些业务逻辑,进行异步处理,加快用户响应时间

解耦:可以将某些业务逻辑拆分,通过MQ进行多个系统之间业务解耦

RocketMQ系列之初识MQ

流量削峰:在并发情况下,可以将瞬间流量访问写入MQ,然后开启多个消费者处理消息,达到减压削峰的效果

RocketMQ系列之初识MQ

日志处理:日志收集直接写入消息队列,消费者端订阅消费处理日志,生成可视化监控数据

RocketMQ系列之初识MQ RocketMQ系列之初识MQ

主流的MQ有哪些?

主流的MQ有很多,网上的总结对比也有很多在,这里我就你不去一一列举了,下面列几个业界比较火的MQ简单对比下:

特性

ActiveMQ

RabbitMQ

RocketMQ

Kafka

API完备性

高

高

高

高

多语言支持

支持

支持

JAVA

支持

单机吞吐量

万级

万级

万级

十万级

消息延迟

毫秒

微秒

毫秒

毫秒

可用性

高(主从)

高(主从)

非常高(分布式)

非常高(分布式)

消息丢失

低

低

理论上不会

理论上不会

文档完备性

高

高

高

高

社区活跃度

高

高

中

高

成熟度

成熟

成熟

比较成熟

成熟

集群

支持

支持

支持

支持

负载均衡

支持

支持

支持

支持

特点

功能齐全、被大量开源项目使用

Erlang语言开发,性能很好

各环节分布式扩展设计,主从HA,支持上万个队列,性能很好

吞吐量很高

评价

优点:成熟的产品,已经在很多公司得到应用,各种协议支持较好,有多种语言成熟的客户端。

缺点:会出一些莫名其妙的问题,会丢消息,笔试和上千队列,目前社区活跃度不高,5.X后维护较少。

优点:由于erlang语言的特性,性能很好,管理界面较为丰富,在互联网公司都有较大规模的应用。

缺点:erlang语言难度大,不支持动态扩展

优点:模型简单,接口易用,阿里内部大规模成功应用。

缺点:产品较新,文档比较缺乏,没有实现JMS接口规范

日志领域应用广泛

RocketMQ系列之初识MQ

RocketMQ是什么?

RocketMQ是一款分布式、队列模型的消息中间件,天生自带分布式,负载(这里后面会介绍),生产者Producer和消费者Consumer以及队列都可以分布式,Producer向队列轮流发送消息,队列的集合称为主题Topic,Consumer有2种消费模式:

  • 广播消费:一个Consumer实例消费这个Topic对应的所有队列
  • 集群消费:多个Consumer实例平均消费这个Topic对应的所有队列
  • 集群消费:多个Consumer实例平均消费这个Topic对应的所有队列

    工作模式如下图所示:

    RocketMQ系列之初识MQ

    物理部署结构如下图:

    RocketMQ系列之初识MQ RocketMQ系列之初识MQ

    RocketMQ的特点?

  • 能够保证严格的消息顺序
  • 提供丰富的消息拉取模式
  • 高效的订阅者水平扩展能力
  • 实时的消息订阅机制
  • 亿级消息堆积能力
  • 较少的依赖

  • 提供丰富的消息拉取模式

    实时的消息订阅机制

    较少的依赖

    RocketMQ系列之初识MQ

    RocketMQ的优势?

  • 强调集群无单点,可扩展,任意一点高可用,水平可扩展
  • 海量消息堆积能力,消息堆积后,写入低延迟
  • 支持上万个队列
  • 消息失败重试机制
  • 消息可查询
  • 开源社区活跃
  • 比较成熟稳定,经过阿里多次双十一验证
  • 海量消息堆积能力,消息堆积后,写入低延迟

    消息失败重试机制

    开源社区活跃

    MQ的简单认识就到这,下节开始我们正式讲解如何玩转RocketMQ,欢迎阅读,让我们一起沉浸在MQ的世界里!!!

    RocketMQ系列之初识MQ

    原文始发于微信公众号(Justin的后端书架):

    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> RocketMQ系列之初识MQ


    赏
     上一篇
    RocketMQ系列之入门 RocketMQ系列之入门
    前言 这几天把服务器上环境重新装了下,由于项目也比较忙,所以更新比较慢,上节我们把RMQ的多Master集群搭建起来了,我们今天就来看看如何向这个集群生产消息以及消费消息。 集群搭建回顾 回顾上节的内容,我总结下以下几步: 第一:
    下一篇 
    RocketMQ系列之集群搭建 RocketMQ系列之集群搭建
    前言 上节我们对RocketMQ(以下简称RMQ)有了一些基本的认识,大致知道了,什么是RMQ以及他能做什么,今天我们来讲讲如何搭建RMQ,与其说搭建RMQ不如说是搭建RMQ集群,为什么这么说呢?看完这篇文章自然就懂了。 RMQ几