RocketMQ简介

   说起RocketMQ,首先我们了解一下什么是MQ。MQ全称Message Queue即消息队列,是一种应用程序对应用程序的通信方法,一个可能不是很恰当的例子比如在北京租房人和房东之间的通信,中介相当于MQ租房人和房东之间不需要之间沟通。应用程序通过读取队列的消息来通信,不需要专门的连接。消息传递在程序之间通过在消息中发送数据进行通信,不需要通过调彼此。

    目前技术上比较成熟的MQ有:Kafka、RocketMQ、RabbitMQ。

    RockMQ是一款分布式、队列模型、阿里云研发的消息中间件。具有能够保证严格的消息顺序、提供消息拉取模式、订阅者水平扩展能力、实时的消息订阅机制、支持事务消息、亿级消息堆积能力。

    RockMQ几个重要的角色NameServer、Broker、Topic、Producer、Consumer。

    NameServer管理集群Topic Queue路由配置和Broker的实时配置信息,可以看成RocketMQ的注册中心、路由控制中心,其他模块通过nameserve提供的接口获取最新的topic配置和路由信息。RocketMQ部署结构中,首先启动nameserve,等待Broker、Producer、Consumer连接。

    Broker将注册配置信息到nameserver,实时更新topic信息到nameserver。它负责接收并存储消息,提供push和pull接口将消息发送给consumer,提供消息查询功能。Broker启动跟所有的NameService保持长连接,定时发送心跳信息,包含当前Broker的IP和端口等信息、以及存储的所有topic信息。收发消息前,先创建topic,创建topic时指定该topic要存在哪些Broker上,也可以在发送消息时自动创建Topic。

    生产者Producer,消息发送端,通过nameserver获取所有broker的路由信息,根据负载均衡策略将消息发送对应的broker,然后调用broker接口提交消息。Producer发送消息,启动时先跟NameService集群中的其中一台建立长连接,并从NameService中获取当前发送的Topic存在Broker上。

    消费者Consumer,通过查询接口获取topic对应的Broker地址信息,通过向Broker发送pull请求来获取消息可选择从Master或者Slave读取数据。如果在请求时没有数据,broker可将请求暂时不返回等待新消息时返回,push模式。Consumer可以有两种启动模式,分别是广播和集群,广播模式下一条消息会发送给所有的consumer,集群模式小消息只发给一个consumer。跟Producer类似,跟其中一台NameService建立长连接,获取当前订阅Topic存在哪些Broker,然后直接跟Broker建立连接通道,开始消费消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值