作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们使用 akka-persistence 设计了我们的系统。现在,我们将事件存储在事件存储中。同时,系统在生产中,需要一个新功能。因此,我们发现最好的方法是在事件中添加或修改字段。让我们说通过更改字段名称或类型。
现在,我们有两个版本的事件,一个在生产中,一个在新部署中,它们不兼容。如果我们尝试从旧版本恢复数据,我们将失败。
除了数据迁移之外,最好的方法是什么?
最佳答案
这绝对是在生产中使用 akka 持久性的更大问题之一。在akka-user mailing list上有很多关于这个的讨论。 .
我会说,只要新功能只需要附加信息,使用允许有限模式演变的序列化格式(例如 google protocol buffers 或 json)将是一个解决方案。
如果新功能需要更改现有数据,则只能进行数据迁移。
关于scala - 如何在生产中演化 akka-persistence 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559143/
我需要序列化一个对象并将其存储在磁盘上。我使用了内置的Java,只要类不发生太大变化,它就可以正常工作。如果我开始在类里面乱搞,它就会停止工作。 这里有哪些可用选项?基本上,如果我们有更新,我不想破坏
我有一个正在开发数据模型的应用程序(该应用程序处理新旧数据)。现在我想用原始返回类型的演变来覆盖方法的返回类型: public interface Section { List getItems();
我是一名优秀的程序员,十分优秀!