消息中间件-RocketMQ技术(二)

简介: 消息中间件-RocketMQ技术(二)

一、RocketMQ的设计目标

1、架构模式

RocketMQ是采用发布订阅模式,参与的组件:消息发送者,消息存储,消息消费者,路由发现。

2、顺序消息

在RocketMQ中主要指的是局部顺序,队列内是有顺序的。消费消息的顺序和存储到队列的顺序是一致的。

3、消息过滤

在消息消费时,消费者可以对同一主题下的消息按照规则只消费自己感兴趣的消息。支持在服务端过滤(Broker将消费者感兴趣的消息发给消费者)和消费端的消息过滤(缺点:有很多无用的消息会从Broker传输到消费端)的机制。

4、消息存储

消息中间件的核心功能就是消息存储,考量维度:消息堆积能力与消息存储性能。追求消息存储的高性能引入内存映射机制。所有主题的消息顺序存储在同一个文件中。同时为了避免消息无限制的累积,引入了过期机制和空间报警机制。

5、消息的可靠性

通常的可靠性表现在如下的几个场景下:

a、Broker正常关机

b、Broker异常宕机

c、操作系统宕机

d、机器断电,但是能立即恢复供电的情况

e、机器无法开机

f、磁盘设备损坏

情况a-d的RocketMQ在同步刷盘机制下可以保证消息不丢失。在异步刷盘模式下,情况a不会丢失,情况b-d会丢失少量消息。

情况e,f属于单点故障,一旦发生,该节点上的消息全部消失。如果开启了异步复制的话,RocketMQ能保证只会丢失少量数据。后续版本的RocketMQ将会引入多副本机制。

6、消费低延时

在不发生消息堆积时,以长轮询的方式实现准实时的消息推送模式。

7、确保消息被消费一次

ACK:代表消息的确认机制。但是ACK可能会丢失,所以这时消费者就重复消费消息了。

8、回溯消息

由于业务需要重新消费消息,RocketMQ支持时间回溯消息,向前和向后都是可以的,单位精确到毫秒。

9、消息堆积

RocketMQ的特点是异步解耦,而且削峰的能力,所以会有消息的堆积。而且消息不是永久的存储到消息服务器里,提供了过期的机制,默认是3天。

10、定时消息

定时消息是指消息发送到Broker中,不会马上被消费掉。要到特定的时间点才会被消费。如果要定时的消费的话,需要对消息进行排序在broker。这样性能必定会降低。所以不支持任意进度的定时消费。而是支持延迟消费。也就是延迟队列。

11、消息重试机制

消息在消费时,发生异常的话,消息中间件是支持重复消息的投递的。


明天见~~

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
3月前
|
消息中间件 存储 中间件
消息中间件-RocketMQ技术(一)
消息中间件-RocketMQ技术(一)
|
2月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
111 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
1月前
|
消息中间件 存储 Java
吃透 RocketMQ 消息中间件,看这篇就够了!
本文详细介绍 RocketMQ 的五大要点、核心特性及应用场景,涵盖高并发业务场景下的消息中间件关键知识点。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
吃透 RocketMQ 消息中间件,看这篇就够了!
|
7月前
|
消息中间件 存储 负载均衡
消息中间件的选择:RabbitMQ是一个明智的选择
消息中间件的选择:RabbitMQ是一个明智的选择
115 0
|
6月前
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
1566 0
|
5月前
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
279 3
|
4月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
4月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
4月前
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】