ActiveMQ LevelDB持久化机制
来源:互联网 发布:win7固态硬盘开机优化 编辑:程序博客网 时间:2024/04/28 08:12
LevelDB:从ActiveMQ 5.6版本之后,又推出了LevelDB的持久化引擎。LevelDB持久化性能高于KahaDB,虽然目前默认的持久化方式仍然是KahaDB,但是LevelDB是将来的趋势。并且,在ActiveMQ 5.9版本提供了基于LevelDB和Zookeeper的数据复制方式,用于Master-slave方式的首选数据复制方案。LevelDB使用自定义的索引代替常用的BTree索引。
通过上图可以看出LevelDB主要由6部分组成:内存中的MemTable和ImmutableMemTable,还有硬盘上的log文件,manifest文件,current文件和SSTable文件。还有一些其他的辅助文件,暂时不做说明。
每写入一次数据,需要写入log文件,和MemTable,也就是说,只需要一次硬盘的顺序写入,和一个内存写入,如果系统崩溃,可以通过log文件恢复数据。每次写入会先写log文件,后写MemTable来保证不丢失数据。
当MemTable到达内存阀值,LevelDB会创建一个新的MemTable和log文件,而旧的MemTable会变成ImmutableMemTable,ImmutableMemTable的内容是只读的。然后系统会定时的异步的把ImmutableMemTable的数据写入新的SSTable文件。
SSTable文件和MemTable,ImmutableMemTable的数据结构相同,都是key,value的数据,按照key排序。
manifest文件用于记录每个SSTable的key的起始值和结束值,有点类似于B-tree索引。而manifest同样会生成新文件,旧的文件不再使用。current文件就是指定哪个manifest文件是现在正在使用的。
更具体实现原理可参见:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html
- ActiveMQ LevelDB持久化机制
- ActiveMQ的持久化存储机制
- ActiveMQ的几种消息持久化机制
- 消息中间件-activemq消息机制和持久化介绍(三)
- ActiveMQ的几种消息持久化机制
- ActiveMQ的几种消息持久化机制
- ActiveMQ持久化测试
- ActiveMQ 数据库持久化
- activemq持久化
- ActiveMQ持久化方式
- ActiveMQ持久化方式
- activemq持久化设置
- ActiveMQ持久化方式
- ActiveMQ的持久化
- ActiveMq持久化消息
- ActiveMQ持久化方式
- ActiveMQ持久化方式
- activemq 持久化
- Y400中通过easybcd在win7下面的安装Ubuntu14
- Java之随机数
- Linux 编译报错 undefined reference to `pthread_create'
- uva10635 Prince and Princess(LCS转LIS)
- 计算几何 uva11117 Morley's Theorem
- ActiveMQ LevelDB持久化机制
- *LeetCode-Permutation
- 将VS2012的项目转化为VS2010
- 在Android studio中建立Java工程
- TSP问题
- 关于C#类中重写ToString方法和PHP类中__tostring()方法的比较
- PageAdapter不能刷新问题
- Week2-5Spelling similarity:edit distance
- 我