zoukankan      html  css  js  c++  java
  • 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简介

  • 相关阅读:
    JavaScript学习(五)
    浏览器输入地址到返回页面
    session cookie
    springboot 运行jar包
    mysql:The user specified as a definer ('root'@'%') does not exist
    easyUI
    json
    json fastjson
    springboot:because it is a JDK dynamic proxy that implements:
    git 提示错误:(non-fast-forward)
  • 原文地址:https://www.cnblogs.com/hua-jian/p/15396597.html
Copyright © 2011-2022 走看看