我正在开发一种软件,它可以向一组服务器传播一个不会经常变化的中型数据集。我正在使用Netflix的Hollow库来完成它。
我一直在考虑应用程序的生命周期,以及它随着时间的推移会如何发展和变化。我查看了空心文档中的notes on backwards compatibility,我认为我的问题没有在那里得到解决。
在调整我的模型以获得速度和内存效率时,我可以预见,我通过id引用的字段会更好地关闭inlined,反之亦然。
内联向后兼容吗?也就是说,如果我内联了一个字段:
@HollowInline String title;
我确定通过将字段作为引用来改善我的服务,我可以删除内联注释吗?
String title;
或者,似乎更有可能会打破我的客户?
我的假设是,改变内联状态的唯一安全方法是添加一个具有所需内联状态的新字段,迁移我的生产者和消费者以使用它,然后删除旧字段。
答案 0 :(得分:1)
您猜测这是一个向后不兼容的更改。鉴于此架构:
java
class A {
int a1;
@HollowInline Integer a2;
}
将int a1
更改为Integer a1
并删除@HollowInline
注释是等效的。将现有字段从内联更改为引用或引用内联是一种重大的模式更改。
一些策略可以解决这个问题:
策略1
String titleRef
或String titleV2
title
和titleV2
getTitleV2()
,您就可以从架构中删除title
并开始发布数据策略2