zoukankan      html  css  js  c++  java
  • 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
    重放消息 不清楚 暂停重放 实时重放 支持
    宕机 自动切换 自动选主 手动重启 自动切换
     
  • 相关阅读:
    cef加载flash的办法
    一个高性能的对象属性复制类,支持不同类型对象间复制,支持Nullable<T>类型属性
    php检测php.ini是否配制正确
    openwrt的路由器重置root密码
    windows 7 + vs2010 sp1编译 x64位版qt4
    解决SourceGrid在某些系统上无法用鼠标滚轮滚动的问题
    判断一个点是否在多边形内部,射线法思路,C#实现
    [转载]使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
    让Dapper+SqlCE支持ntext数据类型和超过4000字符的存储
    通过WMI
  • 原文地址:https://www.cnblogs.com/zuoyang/p/14384124.html
Copyright © 2011-2022 走看看