消息中间件-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
相关文章
|
24天前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
2月前
|
消息中间件 存储 中间件
消息中间件-RocketMQ技术(一)
消息中间件-RocketMQ技术(一)
|
1月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
83 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
17天前
|
消息中间件 存储 Java
吃透 RocketMQ 消息中间件,看这篇就够了!
本文详细介绍 RocketMQ 的五大要点、核心特性及应用场景,涵盖高并发业务场景下的消息中间件关键知识点。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
吃透 RocketMQ 消息中间件,看这篇就够了!
|
23天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
63 6
|
17天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
1月前
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
63 7
|
21天前
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!
|
28天前
|
消息中间件 存储 弹性计算
云消息队列RabbitMQ实践
云消息队列RabbitMQ实践
|
1月前
|
消息中间件 存储 监控
解决方案 | 云消息队列RabbitMQ实践
在实际业务中,网站因消息堆积和高流量脉冲导致系统故障。为解决这些问题,云消息队列 RabbitMQ 版提供高性能的消息处理和海量消息堆积能力,确保系统在流量高峰时仍能稳定运行。迁移前需进行技术能力和成本效益评估,包括功能、性能、限制值及费用等方面。迁移步骤包括元数据迁移、创建用户、网络打通和数据迁移。
63 4