5.0.0版本的配置文件格式相对于4.x版本已经有了较大的变化。为了方便用户从4.x迁移到5.0.0,我们准备开发一个配置文件升级工具。
支持的版本范围
从 4.0.0, 4.0.1, 4.1.0 和 4.1.1 转换到 5.0.0。
支持的配置来源
本地YAML配置文件。
不支持直接升级配置中心的配置。如果本机YAML配置已经同步到配置中心,可以把配置中心的配置手动生成一份本地YAML配置文件,然后再用升级工具处理。
1,准备工作:获取不同版本之间的配置差异
方式1:比较不同版本的配置
从 4.0.0...4.0.1, 4.0.1...4.1.0 和 4.1.0...4.1.1 来看,4.x版本之间没有破坏性的格式变动(小版本之间应该都是这个设计原则)。会有一些新增的配置,比如4.1.1的YamlProxyRuleConfiguration新增了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-example和shardingsphere-proxy-example。
格式变动示例
Proxy server.yaml文件:
authentication段落已变为AUTHORITY规则
很多规则文件:
- 属性名中的 '.' 已替换为 '-',比如:
sql.show变为sql-show,worker.id变为worker-id,algorithm.expression变为algorithm-expression。详情请参见本次提交。
2,实现
基本框架已完成,需要实现V4ToV5ConfigUpgrade,具体位置已经加上TODO。
相关模型类:
ShardingSphereProductType: 代表ShardingSphere产品类型,目前包括:JDBC和PROXY。
ShardingSphereSeries: 代表版本系列,比如:v4, v5。
SeriesConfigItem: 代表一个配置文件,包括:名称、内容文本、内容反序列化之后的对象。
SeriesConfigItems: 代表一个版本系列的一组配置文件。老版本和新版本各有一组,老版本的作为输入参数,新版本的作为输出结果。
基本思路及步骤:
- 对于每一个配置文件,使用v4版本提供的反序列化器获得v4版本的模型对象,然后根据版本间的配置差异把v4版本的模型对象手工转换为v5版本的模型对象
- 把上一步获取到的v5版本的模型对象存入
SeriesConfigItem.contentObject、序列化之后存入SeriesConfigItem.content
- 把上一步获取到的
SeriesConfigItem对象通过SeriesConfigItems.addConfigItem存入SeriesConfigItems
- 返回前面用到的
SeriesConfigItems对象
相关工具类:
注意事项:
config-upgrade-shardingsphere-shade-v4和config-upgrade-shardingsphere-shade-v5提供了包名重写过的ShardingSphere依赖包,不保证需要用到的jar包都已经加入依赖,可以根据需要额外添加。
开始参与贡献:
5.0.0版本的配置文件格式相对于4.x版本已经有了较大的变化。为了方便用户从4.x迁移到5.0.0,我们准备开发一个配置文件升级工具。支持的版本范围
从
4.0.0,4.0.1,4.1.0和4.1.1转换到5.0.0。支持的配置来源
本地YAML配置文件。
不支持直接升级配置中心的配置。如果本机YAML配置已经同步到配置中心,可以把配置中心的配置手动生成一份本地YAML配置文件,然后再用升级工具处理。
1,准备工作:获取不同版本之间的配置差异
方式1:比较不同版本的配置
从 4.0.0...4.0.1, 4.0.1...4.1.0 和 4.1.0...4.1.1 来看,
4.x版本之间没有破坏性的格式变动(小版本之间应该都是这个设计原则)。会有一些新增的配置,比如4.1.1的YamlProxyRuleConfiguration新增了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-example和shardingsphere-proxy-example。格式变动示例
Proxy
server.yaml文件:authentication段落已变为AUTHORITY规则很多规则文件:
sql.show变为sql-show,worker.id变为worker-id,algorithm.expression变为algorithm-expression。详情请参见本次提交。2,实现
基本框架已完成,需要实现
V4ToV5ConfigUpgrade,具体位置已经加上TODO。相关模型类:
ShardingSphereProductType: 代表ShardingSphere产品类型,目前包括:JDBC和PROXY。ShardingSphereSeries: 代表版本系列,比如:v4,v5。SeriesConfigItem: 代表一个配置文件,包括:名称、内容文本、内容反序列化之后的对象。SeriesConfigItems: 代表一个版本系列的一组配置文件。老版本和新版本各有一组,老版本的作为输入参数,新版本的作为输出结果。基本思路及步骤:
SeriesConfigItem.contentObject、序列化之后存入SeriesConfigItem.contentSeriesConfigItem对象通过SeriesConfigItems.addConfigItem存入SeriesConfigItemsSeriesConfigItems对象相关工具类:
YamlEngine: YAML序列化和反序列化注意事项:
config-upgrade-shardingsphere-shade-v4和config-upgrade-shardingsphere-shade-v5提供了包名重写过的ShardingSphere依赖包,不保证需要用到的jar包都已经加入依赖,可以根据需要额外添加。开始参与贡献: