首页 文章

Akka集群分片:分片实体共享日志吗?

提问于
浏览
0

我正在关注akka tutorial演示群集分片 . 在集群sharding example中,作者启动共享日记并发表以下评论:

// Start the shared journal one one node (don't crash this SPOF)
// This will not be needed with a distributed journal

使用的期刊is

journal.plugin = "akka.persistence.journal.leveldb-shared"
  • 为什么分片实体共享日志?我的理解是Akka持久性不支持多次写入,但支持多次读取 . 共享期刊需要什么?我的印象是每个持久的演员都有自己的日记 . 为什么非共享 LeveldbJournal 不支持分发读取?这样做有什么困难吗?

  • 本教程基于Akka 2.4,在此版本中,群集分片使用 persistence 作为 akka.cluster.sharding.state-store-mode 的默认值 . 在此示例中,哪个组件正好使用snapshop / journal支持?它是不同分片中的持久性actor还是有关与其复制相关的分片的信息?究竟需要分发什么?我发现相关文档含糊不清,令人困惑 .

  • 如果我只有一个碎片,我是否需要一个分布式期刊?

  • 一个有点相关的问题:我有reimplemented现在已弃用的PersistentView基于PersistenceQuery . 我可以从journalActor查询日志中的事件,并设置一个流来接收其持久化事件 . 我测试了它,它的工作原理 . 但是我无法通过 InMemoryJournalStorage (我认为它不是分布式日志)在我的测试环境中接收分片演员中的事件 . 在我的测试场景中,我只有一个碎片和一个actor,我使用独特的 persistenceId 来让actor查询它,但我没有在读取端收到任何事件 . 我是否缺少一些关于让Akka持久性与群集分片一起工作的东西?我应该 append/prepend 用于查询事件的 persistenceId 吗?

1 回答

  • 1

    共享的LevelDB实例是单点故障,因此仅应用于测试目的 .

    • 两者

    • 是的,如果您希望故障转移工作 . 如果你不想要故障转移,而你所拥有的只是一个分片,那么根本就没有必要使用分片 .

    • 如果没看到你的一些代码就无法分辨 .

相关问题