博主
258
258
258
258
专辑

消息中间件之RocketMQ

2023-09-10 13:02:46 3500 0 0 0
  • 一、官方地址:https://rocketmq.apache.org/zh/
    二、kafka、rabbitmq、rockermq比较:https://blog.csdn.net/weixin_38002497/article/details/106055120
    三、基本概念
    基础概念
    -Producer: 消息生产者,负责产生消息,一般由业务系统负责产生消息
    -Producer Group:消息生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者
    -Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费
    -Consumer Group:消费者组,和生产者类似,消费同一类消息的多个 Consumer 实例组成一个消费者组
    -Topic:主题,用于将消息按主题做划分,Producer将消息发往指定的Topic,Consumer订阅该Topic就可以收到这条消息
    -Message:消息,每个message必须指定一个topic,Message 还有一个可选的 Tag 设置,以便消费端可以基于 Tag 进行过滤消息
    -Tag:标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
    -Broker:Broker是RocketMQ的核心模块,负责接收并存储消息,同时提供Push/Pull接口来将消息发送给Consumer。Broker同时提供消息查询的功能,可以通过MessageID和MessageKey来查询消息。Borker会将自己的Topic配置信息实时同步到NameServer
    -Queue:Topic和Queue是1对多的关系,一个Topic下可以包含多个Queue,主要用于负载均衡,Queue数量设置建议不要比消费者数少。发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个Queue上。Consumer订阅消息时,会根据负载均衡策略决定订阅哪些Queue的消息
    -Offset:RocketMQ在存储消息时会为每个Topic下的每个Queue生成一个消息的索引文件,每个Queue都对应一个Offset记录当前Queue中消息条数
    -NameServer:NameServer可以看作是RocketMQ的注册中心,它管理两部分数据:集群的Topic-Queue的路由配置;Broker的实时配置信息。其它模块通过Nameserv提供的接口获取最新的Topic配置和路由信息;各 NameServer 之间不会互相通信, 各 NameServer 都有完整的路由信息,即无状态。
    -Producer/Consumer :通过查询接口获取Topic对应的Broker的地址信息和Topic-Queue的路由配置
    -Broker : 注册配置信息到NameServer, 实时更新Topic信息到NameServer
    四、基础框架
    图片alt

    NameServer:启动,监听端口,等待producer,consumer,broker连接上来
    Broker:启动,与nameserver保持长链接,定期向nameserver发送心跳信息,包含broker的ip,端口,当前broker上topic的信息
    producer:启动,随机选择一个NameServer建立长连接,拿到broker的信息,然后就可以给broker发送消息了
    consumer:启动,随机选择一个NameServer建立长连接,拿到broker的信息,然后就可以建立通道,消费消息