Scala 发生碰撞时保持阿克卡状态
我是Akka的初学者,我喜欢它为异步编程提供的许多功能,例如actor、agent或Futures Akka的一个强大卖点是,当一个参与者崩溃时,参与者系统会重新创建一个等价的参与者,并替换旧的参与者,从而保证强大的稳定性 其他一些系统(我被告知JMS就是其中之一)更进一步,持续保存参与者之间发送的消息。这样,如果机器发生物理崩溃(例如由于硬件故障),仍然可以恢复故障前的状态Scala 发生碰撞时保持阿克卡状态,scala,persistence,akka,fault-tolerance,Scala,Persistence,Akka,Fault Tolerance,我是Akka的初学者,我喜欢它为异步编程提供的许多功能,例如actor、agent或Futures Akka的一个强大卖点是,当一个参与者崩溃时,参与者系统会重新创建一个等价的参与者,并替换旧的参与者,从而保证强大的稳定性 其他一些系统(我被告知JMS就是其中之一)更进一步,持续保存参与者之间发送的消息。这样,如果机器发生物理崩溃(例如由于硬件故障),仍然可以恢复故障前的状态 这对我现在正在开发的应用程序非常有吸引力。阿克卡是否提供了这样的机制?如果没有,是否有某种方法可以将其与外部系统集成,从
这对我现在正在开发的应用程序非常有吸引力。阿克卡是否提供了这样的机制?如果没有,是否有某种方法可以将其与外部系统集成,从而实现此目的?是的,您所描述的内容可以通过使用来实现,可以根据每个参与者的需要进行配置
对于不同的后端,有几种实现,如果您没有为您最喜欢的消息队列找到一种,那么实现您自己的适配器将不是很困难。我们将在Akka源代码树中维护的唯一实现是
FileBasedMailbox
,它作为如何实现的模板。Akka 2.0.x发行版中的其他邮箱类型由各自的“所有者”作为社区项目进行维护。持久邮箱是有选择地保存邮件的好方法,因此Akka可以实现类似于JMS的功能。除了技术之外,在体系结构级别考虑什么消息与系统相关,以及在系统故障后如何恢复状态是非常重要的。p>
一种方法是事件源(eventsourcing),它与actor范例配合得很好。在这个概念中,应用程序的状态存储为一系列事件,而不是状态本身。当系统或其部分出现故障时,可以通过应用持久事件存储中的所有事件来恢复状态。持久邮箱可以是指向此类事件存储的链接,也可以直接使用专用的参与者
Martin Krasser在这个博客上写了一篇非常好的文章,描述了使用Akka的这种方法。他也是Akka事件源扩展的作者,该扩展名为