RocketMQ内部知识体系

桃扇骨 2023-07-20 05:35 50阅读 0赞

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。

未完,

发表评论

表情:
评论列表 (有 0 条评论,50人围观)

还没有评论,来说两句吧...

相关阅读

    相关 RocketMQ内部知识体系

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

    相关 Java知识体系

    Java学习之路 2021年一个全新的开始,不再做温水里的青蛙,不再犹豫,不再彷徨,动起来,做最好的自己。不积跬步无以至千里,不积小流无以成江河。 一、Java基础

    相关 知识体系

    读web全栈工程师的自我修养 在招聘初级工程师的时候考察应聘者对知识的掌握程度 对浏览器兼容性的了解 对HTML、CSS,JavaScript语法和原理

    相关 RocketMQ 相关知识

    RocketMQ 相关知识 > Rocket MQ消息队列(Message Queue,简称 MQ)是阿里巴巴集团中间件技术部自主研发的专业消息中间件。产品基于高可用分布