RocketMQ(一)基础概念及简介

作者: 我犟不过你 | 来源:发表于2020-10-13 15:28 被阅读0次

    简介

    RokcetMQ使用java语言开发,由阿里巴巴研发,目前作为Apache的开源项目,经历过阿里双十一的流量冲击,是一款高性能分布式中间件。

    主流mq简单对比

    特性 ActiveMQ Kafka RocketMQ RabbitMq
    客户端支持 Java,.NET,C ++等 Java,Scala等 Java,C ++,Go 语言无关
    协议规范 推送模型,支持OpenWire,STOMP,AMQP,MQTT,JMS 拉模型,支持TCP 拉模型,支持TCP,JMS,OpenMessaging 推拉模式,AMQP
    顺序消息 独占消费者或独占队列可以确保顺序 确保分区内消息的顺序 确保消息的严格排序,并能够优雅地向外扩展 独占消费者或独占队列可以确保顺序
    消息调度 支持 不支持 支持 支持
    批量消息 不支持 支持异步生产者 支持同步避免消息丢失 不支持
    消息广播 支持 不支持 支持 支持
    消息过滤 支持 支持,您可以使用Kafka流来过滤消息 支持基于SQL92的属性过滤器表达式 不支持
    消息重试 不支持 不支持 支持 支持
    消息持久化 使用JDBC和高性能日志(如levelDB、kahaDB)支持非常快的持久性 高性能文件存储 高性能和低延迟的文件存储 内存和文件存储
    消息追溯 支持 支持的时间戳和偏移量两种表示 支持偏移量表示 未知
    消息优先级 支持 不支持 不支持 支持
    高可用及故障转移 支持,取决于存储,如果使用kahadb,它需要一个ZooKeeper服务器 支持,需要ZooKeeper服务器 支持主从模型,不需要其他工具包 支持主从模型
    消息追踪 不支持 支持 支持 支持
    配置难度 默认配置是低级的,用户需要优化配置参数 Kafka使用键-值对格式进行配置。这些值可以通过文件或编程方式提供。 开箱即用,用户只需要注意几个配置 配置文件、环境变量、运行时参数
    管理及可视化界面 支持 支持,使用终端命令公开核心指标 支持,富web和终端命令,以公开核心指标 支持使用终端命令和丰富的后台可视化界面

    基本概念

    针对上面的对比图,我们下面了解一些基础概念。

    PUSH(推模式):由消息中间件主动地将消息推送给消费者。
    优点:数据变更,客户端立马能感知到。
    缺点:会造成消息堆积甚至缓冲区溢出。

    PULL(拉模式):由消费者主动向消息中间件拉取消息。
    优点:由客户端发起请求,故不存在推模式中数据积压的问题。
    缺点:会增加消息的延迟,即消息到达消费者的时间有点长。

    JMS(Java Message Service):JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。
    https://baike.baidu.com/item/JMS/2836691?fr=aladdin

    AMQP(Advanced Message Queuing Protocol):一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。
    https://baike.baidu.com/item/AMQP

    OpenMessaging:云原生,与供应商无关的开放式规范,用于分布式消息传递。(RocketMQ)
    http://openmessaging.cloud/

    SQL92:是数据库的一个ANSI/ISO标准。它定义了一种语言(SQL)以及数据库的行为(事务、隔离级别等)。
    https://baike.baidu.com/item/SQL92/6333507?fr=aladdin

    相关文章

      网友评论

        本文标题:RocketMQ(一)基础概念及简介

        本文链接:https://www.haomeiwen.com/subject/metvpktx.html