前言
继上篇文章, 有些小伙伴有些疑问, 比如 A 系统以来 B 系统的接口, 两个系统同时发布最新的代码版本不就不用考虑兼容性了, 但是这个受限于几个情况, 比如需要分组发布, 总共 30 台机器, 需要 10 个一组慢慢发布, 不然流量都打不过来了, 造成系统问题, 或者 A 系统是开放平台外面的系统或者是前端, 也需要给一定的时间来迭代或者灰度发布甚至要永久支持, 这样 B 系统是不得不考虑兼容性的. 不然就像下图这样, 神奇的默契,,,
兼容性场景
接口兼容性解决方案:
修改/删除现有出入参字段
-
需要和调用方通知到位, 统一评估如果没有影响, 可以删除或者修改现有字段
-
如果依赖这个字段的系统很多不容易拉齐或者需要尽快上线, 不方便修改/删除字段, 可以通过添加新的相似的字段来完成新的功能
-
也可以加新版本的相似接口来解决问题, 调用方逐步切换到新的接口
-
如果一开始考虑到后续版本有可能会变更这个字段, 可以给这个字段加上版本说明, 需要调用方判断版本正确的时候再使用这个字段, 当然要 A 系统考虑不用这个字段引发的问题, 而且一开始设计的时候就考虑到后续版本会变更的情况比较少
修改/删除老的接口方法
-
需要和调用方通知到位, 统一评估如果没有影响, 可以删除或者修改现有接口
-
如果依赖这个接口的系统很多不容易拉齐或者需要尽快上线, 不方便修改/删除即可, 可以通过添加新的相似的接口来完成新的功能, 并通知调用方尽快逐步切换到新的接口
-
如果一开始考虑到后续版本有可能会变更这个接口, 可以给这个接口加上版本前缀, 这样可以不同版本的同一个相