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

简介: 快速学习消息存储方式介绍

开发者学堂课程【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版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
存储 Kubernetes 持续交付
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
1275 0
|
11月前
|
开发工具 数据安全/隐私保护 git
GPG 101
本文介绍了GPG(GnuPG)的基本使用方法,GPG是OpenPGP标准的完整免费实现,支持数据加密和签名。文章涵盖GPG的基础概念、安装、密钥生成与管理、导出与导入、签名与验证、加密与解密以及Git配置等内容。特别提醒不要上传任何信息到公共密钥服务器,以免造成安全隐患。更多详细内容请参考我的博客:[gpg-101](https://blog.timerring.com/posts/gpg-101)。
365 6
|
11月前
|
Ubuntu Linux 测试技术
Python 虚拟环境配置
本文总结了 Python 开发中的环境配置、常用操作和常见错误处理。重点介绍了如何使用 `virtualenv` 搭建虚拟环境,解决依赖冲突问题,并保持系统环境的干净。同时,详细说明了依赖库的安装与管理方法,包括使用 `pip install` 安装依赖、生成和使用 `requirements.txt` 文件,以及查看 Python 文档和修改环境变量等实用技巧。
831 60
|
JSON 安全 搜索推荐
白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧(一)
白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧(一)
1530 1
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
301 2
|
存储 关系型数据库 MySQL
PostgreSQL与MySQL优劣势比较浅谈
PostgreSQL与MySQL优劣势比较浅谈
2393 0
|
存储 Java
HashMap与LinkedHashMap类型集合
【8月更文挑战第4天】`HashMap` 是基于哈希表实现的键值对存储结构,提供快速的查找、插入和删除操作,但不保证元素顺序。适用于不关心顺序且需高效操作的场景。 `LinkedHashMap` 继承自 `HashMap`,保持了元素的插入或访问顺序。适合需要按特定顺序遍历元素的应用,如按添加顺序显示购物车商品。其操作效率与 `HashMap` 相近。
233 1
|
存储 安全 数据库连接
搭建个人云存储解决方案:从零到一
【5月更文挑战第18天】本文指导读者搭建个人云存储解决方案,从选择Nextcloud等开源软件到准备服务器和存储设备,再到安装配置、上传管理文件,强调安全性及扩展性。通过本文,读者可掌握搭建个人云存储的步骤,确保数据安全并享受便捷访问。
1509 3
|
监控 Java 编译器
jstat使用实用教程
jstat使用实用教程
264 0
LXJ
|
存储 Windows
无影云电脑评测
无影云电脑评测
LXJ
1183 0
无影云电脑评测