各位大大好,现一个单体项目想转分布式系统。
然后主管要求用动态切换数据源,也就是每一个有需要调用其他系统接口的项目都依赖一个公用包,这个包初始化连接池就连接所有数据库,然后这样项目就可以通过一个注解的形式切换数据库去调用sql。主管说这样性能更快,少一步网络消耗的时间。
但我个人经验不足,就是觉得这样很笨重,不好维护,不如用Feign实现服务间调用,感觉内网的网络消耗不会很大,且切换数据库不也有一点点消耗嘛。
大大们有什么看法吗?这两个方案有什么优缺点吗?现在打算拆分成8个项目,系统不是很大的规模,并发量短期预期也不会很大。
首先,要想好在那一层做分布式。
1.切换数据源的话,是在数据层做分布式,基本上等同于多数据源的单体系统。
2.用feign的话是在服务层做分布式,也就是微服务。
优缺点的话,
方案1的系统改造成本低,把数据库拆分就可以了, 但享受不到微服务的优点,比如维护方便。
方案2的话就是单体系统改造成微服务,改造成本高,后续维护成本低,可以网上搜一下微服务的优缺点。
性能的话不在于多一个网络连接的调用,首先要考虑技术的成熟和稳定性,系统不差钱的话推荐方案2。
你拆服务,如果单个应用内还是有切换数据源的操作,那你还不如搞动态切换!不过更推荐拆分服务,本身就是分布式了,再去搞那一套切换数据源(除开分库分表)也没太大的意义了,切换数据源还有个最大的问题-事务!这新手处理起来难度挺大的
建议用fein易于解藕