RocketMQ的详解

简介

RocketMQ是由阿里团队研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的开源项目 

特点

        具有灵活的可扩展性

                RocketMQ天然支持集群,其核心四大组件(NameServer,Broker,Producer,Consumer)的每一个都可以在没有单点故障的情况下进行水平扩展

        具有海量消息堆积能力

               RocketMQ采用零拷贝原理实现了超大量消息的堆积能力,据说单机已经支持亿级消息堆积,而且在堆积了这么多消息后保持写入低延迟

        支持顺序消息

                RocketMq可以保持消息消费者按照消息的发送顺序对消息进行消费.顺序消息分为全局有序消息和局部有序消息,一般推荐使用局部有序消息,即生产者通过将某一类消息按照顺序发送至同一队列中来实现

        支持多种消息过滤方式

                消息过滤分为在服务器端过滤和在消费端过滤.在服务器端过滤时可以按照消息消费者的要求进行过滤,优点是减少不必要的消息传输,缺点是增加了消息服务器的负担,实现相对复杂.消费端过滤则完全由具体应用自定义实现,这种方式更加灵活,缺点是很多无用的消息会被传输给消息消费者

        支持事务消息

                RocketMQ除支持普通消息,顺序消息外,还支持事务消息,这个特性对于分布式事务来说提供了另一种解决思路

        支持回溯消费

                回溯消费指的是消费者已经消费成功的消息,由于业务需求需要重新消费.RocketMQ支持按照时间回溯消费,时间维度精确到毫秒,可以向前回溯,也可以向后回溯

架构图讲解

        

        

        Name Server

                简介:NameServer是一个功能产全的服务器,其角色类似Dubbo中的Zookeeper,NameServer与Zookeeper相比更轻量

                作用:NameServer的主要功能是为整个M集群提供服务协调与治理,具体就是记录维护Topic、Broker的信息,及监控Broker的运行状态。

                brocker管理

                        NameServer接受Broker集群的注册信息,并目保存下来作为路由信息的基本数据

                        然后提供心跳检测机制,检查Broker是否还存活

                路由信息管理

                        每NameServer将保存关于Broker集群的整人路由信息,Producer和Conumser通过NameServer,就可以知道整Broker群的路由信息,从而进行消息的投递和消费

                注:Name Server节点采取集群部署,但节点之间不会同步数据。每个Name Server节点保存完整的数据,单个节点挂掉不会影响整个集群,

        Broker集群

                Broker采用主从集群模式,实现多副本存储和高可用。每个Broker节点都要与所有的Name Server节点建立长连接,以定义注册Topic的路由信息和发送心跳。通过与所有Name Server建立连接,Broker可以避免因单个Name Server节点挂掉而受到影响。在主从模式下,Slave节点主动从Master节点拉取消息。

                Broker消息服务器,作为Server提供消息核心服务,它接收并存储Producer生产的消息

                Broker的核心功能包含如下:

                        接收 Producer 发过来的消息

                        处理 Consumer 的消费消息请求

                        消息的持 久化存储

                        消息的 HA 机制

                        服务幄见端过滤功能等

                官网上有数据显示:具有上亿级消息堆积能力,同时可严格保证消息的有序性

        Producer

                消息的生产者,通过name Server 找到broker地址,将消息推送到队列broker中,生产者将消息写入到消息队列中,可根据业务的不通采取不同的写入策略,例:

                        同步发送

                        异步发送

                        延迟发送

                        发送事务消息等

        Consumer

                Consumer,即消息消费者,负责消费消息。

                Consumer也由用户部署,一般是后台系统负责异步消费

                Consumer功能包含:

                        PUSH方式消费

                                顾名思义,就是推的意思,就是当MO收到生产者产生的消息的时候,会主动将消息推送到消费者进行消费,这种模式就push.

                        PULL方式消费

                                push是MQ主动给消费者推消息,那么pull呢? 刚好跟push相反,就是消费者主动去MQ中拉取消息.完全由业务系统去控制,定时拉取消息,指定队列消费等等,当然这里需要业务系统去根据自己的业务需求去实现。

                        .集群和广播消费

                                除此之外,还支持集群消费和广播消息消费,以及提供实时的消息订阅机制。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值