如何在生产中发展 akka-persistence 事件?

How to evolve akka-persistence events in production?

假设我们已经使用 akka-persistence 设计了我们的系统。现在,我们将事件存储在事件存储中。在生产系统中,需要一个新功能。因此,我们发现最好的解决方法是在事件中添加或修改字段。假设通过更改字段名称或类型。

现在,我们有两个版本的活动,一个在生产中,一个在新部署中,它们不兼容。如果我们尝试从旧版本恢复数据,我们将失败。

除了数据迁移之外,最好的解决方法是什么?

这绝对是在生产中使用 akka 持久性的更大问题之一。 akka-user mailing list.

上对此有很多讨论

我会说,只要新功能只需要额外的信息,使用允许有限模式演化的序列化格式(例如 google 协议缓冲区或 json 将是一个解决方案。

如果新功能需要更改现有数据,您只能做数据迁移。