具有持久性参与者的 Akka 分片的背压

Back-pressure for Akka Sharding with persistent actors

是否有 Akka 流背压模型或用于将 akka 分片与持久性 actor 一起使用的模型?

因为我有一个问题,我有一个带有持久性参与者的 akka 分片集群。 (使用 cassandra 作为日志插件)。
有时应该同时创建很多演员。 (例如,当我们想向所有用户发送广播消息时。)
数以千计的持久参与者试图在短时间内恢复(例如 3.seconds),并且在重负载下,cassandra 无法立即响应,并且许多参与者多次恢复失败并且再也没有恢复。

我想你想要的是一种指数退避的监督策略。因此,如果重启(即从数据库恢复)失败,它不会立即重试,而是增加时间间隔,以免数据库过载。 Akka 提供了 BackoffSupervisor.

要将其与集群分片一起使用,您必须为定义监管策略的实体创建一个中间父参与者,请参阅 Cluster Sharding docs (the cluster sharding supervision strategy itself is not pluggable, as explained in this Github issue)。