maven-jar包管理

覆盖更新导致的问题

背景

快速接入sentinel-starter的包。团队80多个服务已经接入

<dependency>
            <artifactId>yxt-sentinel-spring-boot-starter</artifactId>
            <groupId>com.yxt</groupId>
            <version>1.0.0</version>
        </dependency>

 

后续迭代内容

【上线公告】Sentine项目计划于2024年10月10日17:30时发布新迭代,迭代核心内容如下:

【新增功能】
   1.LDAP认证接入/服务权限控制(登录采用统一的LDAP认证,研发人员使用自己的LDAP工号+密码进行登录,并且只能操作自己相关的服务。)
   2.流控根据来源配置的支持
    ①支持外部调用使用client_ip进行针对性的限流和拉黑。
    ②支持内部调用使用上游serviceName进行针对性的限流和拉黑。
   3.降级响应增加拦截资源信息(当触发流控方便定位是因为哪个流控配置导致触发限流,并针对需求做针对性的调整。)
【备注说明】
   1.本次更新采用覆盖更新方式,之前接入的服务无需升级xframe和yxt-sentinel-spring-boot-starter版本
   2.dashboard各个环境的超级管理员账号(sentinel)将收回,发布后统一使用自己的LDAP账号+密码进行登录

异常操作方式

当时考虑到80多个服务,再单独更新版本发版。成本较高,就想着覆盖更新。但是80多个服务各个版本有差异。结果删完远程仓库包重新推包。正好遇到那天公司发版日,部分服务因为覆盖更新导致发不起来。因为没有做备份,重别的同事本地电脑仓库拿出maven包回滚重推

反思

覆盖更新这个操作本身没有问题。

1.但是应该正常应该打1.0.1的包。然后各个团队的服务都挑选部分服务来升级。如果试行一段时间没有问题再覆盖更新

2.做好备份,遇到异常后快速回退

①从Nexus删除之前下载下来做好备份,其他远程仓库同理

 ②如果遇到问题快速回退

 

命令应该也可以后续再研究

不能覆盖更新的场景

(强制)未经过组内评估不能覆盖更新

需要组内慎重评估是否需要覆盖更新。

(强制)存在兼容性问题不能覆盖更新

更新前

public YxtApiImpl signType(String signType) {
      this.signType = signType;
      return this;
  }

更新后

public YxtApiImpl signType(SignTypeEnum signType) {
         this.signType = signType;
         return this;
     }

(非强制)选配功能不做覆盖更新

如果是选配功能而不是升级后所有服务应该有的基础功能不做覆盖更新,当各个业务服务有需求采用升级版本的方式更新。

(强制)未做线上试点验证不能覆盖更新

应先在自己团队挑选部分服务升级jar的方式发布并上线验证通过。再通知其他团队挑选部分服务做试点验证通过。

(强制)不能在发版日做覆盖更新

发版日,大量服务需要做上线,如果覆盖更新,有问题会同时影响大量服务。选择非发版日,研发过程中发布dev test如果有问题能够提前感知。

posted @   意犹未尽  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2023-10-11 k8s-探针
点击右上角即可分享
微信分享提示