背景:一个项目平台由八、九个微服务组成,这些微服务共用一个Mysql数据库,核心业务表有20张左右。微服务间交叉使用的表大概7、8张左右。
需求:项目平台现在要在现有共用的表和字段基础上新增字段。(在数据库字段已经部署至生产环境中,绝大多数情况下不允许修改字段名称、类型等,只能新增。)
个人想到的一些方案:
1、共享Dao层共有entity实体类
将各个微服务Dao层交叉使用的entity实体类抽出来封装成依赖包,交由各个微服务引用依赖来使用。通过更新这个依赖包,来达成上述需求。
优点:共有实体类统一维护
缺点:
- 每个微服务需要维护依赖版本
- 强耦合,且有些实体类用不上
2、将Dao层抽出来,封装成一个微服务,向其他微服务提供服务。
缺点:
- 网络调用资源消耗太大,且不稳定
- 强耦合,这个出问题,整个项目直接宕机。
3、需求相关微服务逐个修改
优点:
- 低耦合
- 系统稳定,即使有个别服务没有修改,也不影响生产运行。
缺点:逐个服务修改,工作量还是挺大的,且容易改漏。
注:本人知识面不够宽,暂时只想出上面三种方案,大家如果有想法希望评论区补充。关于优缺点也希望补充,希望能找到一个较优的解决方案。