Trantor 升级 0.8.x
主要变更
- 资源区分研发态与运行态
- 引入在线模块概念,可在线创建模块和模块内资源
- 因为上述两项改动,模块发布流程发布变化,元数据注册不再发生在模块启动时,而需要手动进行:模块发布流程
- 数据权限鉴权不再默认开启:使用说明
理解 0.8.x 的改变
区分研发态和运行态
在 0.8.x 以前的版本,Trantor 在 MetaStore 中存储的元数据没有研发态和运行态的区别,只有一份。这份元数据是由业务模块在启动时上报上来的,上报后即刻生效。
这种做法比较简单直接,但有很多问题和限制:
- 模块启动并不是注册元数据的合适时机。最主要的问题是模型元数据变更可能导致表结构变更,表结构变更是一个敏感行为,需要 DBA 介入且发生在应用部署之前。
- 在线编辑元数据很难做。首先没有元数据的暂存状态,一旦元数据保存就会生效,业务系统很容易陷入一个不可用的中间态。其次在线编辑的元数据很难在多个环境间迁移。
- 还有些别的问题不在这里展开
因此在 0.8.x 版本中为了元数据的在线编辑功能,同时考虑到后续规划中的多环境特性,对元数据的发布和生效过程做了改造。
注:0.9.x 多环境功能上线后,主 MetaStore 中的研发态元数据可以发布到不同环境的从 MetaStore 中。
基于以上改变,从功能和研发过程上,可感知到的改变包括:
- 交付控制台中的菜单分为了研发态和运行态
- 对资源的修改动作全部移入研发态,且可在研发态中创建模块
- 增加了发布计划,用于发布元数据到运行态,如果打开了安全生产开关,则会展示元数据变化导致的表结构变化对应的 DDL ,由研发人员或 DBA 去手动执行
- 运行态保留切换生效资源的功能
- 传统模块不再支持启动时向 MetaStore 注册元数据,必须通过 Maven 插件手动向 MetaStore 注册
- 注册的为研发态元数据
- 如果运行态的安全生产开关未打开,则自动进行研发态到运行态的发布动作来改变表结构
安全生产
安全生产的目的是在敏感环境中不进行自动表结构变更,转而输出 DDL 语句供研发或 DBA 手动执行。流程如下:
业务模块变更
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