Jms KahaDB和LevelDB-什么';真正的区别是什么?

Jms KahaDB和LevelDB-什么';真正的区别是什么?,jms,activemq,difference,leveldb,Jms,Activemq,Difference,Leveldb,我正试图在我的项目中使用ActiveMQ 5.8.0。有两种不同的存储配置,KahaDB和LevelDB。根据问题的不同,Kaha可以比Level快,或者Level可以比Kaha快 它们之间的真正区别是什么?这两个存储区的相似之处在于它们都使用索引来跟踪写入日志的消息的位置和状态。不同之处在于索引的实现方式以及其他方面。LevelDB是一个比KahaDB稍快的索引,可以提供更好的性能数据。在更高版本的ActiveMQ中,LevelDB存储区还支持复制 考虑到您使用的是一个较旧的版本,LevelD

我正试图在我的项目中使用
ActiveMQ 5.8.0
。有两种不同的存储配置,
KahaDB
LevelDB
。根据问题的不同,Kaha可以比Level快,或者Level可以比Kaha快


它们之间的真正区别是什么?

这两个存储区的相似之处在于它们都使用索引来跟踪写入日志的消息的位置和状态。不同之处在于索引的实现方式以及其他方面。LevelDB是一个比KahaDB稍快的索引,可以提供更好的性能数据。在更高版本的ActiveMQ中,LevelDB存储区还支持复制

考虑到您使用的是一个较旧的版本,LevelDB store的实现还很年轻,我建议您坚持使用KahaDB,因为它更成熟,并且已经解决了许多早期的bug。5.8中的LevelDB存储并没有真正做好生产准备,可能会给您带来一些麻烦。您可以升级到最新版本v5.10,LevelDB将更加健壮


注意:LevelDB已被社区弃用,不再受支持。它可能会在ActiveMQ 5.17.0中完全删除

对于任何新项目,我都不会使用LevelDB for ActiveMQ。KahaDB、LevelDB的图片发生了一些变化

LevelDB存储已被弃用,不再支持或建议使用。推荐的商店是KahaDB

您将在LevelDB文档中看到:

因此,KahaDB、LevelDB的图片发生了一些变化。我们考虑将LevelDB用于生产设置,其中3个ActiveMQ实例由3个Zookeeper实例监控。原型运行得非常好,除了在模拟ActiveMQ实例崩溃时,我们在该实例重新启动期间偶尔会遇到LevelDB损坏

当需要持久消息传递时,您现在有以下选择:

  • 使用ApacheActiveMQ和数据库作为持久消息存储(jdbc)
  • 对KahaDB消息存储使用共享块级或文件级共享文件系统(NFS、CIFS甚至GlusterFS),并使用ActiveMQ主/从
  • ApacheActiveMQ Artemis
  • 阿帕奇·卡夫卡

使用两者,我决定使用Kaha,因为它比Level更安全,因为它每次都在磁盘上存储消息。LevelDB将消息运行到内存中,然后将其保存到磁盘,因此在生产中,如果系统停机,我会丢失消息。是这样吗?不,两者都使用基于磁盘的日志来存储所有操作,不同之处在于如何维护索引,但可以从日志中重新创建索引,这样就不会丢失持久消息查看它,但我不明白为什么LevelDB在我的机器中写入/读取速度如此之慢。这是相同的代码和最后一个ActiveMQ(v5.10),但它仍然比KahaDB慢。。。有推荐的配置吗?非常感谢。非常感谢我的朋友。正如我在评论中所说的,该文档不清楚LevelDB是否已被弃用,因为另一页说它将成为新的默认存储。正如您还提到的,切换到Artemis可能是生产就绪解决方案的更好选择。然后看起来该选项将是另一个设置。我们在想,如果我们不在AMQ实例之间共享KahaDB,它可能会更好(代理网络,而不是主从网络)。似乎表明不应再考虑将其用于生产用途。我们还研究了一种设置,即使用多个kahadb实例进行存储的主从代理网络。其思想是,如果主节点出现故障,从节点将接管包含主节点和从节点的任何节点。因此,我们不应该在停止的实例中遇到消息暂停的问题。在代理网络中,应该始终有一个从服务器升级到主服务器并允许消费或转发消息