【问题标题】:Anyone used LevelDB store for ActiveMQ message persistence?有人使用 LevelDB 存储进行 ActiveMQ 消息持久化吗?
【发布时间】:2012-07-30 22:54:59
【问题描述】:

目前我们正在使用 KahaDB 存储在 ActiveMQ 中进行消息持久性,到目前为止效果很好。
根据 ActiveMQ5.6 的发行说明,LevelDB 提供了增强的性能。
有没有人尝试过使用 LevelDB,如果可以,您能否提供优缺点?

【问题讨论】:

    标签: activemq leveldb


    【解决方案1】:

    请看这个链接:https://github.com/fusesource/fuse-extra/tree/master/fusemq-leveldb#how-to-use-with-activemq-56 leveldb 与 kahadb 有一个小的比较。

    我目前正在一个具有高消息吞吐量的系统上尝试它,并且我已经看到了更好的结果。我还需要看看它是否稳定,但到目前为止还不错。

    【讨论】:

      【解决方案2】:

      仅供参考:这是ActiveMQ LevelDB Store官方文档的链接

      缺点:

      • 这是一家全新的商店,所以可能还存在一些错误。
      • LevelDB 索引有时需要“压缩”,这可能会导致新的写入延迟。
      • 您不能像使用 KahaDB 那样只删除索引并从数据文件中重建它
      • KahaDB 更优雅地处理磁盘损坏,尽可能恢复并丢弃损坏的记录。

      优点:

      • 主要附加磁盘访问模式可提高旋转磁盘的性能。
      • 磁盘同步次数少于 KahaDB
      • 存储的每条消息需要插入更少的索引条目
      • 将消息从磁盘加载到内存所需的索引查找次数更少
      • 使用 Snappy 压缩来减少索引条目的磁盘大小
      • 数据日志的可选 Snappy 压缩。
      • 发送到复合目标仅将消息存储在磁盘上一次。
      • 更快、更频繁的数据文件 GC。
      • 有一个'Replicated' variation,它可以自我复制到“从属”代理,以确保消息级别的 HA。

      【讨论】:

      • 感谢您提及 kahadb 损坏文件的处理。我们在损坏的 leveldb 文件中遇到了一些问题。
      【解决方案3】:

      我们已经在 NFS 上使用了一个为期两个月的 levelDB 存储(配置了标准文件锁定故障转移)。在过去的几周里,我们已经多次损坏存储,日志中没有错误......只是队列堆积,吞吐量非常低。要解决这个问题,我们唯一能做的就是扔掉商店,重新开始。

      所以我们现在再次切换回旧的可靠的 KahaDB 存储。

      【讨论】:

      【解决方案4】:

      为 LevelDB 做出的大多数性能声明似乎都是空的声明。它应该支持高并发读取,但多线程测试显示没有并发增益。 https://github.com/ayende/raven.voron/pull/9#issuecomment-29764803

      (相比之下,LMDB 在跨多个 CPU 的读取方面表现出完美的线性性能提升。https://github.com/ayende/raven.voron/pull/9#issuecomment-29780359

      【讨论】:

        【解决方案5】:

        我对 AMQ 性能进行了广泛的测试,但在我的测试中无法获得 LevelDB 与 KahaDB 之间的任何统计显着差异:http://whywebsphere.com/2015/03/12/ibm-mq-vs-apache-activemq-performance-comparison-update/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-08
          • 1970-01-01
          • 2013-08-13
          • 2018-09-22
          • 1970-01-01
          • 2015-08-22
          • 2019-01-27
          • 2011-10-12
          相关资源
          最近更新 更多