Rocketmq初认识

作者: 宇晨棒棒的 | 来源:发表于2023-08-03 17:56 被阅读0次

    1.Rocketmq的简单介绍

    RocektMQ是阿里巴巴在2012年开源的一个纯java、分布式消息中间件。RocektMQ是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。2016年阿里巴巴将RocketMQ捐赠给Apache,2017年9月RocketMQ正式从Apache社区正式毕业,成为Apache顶级项目。

    2.Rocketmq的特点:

    1)支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型

    2)在一个队列中可靠的先进先出(FIFO)和严格的顺序传递

    3)支持拉(pull)和推(push)两种消息模式

    4)单一队列百万消息的堆积能力

    5)支持多种消息协议,如 JMS、MQTT 等

    6)分布式高可用的部署架构,满足至少一次消息传递语义

    7)提供 docker 镜像用于隔离测试和云集群部署

    8)提供配置、指标和监控等功能丰富的 Dashboard

    3.核心概念

    1)NameServer:可以理解是一个注册中心,主要用来保存topic路由信息、管理Broker。在NameServer集群中,NameServer之间是没有任何通信的

    2)Broker 是 RocketMQ 系统的核心的一个角色,主要是用来保存topic信息,接受producter(生产者)产生的消息,持久化消息以及为Consume(消费者)拉取消息的请求做好准备。

    在一个Broker集群中,相同的BrokerName可以成为一个Broker组,一个Broker组中BrokerId为0的为主节点,其他的为从节点。BrokerName和BrokerId是可以在Broker启动时通过配置文件配置的。每个Broker组中存放一部分消息。

    3)Producer:生产消息的一方,生产者的作用就是将消息发送到 MQ,生产者本身既可以产生消息也可以对外提供接口,由外部应用来调用接口,再由生产者将收到的消息发送到 MQ。

    4)Producer Group:生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。

    5)Consumer:用来消费生产者消息的

    6)Consumer Group:消费者组,和生产者类似,消费同一类消息的多个 consumer 实例组成一个消费者组。

    7)Topic:主题,消息的逻辑分类,比如mq中有订单类的消息,也有库存类的消息,那么就需要进行分类,一个是订单 Topic 存放订单相关的消息,一个是库存 Topic 存储库存相关的消息。

    8)Tag:标签可以被认为是对 Topic 进一步细化。可以用于区分同一topic下的不同业务类型消息,发送消息时也需要指定。

    9)Message:消息的载体。一个 Message 必须指定 topic。Message 还有一个可选的 tag 设置,以便消费端可以基于 tag 进行过滤消息。也可以添加额外的键值对

    4、工作流程

    工作流程(来在网上截图)

    Rocketmq的大致工作流程:

    1)Broker启动的时候,会往每台NameServer(因为NameServer之间不通信,所以每台都得注册)注册自己的信息,这些信息包括自己的ip和端口号,自己这台Broker有哪些topic等信息。

    2)Producer在启动之后会跟NameServer建立连接,定期从NameServer中获取Broker的信息,当发送消息的时候,会根据消息需要发送到哪个topic去找对应的Broker地址,如果有的话,就向这台Broker发送请求;没有找到的话,就看根据是否允许自动创建topic来决定是否发送消息。

    3)Broker在接收到Producer的消息之后,会将消息存起来,持久化,如果有从节点的话,也会主动同步给从节点,实现数据的备份

    4)Consumer启动之后也会跟会NameServer建立连接,定期从NameServer中获取Broker和对应topic的信息,然后根据自己需要订阅的topic信息找到对应的Broker的地址,然后跟Broker建立连接,获取消息,进行消费

    相关文章

      网友评论

        本文标题:Rocketmq初认识

        本文链接:https://www.haomeiwen.com/subject/qulppdtx.html