Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

实现 ShardingSphere v4 到 v5 的配置文件升级 #1

Open
sandynz opened this issue Oct 11, 2021 · 0 comments
Open

实现 ShardingSphere v4 到 v5 的配置文件升级 #1

sandynz opened this issue Oct 11, 2021 · 0 comments

Comments

@sandynz
Copy link
Collaborator

sandynz commented Oct 11, 2021

5.0.0版本的配置文件格式相对于4.x版本已经有了较大的变化。为了方便用户从4.x迁移到5.0.0,我们准备开发一个配置文件升级工具。

支持的版本范围

4.0.0, 4.0.1, 4.1.04.1.1 转换到 5.0.0

支持的配置来源

本地YAML配置文件。

不支持直接升级配置中心的配置。如果本机YAML配置已经同步到配置中心,可以把配置中心的配置手动生成一份本地YAML配置文件,然后再用升级工具处理。

1,准备工作:获取不同版本之间的配置差异

方式1:比较不同版本的配置

4.0.0...4.0.1, 4.0.1...4.1.04.1.0...4.1.1 来看,4.x版本之间没有破坏性的格式变动(小版本之间应该都是这个设计原则)。会有一些新增的配置,比如4.1.1YamlProxyRuleConfiguration新增了shadowRule

Sharding-JDBC 配置:

Sharding-Proxy 配置:

方式2:检查 API 变动历史

详情请参见 API Change History

方式3:在线比较不同版本的代码

示例:

方式4:比较不同版本的代码

下载源码之后从 tag (e.g. 4.1.1, 5.0.0) checkout,可以对比下shardingsphere/examples目录下的示例代码,比如:shardingsphere-jdbc-exampleshardingsphere-proxy-example

格式变动示例

Proxy server.yaml文件:

  • authentication段落已变为AUTHORITY规则

很多规则文件:

  • 属性名中的 '.' 已替换为 '-',比如:sql.show变为sql-showworker.id变为worker-idalgorithm.expression变为algorithm-expression。详情请参见本次提交

2,实现

基本框架已完成,需要实现V4ToV5ConfigUpgrade,具体位置已经加上TODO

相关模型类:

  • ShardingSphereProductType: 代表ShardingSphere产品类型,目前包括:JDBCPROXY
  • ShardingSphereSeries: 代表版本系列,比如:v4, v5
  • SeriesConfigItem: 代表一个配置文件,包括:名称、内容文本、内容反序列化之后的对象。
  • SeriesConfigItems: 代表一个版本系列的一组配置文件。老版本和新版本各有一组,老版本的作为输入参数,新版本的作为输出结果。

基本思路及步骤:

  • 对于每一个配置文件,使用v4版本提供的反序列化器获得v4版本的模型对象,然后根据版本间的配置差异把v4版本的模型对象手工转换为v5版本的模型对象
  • 把上一步获取到的v5版本的模型对象存入SeriesConfigItem.contentObject、序列化之后存入SeriesConfigItem.content
  • 把上一步获取到的SeriesConfigItem对象通过SeriesConfigItems.addConfigItem存入SeriesConfigItems
  • 返回前面用到的SeriesConfigItems对象

相关工具类:

  • YamlEngine: YAML序列化和反序列化

注意事项:

  • config-upgrade-shardingsphere-shade-v4config-upgrade-shardingsphere-shade-v5提供了包名重写过的ShardingSphere依赖包,不保证需要用到的jar包都已经加入依赖,可以根据需要额外添加。

开始参与贡献

@sandynz sandynz changed the title Add ShardingSphere configuration files from 4.x to 5.0.0 compatible migration toolkit 实现 ShardingSphere v4 到 v5 的配置文件升级 Nov 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant