• RocketMQ概述


    RocketMQ概述

    一、什么是消息队列?

    消息队列(Message Queue),从广义上讲是一种消息队列服务中间件,提供一套完整的信息生产、传递、消费的软件系统。从字面意思看,由2部分组成,我们先讲Queue,再讲Message。

    队列(Queue):是一种先进先出(First in First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头,如下:

     

    消息(Message):就是上面a1,a2,a3……an 的消息块。

    把数据放到消息队列叫做生产者
    从消息队列里边取数据叫做消费者

    二、消息队列到底解决了什么问题?

    • 程序解耦

    传统模式:每次有新系统接入,都需要调整代码。

    消息队列模式:将消息写入消息队列服务,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。

    • 异步处理

    传统模式:一些非必要的业务逻辑以同步的方式运行,太耗费时间。

    消息队列模式: 将消息写入消息队列,异步方式运行。

    • 削峰填谷

    传统模式模式:并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常。

    消息队列模式:系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。

    • 数据的最终一致性(非事务消息,跨行转账)

    三、常见消息队列

    时下流行的消息队列组件
    消息队列名字 Apache ActiveMQ Apache Kafka Apache RocketMQ Apache Pulsar
     产生时间 2007 2012 2017   2018
     贡献公司 Apache  LinkedIn  Kafka,ActiveMQ  RocketMQ,Kafka
     特性

    (1) 支持协议众多:AMQP,STOMP,MQTT,JMS

    (2) 消息是持久化的JDBC

    (1) 超高写入速率

    (2) end-to-end 耗时毫秒级

    (1) 万亿级消息支持

    (2) 万级Topic数量支持

    (3) end-to-end 耗时毫秒级

    (1) 存储计算分离

    (2) 支持SQL数据查询 

     管理后台 自带 独立部署  独立部署  无
     多语言客户端  支持   支持

    Java

    C++

    Python

    Go

    C#

    Java

    C++

    Python

    Go

     数据流支持 不支持   支持  支持  支持
     消息丢失  理论上不会丢失  理论上不会丢失  理论上不会丢失  理论上不会丢失
     文档完备性  好  极好  极好  社区不断完善中
     商业公司实践  国内部分企业  LinkedIn  阿里巴巴  雅虎、腾讯、智联招聘
    容错 无重试机制 无重试机制 支持重试,死信消息 支持重试,死信消息
    顺序消息 支持 支持 支持 支持
    定时消息 不支持 不支持 支持 支持
    事务消息 不支持 支持 支持 支持
    消息轨迹 不支持 不支持 支持 自己实现简单
    消息查询 数据库中查询 不支持 支持 支持SQL
    重放消息 不清楚 暂停重放 实时重放 支持
    宕机 自动切换 自动选主 手动重启 自动切换
     
  • 相关阅读:
    考试题1
    九九乘法表
    面向对象
    *****用循环运用
    编辑实现逻辑运算和循环计数
    求:1-3+5-7+...-99+101的值的(分析求解)。
    三层for循环求解组成三角形边的组合
    for循环的应用
    Java基础输出语句
    习题4 编写一个方法method(),判断一个数能否同时被3和5整除
  • 原文地址:https://www.cnblogs.com/zuoyang/p/14384124.html
Copyright © 2020-2023  润新知