• 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分钟,此时间无法更改)没有发送心跳数据,则关闭连接,并向该消费者分组的所有消费者发出通知,分组内消费者重新分配队列继续消费。

  • 相关阅读:
    RESTful规范1
    Django -- 发送HTML格式的邮件
    11.10 vue
    Selenium 使用
    Beautiful Soup的用法
    Pthon常用模块之requests,urllib和re
    爬虫--工具安装Jupyter anaconda
    11-3
    Python -- tabulate 模块,
    Python -- queue队列模块
  • 原文地址:https://www.cnblogs.com/stubborn-dude/p/14710089.html
Copyright © 2020-2023  润新知