Performance 在收到第一条消息后打开恢复

Performance 在收到第一条消息后打开恢复,performance,scala,akka,akka-persistence,Performance,Scala,Akka,Akka Persistence,我有一个持久的演员,他接收许多信息。第一条消息是创建(案例类),下一条消息是更新(案例类)。因此,如果它接收到CREATE,那么它不应该进入持久化来运行恢复,因为对于这个参与者来说,存储是空的。从我的角度来看,这是在浪费性能 有没有可能不对特定的输入消息(第一条消息是CREATE)调用恢复功能?持久参与者必须始终访问数据库,因为没有其他方法可以知道它以前是否存在——它可能是在已停止的应用程序的前一个实例中创建的,也可能是在群集中的另一个节点上创建的 一般来说,一个好的表演模式是在演员第一次被击中

我有一个持久的演员,他接收许多信息。第一条消息是创建(案例类),下一条消息是更新(案例类)。因此,如果它接收到CREATE,那么它不应该进入持久化来运行恢复,因为对于这个参与者来说,存储是空的。从我的角度来看,这是在浪费性能


有没有可能不对特定的输入消息(第一条消息是CREATE)调用恢复功能?

持久参与者必须始终访问数据库,因为没有其他方法可以知道它以前是否存在——它可能是在已停止的应用程序的前一个实例中创建的,也可能是在群集中的另一个节点上创建的

一般来说,一个好的表演模式是在演员第一次被击中后将其留在记忆中,因为这将允许尽可能快的反应。最常见的方法是使用群集分片(您可以在以下文档中阅读更多有关内容:


我从来没有听说过有人把一个空的持久演员的成功看作是一个性能问题,我不确定是否有可能以一种通用的方式解决这个问题,所以如果你有这样一个问题,并且不知何故可以知道演员从来没有被创造过,那么你就不能用Akka持久性来做这件事,但是你必须为此构建一个特殊的解决方案rself.

持久参与者始终必须访问数据库,因为没有其他方法可以知道它以前是否存在-它可能是在已停止的应用程序的前一个实例中创建的,也可能是在群集中的另一个节点上创建的

一般来说,一个好的性能模式是在参与者第一次被击中后将其保留在内存中,因为这将允许尽可能快的响应。最常用的方法是使用群集分片(您可以在这里的文档中阅读更多有关内容:


我从来没有听说过有人把一个空的持久演员的成功看作是一个性能问题,我不确定是否有可能以一种通用的方式解决这个问题,所以如果你有这样一个问题,并且不知何故可以知道演员从来没有被创造过,那么你就不能用Akka持久性来做这件事,但是你必须为此构建一个特殊的解决方案rself.

恢复对性能的影响是什么?多久发生一次?需要多长时间?为什么是浪费?您已经陈述了许多观点,但没有提供任何事实。我不确定是否理解您的问题。您是否有扩展akka.persistence.PersistentActor的参与者,它接收一些创建和更新消息?恢复对性能的影响是什么?它的运行速度相当快(一次恢复)这种情况多久发生一次?每秒发生1K-3K次。为什么会浪费?如果我知道CREATE消息的存储空间为空,我就不需要查询存储。查询是不必要的,因此是浪费。我不确定是否理解你的问题。你有扩展akka.persistence.PersistentActor并接收一些CREATE消息的参与者吗和更新消息?是的。我有。谢谢你的回复。非常感谢。恢复对性能的影响是什么?多久发生一次?需要多长时间?为什么是浪费?你已经陈述了许多观点,但没有提供事实。我不确定是否理解你的问题。你有扩展
akka.persistence.persistent的参与者吗entActor
哪个接收一些创建和更新消息?恢复对性能的影响是什么?它的操作相当快(一次恢复)这种情况多久发生一次?每秒发生1K-3K次。为什么会浪费?如果我知道CREATE消息的存储空间为空,我就不需要查询存储。查询是不必要的,因此是浪费。我不确定是否理解你的问题。你有扩展akka.persistence.PersistentActor并接收一些CREATE消息的参与者吗和更新消息?是的。我有。谢谢你的回复。非常感谢。谢谢你的评论。我使用切分,我的内存中有切分。从特定的参与者角度来看,切分是空的(例如,持久性ID等于123的参与者在第一条消息的存储中没有任何内容)。我的项目是BigData,我正在努力节省每毫秒。更重要的是,从我的角度来看,这是非常合理的。假设您有1TB的永久性存储和每秒约3K的新参与者,您知道这些参与者的存储是空的(存储的第一次查询没有返回结果-对于我的第一条创建消息)那么,第一次向存储区询问第一个参与者的消息是浪费时间的。无论如何,非常感谢。谢谢你的评论。我使用了切分,我的内存中有切分。从特定的参与者角度来看,切分是空的(例如,持久性ID等于123的参与者在存储区中没有第一条消息)。我的项目是BigData,我正在努力节省每毫秒。更重要的是,从我的角度来看,这是非常合理的。假设您有1TB的永久性存储和每秒约3K的新参与者,您知道这些参与者的存储是空的(存储的第一次查询没有返回结果-对于我的第一条创建消息)那么,第一次向存储室索要第一个演员的信息是浪费时间的。无论如何,我非常感谢。