zoukankan      html  css  js  c++  java
  • RocketMq总结

    MQ的主要特点为解耦、异步、削峰。或者说
    1、系统解耦
    2、流量削峰
    3、异步分发
    用于减少数据库压力的业务场景,其中RocketMQ的核心组件概念如下:

    Producer:生产发送消息
    Broker:存储Producer发送过来的消息
    Consumer:从Broker拉取消息并进行消费
    NameServer:为Producer或Consumer路由到Broker

    RocketMq
    集群工作流程
    1、启动NameServer,等待Broker,Producer,Consumer连接,NameServer相当于注册中心,用于路由控制。
    2、Broker启动,跟所有NameServer保持长连接,心跳机制,定时发送心跳包,心跳包包含当前Broker信息(IP+端口)以及存储所有的Topic信息。
    心跳:
    心跳间隔:每隔30秒(此时间无法更改)向所有nameserver发送心跳,心跳包含了自身的topic配置信息。
    心跳超时:nameserver每隔10秒钟(此时间无法更改),扫描所有还存活的broker连接,若某个连接2分钟内(当前时间与最后更新时间差值超过2分钟,此时间无法更改)没有发送心跳数据,则断开连接。
    断路:
    时机:broker挂掉;心跳超时导致nameserver主动关闭连接
    动作:一旦连接断开,nameserver会立即感知,更新topic与队列的对应关系,但不会通知生产者和消费者
    3、producer,单个producer与其中一台nameserver建立长连接,定时查询topic配置信息,轮询时间,每隔30秒(非心跳机制)从nameserver获取所有topic的最新队列情况。
    单个producer与所有broker建立长连接。
    心跳:
    默认情况下,生产者每隔30秒向所有broker发送心跳,该时间由DefaultMQProducer的heartbeatBrokerInterval参数决定,可手动配置。broker每隔10秒钟(此时间无法更改),扫描所有还存活的连接,若某个连接2分钟内(当前时间与最后更新时间差值超过2分钟,此时间无法更改)没有发送心跳数据,则关闭连接。
    4、consumer,单个消费者和一台nameserver保持长连接,定时查询topic配置信息,如果该nameserver挂掉,消费者会自动连接下一个nameserver,直到有可用连接为止,并能自动重连。
    默认情况下,消费者每隔30秒从nameserver获取所有topic的最新队列情况,这意味着某个broker如果宕机,客户端最多要30秒才能感知。该时间由DefaultMQPushConsumer的pollNameServerInteval参数决定,可手动配置。
    单个消费者和该消费者关联的所有broker保持长连接。
    默认情况下,消费者每隔30秒向所有broker发送心跳,该时间由DefaultMQPushConsumer的heartbeatBrokerInterval参数决定,可手动配置。broker每隔10秒钟(此时间无法更改),扫描所有还存活的连接,若某个连接2分钟内(当前时间与最后更新时间差值超过2分钟,此时间无法更改)没有发送心跳数据,则关闭连接,并向该消费者分组的所有消费者发出通知,分组内消费者重新分配队列继续消费。

  • 相关阅读:
    RedHat Linux下利用sersync进行实时同步数据
    curl网站开发指南
    常用命令
    Linux 查看CPU信息、机器型号等硬件信息
    -bash: crontab: command not found(转)
    端口映射工具--socat
    左右半透明的无缝滚动
    js学习笔记33----DOM操作
    Framework 7 之 给Picker Modal 添加半透明背景
    网页嵌入自定义字体方法
  • 原文地址:https://www.cnblogs.com/stubborn-dude/p/14710089.html
Copyright © 2011-2022 走看看