ActiveMQ持久化机制-kahaDB,保证MQ的高可用

本文探讨了MQ的高可用性保障措施,重点介绍了ActiveMQ的四种持久化机制:JDBC、AMQ、kahaDB和LevelDB。其中,kahaDB作为ActiveMQ默认的消息存储方式,通过事务日志和索引文件确保消息的可靠存储与恢复。

如何保证MQ的高可用?或者如何保证JMS的可靠性 对于诸如此类的回答,大致可以从四个方面进行回答:

  • 1.持久性(persistent)
  • 2.事务
  • 3.签收(Acknowledge)
  • 4.可持久化

其中前三点是MQ中间件内部实现方式,一旦MQ发生故障,该如何保持MQ的高可用?我们做一下假设,如果有一种机制可以和MQ实现同步,将MQ中的信息同步到数据库,本地硬盘,u盘之类的外部设备,那么当MQ发生故障,就保证了MQ的可靠性,保证消息不会丢失

1.引出正文

为了避免意外宕机后信息的丢失,需要做到重启后回复消息队列,消息系统一般都会采用持久化机制,ActiveMQ采用持久化的机制有:

  • JDBC
  • AMQ
  • kahaDB
  • LevelDB

无论是那种方式,消息的存储逻辑都是一致的,即发送者将消息发出后,消息中心首先将消息存储到本地数据文件,内存数据库,或者远程数据库等,再试图将消息发送给接收者,成功则将消息从存储中删除,失败则继续尝试发送,消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去

2.AMQ

此种方式已经被淘汰,不需要过多介绍
在这里插入图片描述

3.kahaDB-默认消息存储

在这里插入图片描述
我们打开控制台,之所以能够看到Queuetopic里的消息记录,就是因为MQ采用了某种存储机制,比如kahaDB,才能从消息存储中拿出数据展示给我们
简介:
kahaDB是基于日志文件,是ActiveMQ5.4开始默认的存储方式,可用于任何场景,消息存储使用一个
事务日志和仅仅用一个索引文件来存储它所有的地址
在这里插入图片描述
数据存储在这个文件夹下,我用的是阿里云服务器,我给出我的data路径:
/myactivemq/apache-activemq-5.15.12/data/kahadb
我们列出这个文件下的目录树

-rw-r--r-- 1 root root 33554432 Apr  7 18:13 db-1.log
-rw-r--r-- 1 root root   106496 Apr  7 18:13 db.data
-rw-r--r-- 1 root root       21 Apr  7 18:13 db.free
-rw-r--r-- 1 root root    86176 Apr  7 18:13 db.redo
-rw-r--r-- 1 root root        8 Apr  7 18:12 lock
3.1 db-.log

在这里插入图片描述
在这里插入图片描述

3.2 db.data

在这里插入图片描述
和mysql数据库一样,db.data相当于myISAM中的索引文件,db.log就相当于myISAM中的数据文件,根据索引找数据文件中的数据,这就是上文我们提到的事务日志索引文件

3.3 db.free

在这里插入图片描述

3.4 db.redo

类似于一种容灾技术
在这里插入图片描述

3.5 lock

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值