[alibaba/nacos]Nacos多数据源通用适配改造点优化建议: 修改外置存储代码判断为通用反向逻辑

2024-01-10 415 views
3
背景

社区同学进行的Nacos多数据库适配的扩展代码,看到已经合并到主分支上了,为了以后多数据库适配扩展的过程中的出现的兼容问题,建议把某些代码,更改为通用的方式,进行适配。

当前逻辑

当前的2个位置,采用了mysql的判断,如果未来插件扩展开发后,还需要修改主代码分支,就不合适了

修改范围

1、StartingApplicationListener类的方法:judgeStorageMode 需要修改为反向判断,判断当前环境的数据库类型 不等于空 并且 不等于derby 的时候为外置存储 2、PropertyUtil类的代码:setUseExternalDB 需要修改为反向判断,判断当前环境的数据库类型 不等于空 并且 不等于derby 的时候为外置存储

这样就可以排除写死的MySQL的判断

这样就减少了未来插件开发者的扩展插件的时候,还需要触碰主分支。

回答

2

我不认为应该这样修改, 需要保持一致性,减少用户理解成本。

  1. 单例未指定使用derby
  2. 单例指定时使用指定db类型(原为mysql)
  3. 集群未指定使用mysql
  4. 集群指定时使用指定db类型(原为derby)

如果按照你所说的取反逻辑,会改变这部分逻辑, 需要大量文档说明。

5

我认为不应该取反逻辑,而是在当前逻辑下进行增量判断。

3

那就在当前的逻辑下 把mysql 的判断逻辑替换成一些常见的数据库来做判断,弄个数据库名的常量枚举,这样ok 不

8

感觉单从这段代码的语义上看,只是把外部数据源的定义从 MYSQL 变成了 除了 DERBY 以外的的其他数据源 没有破坏原来原始 setUseExternalDB 的语义

个人觉得取反逻辑相比设置常用数据库的枚举,扩展性上更好一点 改为枚举常用数据库的话,逻辑改动最小,但是插件相关的文档上也需要进行说明

看看大佬们的意见

1

根据沟通,我新提交了东西 @i will solve it@

5

我理解改动的原因,但是我印象中这里好像有影响,改动后一方面需要保证原来的指定逻辑保持和原来一致, 之后再考虑扩展的类型也能够成功指定。

6

@22GNUs 可以看下 #9462 . 应该还是有点区别的。