前一段时间给系统出关于数据库的读写分离,利用spring的切面功能与spring的数据源动态路由进行数据的切换,具体不详述,请参见
现在我想说的是,这个方案并不好。因为它的业务侵入性太强。当然在业务架构上,进行整改没有侵入性那是不可能的。但是我们可以作的更好一点,让业务侵入性更少一点。
最近一段时间,一直在思考,如何能够更好的解决这个问题即进行业务零侵入解决数据库的读写分离。尤其是在整改比较old的系统时,如果采用上面的那个方案,难度会更大。上层侵入强,只能向下层着手处理,思路即在jdbc这一层面想办法,经过一段时间的思考,找到了正确的方向。通过sql拦截根据sql解析结果进行数据库动态获取。具体实现的代码,参见 https://github.com/zhuzhong/rwdb