消息存储方式介绍|学习笔记

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 快速学习消息存储方式介绍

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)消息存储方式介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12447


消息存储方式介绍

 

内容介绍:

一、消息的存储

二、存储的介质

三、总结

 

一、消息的存储

研究高级功能的第一个部分消息的存储,明白消息存储的意义,即我们在使用消息中间键的时候,需要考虑发送给 MQ 的消息,保证消息的高可靠性,不会丢失。通常在消息中间键都会有自动的持久化的机制,如果启用持久化的机制后,整个消息的发送和消息消费的流程如下:

image.png当消息的生产者发送消息到 MQ ,MQ 会将消息存储到本地硬盘当中,存储完消息 MQ 对消费生产者进行确认。当消息的消费者上线, MQ 将消息发送给消费者,消费者在本地处理完毕之后也会跟 MQ 进行确认。 MQ 就会将本地持久化的消息进行删除,因为消息已经处理就没有必要在进行保留。这就是整个消息的发送和消息消费的流程。

 

二、存储的介质

若考虑选择消息的介质该如何存储?存储介质如何选择?通常来讲,我们有两种方式:1.使用数据库存储2.使用文件系统之间进行存储

1.使用数据库存储

在 Apache 下存在一个知名的消息对硬件 ActiveMQ 默认关系型数据库进行存储,使用关系型数据库进行存储只需要在消息终结键中做一些简单的配置,告诉其数据库的具体位置,连接信息是什么?消息终结键自动的进行传入,存到关系型数据库做一些配置即可。存到关系型数据库可能会出现的问题:一般来说,消息量比较大在性能方面会出现性能瓶颈的问题,即数据量的达到千万级别的时候,使用关系型数据库取存储往往会拖慢系统的性能。若数据量不大可以考虑这种方式,若数据量较大,现在我们所用的互联网的数据量较大,可以使用这种方法却不是最好的选择。

2.使用文件系统之间进行存储

使用文件系统之间进行存储相比于使用数据存储更加直接,因为关系型数据库还是在系统中储存,直接在系统文件中储存更方便,文件系统属于比较主流的一种系统介质,直接给文件系统储存,比如我们熟知的 rocket、kafaka、rabbitMQ 等等,它们默认的都是直接存储到文件系统当中。其中要进行消息的存储化,通常分为两种模式:1.异步刷盘2.同步刷盘。文件系统作为存储介质,在性能上比关系型数据库优秀很多。若要存储到关系型数据库中,需要启动数据库的服务端,通过数据库的服务端才能存储到文件系统当中,直接存储到文件系统是性能上的提高。所以在 rocketMQ 当中,采用的就是此类方式。

 

三、总结:

在介绍消息存储的过程当中,主要说明两件事情:1.消息存储和消息存储化以及消息发送和消息消费、消息持久化的整体框架流程。2.介绍两种存储介质,微型数据库和文件系统。在 rocketMQ 当中使用的是文件系统的方式进行持久化。

相关实践学习
消息队列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
相关文章
|
11月前
|
消息中间件 存储 canal
3分钟白话RocketMQ系列—— 如何保证消息不丢失
3分钟白话RocketMQ系列—— 如何保证消息不丢失
3618 0
|
1月前
|
消息中间件 存储 RocketMQ
2分钟看懂RocketMQ延迟消息核心原理
本文从源码层面解析了RocketMQ延迟消息的实现原理,包括延迟消息的使用、Broker端处理机制以及定时任务对延迟消息的处理流程。
2分钟看懂RocketMQ延迟消息核心原理
|
2月前
|
消息中间件 负载均衡 RocketMQ
MetaQ/RocketMQ 原理问题之在广播模式下,RebalanceService工作的问题如何解决
MetaQ/RocketMQ 原理问题之在广播模式下,RebalanceService工作的问题如何解决
|
2月前
|
消息中间件 存储 RocketMQ
MetaQ/RocketMQ 原理问题之在解耦场景中,消息队列工作的问题如何解决
MetaQ/RocketMQ 原理问题之在解耦场景中,消息队列工作的问题如何解决
|
3月前
|
消息中间件 存储
【消息队列开发】 实现消息删除逻辑
【消息队列开发】 实现消息删除逻辑
|
3月前
|
消息中间件 IDE 数据库
RocketMQ事务消息学习及刨坑过程
RocketMQ事务消息学习及刨坑过程
|
3月前
|
存储 消息中间件 算法
【消息队列开发】 实现消息持久化
【消息队列开发】 实现消息持久化
|
4月前
|
消息中间件 存储 RocketMQ
大白话-设计RocketMQ延迟消息
RocketMQ的延迟消息使用上非常便捷,但是不支持任意时间的延迟,这一点对于有强迫症的朋友来说就比较难受,但是搞明白为什么这么设计后,就自然释怀了。
|
存储 消息中间件 关系型数据库
一文读懂RocketMQ的存储机制
一文读懂RocketMQ的存储机制
1497 1
|
11月前
|
存储 消息中间件 Java
3分钟白话RocketMQ系列—— 如何存储消息
3分钟白话RocketMQ系列—— 如何存储消息
191 0