spring cloud服务提供者接口迭代兼容策略(平滑升级)
spring cloud服务提供者接口迭代兼容策略 接口表现形式 传统接口形式的兼容(java、feign级别的兼容),如public ReturnType methodName(Params...){...return object;}; http请求形式的兼容,比如uri、method等等 解决方式 当只需要修改接口实现,不需要修改接口表现形式时,且接口语义没有发生变化,这种情况下可以无感知升级(不需要通知其他人或团队,因为没必要【这时候表现形式与实现分离,只改动实现就是无感知的原因】); 当接口语义发生变化或接口形式发生变化时,通过以下两个步骤来平滑升级: 通过升级客户端jar的版本号,保持编译时的接口兼容; 通过新增接口(并同时给旧接口标注 @Deprecated 注解表示未来会下线/删除)的形式,保持运行时的接口调用兼容 另外,删除旧接口,可通过发公告、邮件甚至口头等方式通知其他人或团队整改,迁移到新接口,最后一道防线,通过流量监控等方式确保没有调用方使用旧接口了,这时候才敢下线标注了 @Deprecated 的过时陈旧接口。 原则 只新增、删除接口,修改接口实现(语义未发生重大变化时)这三种情况。 具体实施 一、当不需要升级客户端jar版本时(SNAPSHOT): mvn clean install deploy ; 通知服务调用方强制刷新SNAPSHOT包的缓存(可选