我正在关注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基于PersistenceQuery
现已弃用的PersistentView。我可以从journalActor查询日志中的事件,并设置一个流来接收其持久化事件。我测试了它,它的工作原理。但是我无法通过InMemoryJournalStorage
在我的测试环境中接收分片演员中的事件(我不相信它是分布式日记)。在我的测试场景中,我只有一个分片和一个演员,我使用独特的persistenceId
让演员查询它,但我没有在阅读方面收到任何事件。我是否缺少一些关于让Akka持久性与群集分片一起工作的东西?我应append/prepend
persistenceId
用于查询事件吗?
答案 0 :(得分:1)
共享的LevelDB实例是单点故障,因此只能用于测试目的。
两个
是的,如果您希望故障转移工作。如果您不想进行故障转移,而您所拥有的只是一个分片,那么根本不会使用分片。
在没有看到您的部分代码的情况下无法判断。