跨 Akka 集群同步数据的简单方法?
Posted
技术标签:
【中文标题】跨 Akka 集群同步数据的简单方法?【英文标题】:Simple approach to synchronizing data across an Akka cluster? 【发布时间】:2016-10-22 02:34:24 【问题描述】:我有一些运行时数据希望存在于我的 Akka 集群中每个节点上的指定参与者上,这些数据可以通过内部事件或对单个节点的 API 调用进行更新。我可以将此数据存储在共享数据库中以使其永久化,但我宁愿将其存储在内存中以提高速度,因为它不需要持久化。 Akka Cluster Singleton、Distributed Pub Sub 和可能的其他内置模块使用 gossip 协议来保持分布式状态同步。
是否有现成的方法来在我的集群中采用我自己的参与者的数据同步?
我曾考虑将更改发布到 Distributed Pub Sub,但似乎这对丢弃的消息没有弹性。如果我将它存储在一个集群单例中,那么如果该节点出现故障,它将无法生存。如果整个集群出现故障,我不需要持久性,但如果单个节点出现故障,我确实需要弹性。
【问题讨论】:
你看过akka分布式数据吗?它是实验性的,但听起来很适合您的要求。 【参考方案1】:你应该看看Akka Distributed Data,它应该被称为“Akka Replicated Data”,因为它会在所有节点上复制数据。 它提供了一个简单的键值存储,在一个节点上所做的任何更改都将复制到所有其他节点。由于 all 数据保存在 all 节点上,因此最适合用于小型数据集。此外,键值对中的值需要是 CRDT(无冲突复制数据类型)。该模块带有一些预定义的 CRDT,涵盖了很多用例。
【讨论】:
是的。几个月来我一直在使用分布式数据。我可能应该回答我自己的问题。它工作得很好,虽然 API 肯定会导致一些令人生畏的代码:)以上是关于跨 Akka 集群同步数据的简单方法?的主要内容,如果未能解决你的问题,请参考以下文章
ceph暂停/恢复集群数据同步方法ceph重建日志盘完整流程详细记录sgdisk命令简单说明启动osd命令的两种方法说明
Akka源码分析-Cluster-DistributedData