如何在生产中发展 akka-persistence 事件?
How to evolve akka-persistence events in production?
假设我们已经使用 akka-persistence 设计了我们的系统。现在,我们将事件存储在事件存储中。在生产系统中,需要一个新功能。因此,我们发现最好的解决方法是在事件中添加或修改字段。假设通过更改字段名称或类型。
现在,我们有两个版本的活动,一个在生产中,一个在新部署中,它们不兼容。如果我们尝试从旧版本恢复数据,我们将失败。
除了数据迁移之外,最好的解决方法是什么?
这绝对是在生产中使用 akka 持久性的更大问题之一。 akka-user mailing list.
上对此有很多讨论
我会说,只要新功能只需要额外的信息,使用允许有限模式演化的序列化格式(例如 google 协议缓冲区或 json 将是一个解决方案。
如果新功能需要更改现有数据,您只能做数据迁移。
假设我们已经使用 akka-persistence 设计了我们的系统。现在,我们将事件存储在事件存储中。在生产系统中,需要一个新功能。因此,我们发现最好的解决方法是在事件中添加或修改字段。假设通过更改字段名称或类型。
现在,我们有两个版本的活动,一个在生产中,一个在新部署中,它们不兼容。如果我们尝试从旧版本恢复数据,我们将失败。
除了数据迁移之外,最好的解决方法是什么?
这绝对是在生产中使用 akka 持久性的更大问题之一。 akka-user mailing list.
上对此有很多讨论我会说,只要新功能只需要额外的信息,使用允许有限模式演化的序列化格式(例如 google 协议缓冲区或 json 将是一个解决方案。
如果新功能需要更改现有数据,您只能做数据迁移。