RocketMQ内部知识体系

RocketMQ,阿里开源,社区活跃度高,现在很多企业都在用,我们今天来聊一下它的内部机制,以帮助我们更灵活的使用MQ。

RocketMQ内部结构:

在这里插入图片描述

  • Name Server:命名服务,可以理解为消息队列的协调服务,broker向它注册路由信息,client从它获取路由信息,类似zk,broker和每个nameserver建立长连接。

  • Broker:mq的核心,提供消息的接收、存储和拉取等功能,为保证高可用,broker分master和slave,master宕机,消费者会从slave获取消息,一个master可对应多个slave,master与slave定义相同的brokerName,通过brokerId区分,brokerId=0表示master,其他表示slave。

    每个broker与Name Server所有节点建立长连接,每30s注册topic到name server上,name server每10s扫描broker连接,如果两分钟后没收到心跳,则name server与broker断开连接。

  • Producer:生产者,与Name Server建立连接,每30s从Name Server获取topic路由信息,并向提供topic服务的broker master/slave建立连接,每30s向关联的broker发送心跳,broker每10s扫描存活连接,broker没有收到心跳,就会关闭与producer的连接。

  • Consumer:消费者,与Name Server建立连接,定时从Name Server获取topic路由信息,并向提供topic服务的broker master/slave建立连接,定时向master/slave发心跳。consumer可以从master/slave订阅消息,订阅规则由broker配置决定。

    consumer每隔30s从name server获取topic最新队列信息,意味着broker如果不可用,consumer30s才能感知。

    consumer每30s发送心跳给broker的master/slave,broker每30s扫描存活的连接,若两分钟内没有连接,则关闭连接,并向consumer group的所有consumer发出通知,group内consumer重新分配队列,继续消费。

    consumer得知master宕机,会去slave请求,slave不能100%同步消息,会有少量消息丢失,一旦master重启,未同步的消息会被最终消费掉。

  • 发送和接收消息前要先创建topic,用来区分不同类型的消息,一个topic可以设置多个queue。

未完,

RocketMQ是一个开源的分布式消息中间件,由阿里巴巴公司开发并捐赠给Apache基金会。它具有高吞吐量、高可用性、可伸缩性和低延迟的特点,被广泛应用于大规模分布式系统中。 以下是一些RocketMQ的重要知识点: 1. 消息模型:RocketMQ基于发布-订阅模型,消息生产者将消息发送到主题(Topic),而消息消费者通过订阅主题来接收消息。 2. 消息存储:RocketMQ使用日志来存储消息,每个主题都有多个消息队列,每个消息队列都对应一个日志文件。消息在写入时会追加到日志文件的末尾,这种方式能够提供较高的写入性能。 3. 高可用性:RocketMQ采用主从复制的方式来保证高可用性。每个主题的消息队列都有一个主节点和多个从节点,主节点负责写入消息,从节点负责复制主节点的消息。 4. 消息顺序性:RocketMQ支持消息的有序消费,即相同主题的消息按照发送顺序被消费。可以通过设置消息的 Key 属性来确保相同 Key 的消息被顺序消费。 5. 高吞吐量:RocketMQ支持水平扩展,可以通过增加消息队列和消息消费者来提高系统的吞吐量。 6. 消息过滤:RocketMQ支持根据消息的属性进行过滤,消费者可以根据属性表达式来选择性地接收消息。 7. 事务消息:RocketMQ支持事务消息,生产者可以发送半消息,然后根据业务逻辑来决定是提交消息还是回滚消息。 这些是RocketMQ的一些核心知识点,希望对你有所帮助。如果你有更多问题,可以继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值