我正在关注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 回答
两者
是的,如果您希望故障转移工作 . 如果你不想要故障转移,而你所拥有的只是一个分片,那么根本就没有必要使用分片 .
如果没看到你的一些代码就无法分辨 .