使用akka持久性作为本地数据库是个好主意吗?如果服务器无法访问,我需要在本地存储数据,而我的应用程序构建在akka之上,因此使用akka-persistence听起来是最简单的方法。
数据中填充的速率约为每10秒一个记录的avg。不过,鉴于akka-持久性是为一些不同的东西而设计的,这听起来像是一种滥用。有什么问题我应该知道吗?
发布于 2016-01-28 12:50:11
首先,让我们看看akka-持久性的目的是什么:
Akka持久性使有状态参与者能够持久化其内部状态,以便在启动参与者、JVM崩溃后重新启动或由监控器重新启动或在集群中迁移时恢复该状态。Akka持久化背后的关键概念是,只有对演员内部状态的更改才会被持久化,但绝不会直接改变其当前状态。
如果存储的数据是参与者内部状态的一部分,那么它是否是“误用”呢?从post来看,这并不是完全显而易见的,只是简单地存储传入的消息,这样做可能更好,这是一个适当的消息队列。
为什么要存储数据呢?Akka-持久化需要一个底层数据存储,它可能与原来不可用的数据库相同或依赖于数据库。但是,每10秒有一条消息听起来并不可怕,只要数据库一次不能长时间使用。
还值得注意的是,仅仅引入本地缓冲区可能不足以应付不可靠的资源(请看一下断路器型式)。总是值得考虑的是,有一种机制,提供反压力,以通知生产者的状态下的‘流量’。然后,它可以作出一个明智的选择,做什么(放下,储存..。)。
当无法处理数据时,应在本地存储数据,但在这样做时应考虑到上述关切,因为可能有更合适的解决方案。
https://stackoverflow.com/questions/35017085
复制相似问题