跳转到内容

Trantor 升级 0.8.x

主要变更

  • 资源区分研发态与运行态
  • 引入在线模块概念,可在线创建模块和模块内资源
  • 因为上述两项改动,模块发布流程发布变化,元数据注册不再发生在模块启动时,而需要手动进行模块发布流程
  • 数据权限鉴权不再默认开启:使用说明

理解 0.8.x 的改变

区分研发态和运行态

在 0.8.x 以前的版本,Trantor 在 MetaStore 中存储的元数据没有研发态和运行态的区别,只有一份。这份元数据是由业务模块在启动时上报上来的,上报后即刻生效。

image0.svg

这种做法比较简单直接,但有很多问题和限制:

  • 模块启动并不是注册元数据的合适时机。最主要的问题是模型元数据变更可能导致表结构变更,表结构变更是一个敏感行为,需要 DBA 介入且发生在应用部署之前。
  • 在线编辑元数据很难做。首先没有元数据的暂存状态,一旦元数据保存就会生效,业务系统很容易陷入一个不可用的中间态。其次在线编辑的元数据很难在多个环境间迁移。
  • 还有些别的问题不在这里展开

因此在 0.8.x 版本中为了元数据的在线编辑功能,同时考虑到后续规划中的多环境特性,对元数据的发布和生效过程做了改造。 image1.svg注:0.9.x 多环境功能上线后,主 MetaStore 中的研发态元数据可以发布到不同环境的从 MetaStore 中。

基于以上改变,从功能和研发过程上,可感知到的改变包括:

  • 交付控制台中的菜单分为了研发态和运行态
    • 对资源的修改动作全部移入研发态,且可在研发态中创建模块
    • 增加了发布计划,用于发布元数据到运行态,如果打开了安全生产开关,则会展示元数据变化导致的表结构变化对应的 DDL ,由研发人员或 DBA 去手动执行
    • 运行态保留切换生效资源的功能
  • 传统模块不再支持启动时向 MetaStore 注册元数据,必须通过 Maven 插件手动向 MetaStore 注册
    • 注册的为研发态元数据
    • 如果运行态的安全生产开关未打开,则自动进行研发态到运行态的发布动作来改变表结构

安全生产

安全生产的目的是在敏感环境中不进行自动表结构变更,转而输出 DDL 语句供研发或 DBA 手动执行。流程如下:

image2.svg

业务模块变更

maven 依赖升级

<dependency>
<groupId>io.terminus.trantor</groupId>
<artifactId>framework</artifactId>
<version>0.8.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.terminus.trantor</groupId>
<artifactId>api</artifactId>
<version>0.8.1-SNAPSHOT</version>
</dependency>

其余见模块发布流程

注意点

  • 因为新版 ds 只支持 nacos 协议,如业务模块自己有 dubbo light 相关依赖,需要升级至 2.1.0-RELEASE