【已解决】金证引擎KOCA2.7-->4.0升级实战

KOCA版本 :2.7-4.0
KOCA模块 : 所有模块
模块版本 :2.7-4.0
场景 :KOCA版本升级

将KOCA 2.7.0-RELEASE升级到4.0.0可能会出现的几个问题

KOCA2.7.0-RELEASE升级到4.0.0时,因为版本跨度比较大,涉及到的模块比较多,在升级时可能会出现不少问题。下面将会列出几个比较大问题及解决办法。

如何升级

  1. 坐标替换

    koca在3.0.0及以后,坐标中的groupId有很大改变,例如koca-admin-basic模块

    3.0.0以前

    <dependency>
      <groupId>szkingdom.yf.koca.admin</groupId>
      <artifactId>koca-admin-basic</artifactId>
    </dependency>
    

    3.0.0及以后

    <dependency>
      <groupId>com.szkingdom.koca.admin</groupId>
      <artifactId>koca-admin-basic</artifactId>
    </dependency>
    
  2. 修改配置文件

    部分模块的配置有更新,如果启动报错或功能异常,可到KOCA官网找到对应模块的文档,检查配置是否正确。

    如安全认证模块的配置层级有很大改变。

  3. 数据库升级

    如果数据库中存在需要保存的存量数据,可选择执行交付件下04.database/{数据库类型}/data(table)/update的增量脚本进行升级,脚本选择3.0.0到4.0.0的所有脚本,先执行建表脚本(table目录下),再执行数据脚本(data目录下)。

    如果数据库中没有数据或不需要保存存量数据,选择交付件下04.database/{数据库类型}/{模块}/data(table)/all全量脚本执行。同样是先执行建表脚本,后执行数据脚本。

  4. 前端升级

    目前koca前端模块分为vue2和vue3,有的模块既有vue2版也有vue3版,有的只有其中一个版本,所以在升级前端的时候,先确定要升级的项目中使用了哪些模块,以便选择vue版本。

    4.0.0的后端对应的vue2版的前端模块版本为3.7.0,vue3版的4.0.0。

网关升级

由于KOCA GATEWAY从3.0.0开始后改动比较大,所以2.7.0-RELEASE升级到4.0.0可能会出现不少问题。

关于网关的相关依赖和配置可以参考交付件的bootapp(03.application\01.admin-msa\4-koca-gate-bootapp)

  1. 网关依赖

    <dependency>
        <groupId>com.szkingdom.koca.cloud</groupId>
        <artifactId>koca-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>com.szkingdom.koca.cloud</groupId>
        <artifactId>koca-cloud-gateway-support</artifactId>
    </dependency>
    
  2. 确定认证方式

    一种是网关作为认证中心,另外一种是非网关服务作为认证中心。脚手架提供的bootapp的认证方式为第二种。

    确定好认证方式后,引入相关依赖,不同认证方式,依赖会有不同。具体参考安全认证开发指南

    其它微服务引入:

    <dependency>
        <groupId>com.szkingdom.koca.base</groupId>
        <artifactId>koca-auth-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.szkingdom.koca.boot</groupId>
        <artifactId>koca-boot-starter-auth</artifactId>
    </dependency>
    
  3. 添加配置

    包括网关自身的配置及认证相关的配置。其中安全认证的配置曾经有很大改变。

    参考README.MD

  4. 可能会出现的问题。

(1)

解决办法:排除掉所有直接依赖或传递依赖的servlet-api。如果有通过servlet-api扩展过一些功能,换成webflux来实现。

​(2)

解决办法:去掉这个配置。

amo升级

  1. amo有两种使用方式,一种是产品化amo;一种是模块化,选择部分模块使用。产品化amo包含了所有amo的功能模块,可以通过docker和ansible部署。

    首先要确定使用的是那种。

  2. 产品化升级。

    参考官网部署手册

  3. 模块化升级

    因为轻量化日志监控轻量化链路监控只更新到3.4.0。所以如果有使用这两个模块,只能升级到3.4.0(1)

    (1)修改依赖坐标及版本

    <groupId>szkingdom.yf.koca.admin</groupId>修改为<groupId>com.szkingdom.koca.amo</groupId>
    

    版本修改为4.0.0

    (2)修改配置

    参考amo文档及bootapp(03.application\02.amo-standalone\koca-amo-bootapp)

  4. 数据库升级

    执行交付件下3.0.0–4.0.0的增量脚本。

注册中心和配置中心升级

参考:

配置中心bootapp(03.application\01.admin-msa\2-koca-cloud-admin-bootapp)

注册中心bootapp(03.application\01.admin-msa\1-koca-registry-eureka-server-bootapp)