hj_rocketmq

官方文档 -> rocketmq     github ->  rocketmq    

 消息队列是高并发系统的核心组件之一,能为系统解构提升开发效率,增加系统稳定性,主要有以下优势:

  • 削峰填谷 -> 解决瞬时写压力大于应用服务能力导致消息丢失,系统崩溃等问题;
  • 系统解耦 -> 解决不同重要程度,不同能力级别系统之间因为依赖而因一个而全部宕机问题;
  • 提升性能 -> 一对多的调用,可以一条消息给消息系统,其他相关系统分别处理;
  • 蓄流测压 -> 线上有些链路不好压测,可通过堆积一定量消息再开放来压测

目前主流MQ -> Rocketmq , kafka , Rabbitmq , Activemq 

rocketmq 主要优势: 经过双十一的高并发考验, 支持结合rocketmq的多系统之间数据最终一致性, 支持18个级别的延迟消息, 

        支持指定次数和时间间隔的失败消息重发, 支持 consumer 端 tag 过滤, 支持重复消费.

架构图:

  • Name Server : 充当路由消息的提供者,一个几乎无状态的节点,可集群部署,节点之间无任何信息同步;
  • Broker : 消息中转角色,负责存储转发消息,部署相对复杂,分为 Master 与 Slave ,通过指定相同的BrokerName,不同的BrokerId
    来指定建立对应关系,BorkerId为0表示Master,非0表示Slave,都可以部署多个,每个 broker 与 Name Server 节点存在长连接,
    定时(30s)注册Topic到Name Server 中,Name Server 定时(10s)扫描所有存活的broker连接,若2分钟没收到心跳,则断开连接;
  • Producer : 与Name Server 集群中的一个节点(随机)建立长连接,定期(30s)拉取Topic路由信息,并向提供Topic服务的Master Broker建立
    长连接,且定时(30s)发送心跳,Producer完全无状态,可集群部署
  • Consumer : 与Name Server 集群中的一个节点(随机)建立长连接,定期(30s)拉取Topic路由信息,并向提供Topic服务的Master Broker
    Slave Broker 建立长连接,且定时(30s)发送心跳,既可从Master也可从Slave订阅消息,订阅规则由Broker配置决定.

  Broker 中的一些重要名词概述: topic -> 消息的第一级类型,如交易消息; queue -> topic下的子主题; tags -> 是topic下的次级/二级消息类型,如交易创建消息;

                                          offset -> 存储消息时为每个topic下的queue生成的一个消息的索引文件,每个queue都对应一个Offset记录当前queue中的消息条数.

消息的种类

  • 按照发送的特点分: 同步消息  异步消息  单向消息
  • 按照使用功能特点分: 普通消息 顺序消息 广播消息 延时消息 批量消息 事务消息 

参考博客:

   Rocketmq原理&复杂分布式事务解法

   Rocketmq简介

原文地址:https://www.cnblogs.com/hua-jian/p/15396597.html