目前我们在ActiveMQ中使用KahaDB存储进行消息持久化,目前为止还不错。
根据ActiveMQ5.6的发行说明,LevelDB
可提供增强的性能。
有没有人试过使用LevelDB,如果可以,你可以提供优点和缺点?任何使用LevelDB存储的ActiveMQ消息持久性?
回答
请看这个链接:https://github.com/fusesource/fuse-extra/tree/master/fusemq-leveldb#how-to-use-with-activemq-56 有一个leveldb vs kahadb比较。
我目前正在尝试使用具有高消息吞吐量的系统,并且我已经看到了更好的结果。我仍然需要看看它是否稳定,但目前为止还不错。
FYI:这是官方文档的链接为ActiveMQ LevelDB Store
缺点:
- 这是一个新的品牌商店,所以仍可能留在它的一些错误。
- LevelDB索引需要偶尔“压缩”,这可能会拖延新的写入。
- 您不能只是删除索引并从数据文件中重建它,就像您可以使用KahaDB一样,使用KahaDB
- KahaDB可以更优雅地处理磁盘损坏,恢复它的功能并丢弃损坏的记录。
优点:
- 追加大多磁盘访问模式提高旋转磁盘上PERF。
- 更少的磁盘同步比KahaDB
- 较少的索引条目需要每存储的消息将被插入 从磁盘装入的消息到存储器
- 需要
- 较少索引查找用途的Snappy压缩,以减少对索引的磁盘大小条目
- 可选快速压缩数据日志。
- 发送到复合目标仅将消息存储在磁盘上一次。
- 更快更频繁的数据文件GC。
- 有一个'Replicated' variation它可以自我复制到'奴隶'经纪人,以确保消息级HA。
我们一直在NFS上使用levelDB存储的一个月中的两个月(配置标准文件锁定故障切换)。在过去的几周里,我们已经多次出现了腐败的商店,在日志中没有错误,只是排队堆积,吞吐量非常低。我们唯一能做的就是解决这个问题,就是把商店扔掉,然后重新开始。
因此,我们现在再次切换回旧的可靠的KahaDB商店。
你能否请你用你提供的关于你的设置的任何信息来记录一个错误来重现这个问题:https://issues.apache.org/jira/browse/AMQ – 2013-11-06 01:12:38
LevelDB的大多数表现声明似乎都是空声明。它应该支持高并发读取,但多线程测试显示没有并发增益。https://github.com/ayende/raven.voron/pull/9#issuecomment-29764803
(相比之下,LMDB显示完美的线性性能提升在多个CPU读取。https://github.com/ayende/raven.voron/pull/9#issuecomment-29780359)
我做的AMQ性能广泛的测试,并没有能够获得在主场迎战KahaDB性LevelDB之间存在统计上显著差异我的测试:http://whywebsphere.com/2015/03/12/ibm-mq-vs-apache-activemq-performance-comparison-update/
- 1. 大消息大小的ActiveMQ持久性存储
- 2. Spring Boot嵌入式ActiveMQ持久消息
- 3. 在虚拟目标持久性存储上发送持久性消息
- 4. Websphere MQ消息如何存储以允许持久性?
- 5. 代理如何从jdbc持久性存储中获取消息?
- 6. 使用REST时ActiveMQ持久性问题
- 7. BlackBerry持久性存储
- 8. JMS/ActiveMQ的持久存储容量足以支持200 GB吗?
- 9. 如何使用jdbc消息存储配置activemq而不删除消息后?
- 10. servicemix:作为持久性的jms消息
- 11. Akka未处理消息的持久性
- 12. 迭代ActiveMQ.Advisory.Expired.Queue中的非持久activemq过期消息
- 13. JMS消息持久
- 14. CoreData持久性存储何时创建?
- 15. 如何使用spring-rabbitmq将消息标记为持久性?
- 16. 具有HBase持久性的ActiveMQ
- 17. 如何在持久性存储上创建两个持久存储协调器
- 18. 主题消息可以在activemq中持久吗?
- 19. ActiveMQ:批量发布消息,持久,但不是异步?
- 20. 持久订阅ActiveMQ
- 21. 使用Vim的持久性撤消?
- 22. SQLite持久性存储作为缓存
- 23. 何时应该在ActiveMQ中使用JDBC持久性适配器?
- 24. activemq消息可见性
- 25. 使用WCF时确保消息的持久性
- 26. 黑莓的持久性存储
- 27. 使用ActiveMQ取消订阅持久订阅者
- 28. 使用C#De-Serialize akka.net持久性消息
- 29. Hazelcast持久消息队列
- 30. Kubernetes持久性存储导致文件在容器内消失
感谢您提及kahadb损坏的文件处理。我们有一些腐败的leveldb文件问题。 – 2014-08-25 15:11:29