rocketMq消息中间件认知

来源:互联网 发布:js秒表倒计时 编辑:程序博客网 时间:2024/05/17 03:37
RocketMQ作为一款高性能、高吞吐量的分布式消息中间件
名词解析:
nameServer:注册中心,所有的producter,broker,comsumer启动时都需要向注册中心注册,nameServer之间不能通讯。
broker:提供关于消息的管理、存储、分发等功能.
l  连接
      单个broker和所有nameserver保持长连接
l  心跳
     心跳间隔:每隔30秒(此时间无法更改)向所有nameserver发送心跳,心跳包含了自身的topic配置信息。
      心跳超时:nameserver每隔10秒钟(此时间无法更改),扫描所有还存活broker连接,某个连接2分钟内(当前时间与最后更新时间差值超过2分钟,此时间无法更改)没有发送心跳数据断开连接。
l  断开
     时机:broker挂掉;心跳超时导致nameserver主动关闭连接
     动作:一旦连接断开,nameserver会立即感知,更新topc与队列的对应关系,但不会通知生产者和消费者
consumer: 消息的消费者,有两个主要的consumer:DefaultMQPullConsumer和DefaultMQPushConsumer,深入代码后可以发现,rocket的consumer都是采用的pull模式来处理消息的。在集群消息的配置 下,集群内各个服务平均分配消息,当其中一台consumer宕机,分配给它的消息会继续分配给其它的consumer。
producter:消息生产者。每个producer都需要属于一个group,producer的group概念除了在事务消息时起到一些作用,但是其它时候,更多的还只是一个虚拟的概念。

Broker配置方式及优缺点:

1.      单个 Master
   这种方式风险较大,一旦Broker 重启或者宕机时,会导致整个服务不可用,不建议线上环境使用。
2.      多 Master 模式
   一个集群无 Slave,全是 Master,例如 2 个 Master 或者 3 个 Master
   优点:配置简单,单个Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由与 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最高。
   缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到受到影响。
3.      多 Master 多 Slave 模式,异步复制
   每个 Master 配置一个 Slave,有多对Master-Slave,HA 采用异步复制方式,主备有短暂消息延迟,毫秒级。
   优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为 Master 宕机后,消费者仍然可以从 Slave 消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。
阅读全文
0 0
原创粉丝点击