【发布时间】:2017-07-11 03:38:30
【问题描述】:
我正在关注 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 支持?是不同分片中的持久参与者还是与复制相关的分片信息?究竟需要分发什么?我发现相关文档含糊不清且令人困惑。如果我只有一个分片,我是否需要分布式日志?
一个有点相关的问题:我有 reimplemented 基于
PersistenceQuery的现已弃用的 PersistentView。我可以在日志中查询来自 persistentActor 的事件,并设置一个流来接收其持久事件。我已经对其进行了测试,并且可以正常工作。但是,我无法让它在我的测试环境中使用InMemoryJournalStorage(我不相信它是分布式日志)接收分片actor中的事件。在我的测试场景中,我只有一个分片和一个演员,我使用唯一的persistenceId让演员查询它,但我在读取端没有收到任何事件。关于让 Akka 持久性与集群分片一起工作,我有什么遗漏吗?我应该是append/prependingpersistenceId用于查询事件吗?
【问题讨论】:
标签: akka persistence sharding persistent-storage eventual-consistency