我们目前正在 Akka.NET 之上使用 DDD 原则构建一个演员系统。
在如何使我们的服务具有弹性方面,我们有几个缺失点:
- 默认情况下,Actor 之间的 At-Most-Once-Delivery
- 演员邮箱的弹性
- FSMactor 正在存储无法立即处理的传入消息 - 弹性?
- Pub/Sub 模式(和弹性)
如果某些消息丢失,我们不确定该怎么办,因此我们无法转换到下一个状态以完成涉及多个参与者的请求。
我的想法是使用像 kinesis 这样的事件流系统来传递消息。然后,我们到处都有弹性,只需要知道我们处理了流中的哪个事件。我还缺少其他东西吗?你认为这是个好主意吗?这是否违反了一些最佳实践?