-
Notifications
You must be signed in to change notification settings - Fork 0
Ewe来由
YSLT edited this page Jun 6, 2019
·
5 revisions
Ewe是母绵羊的意思,我自己爱吃羊肉串,烤羊肉最好的是绵羊,当然是母绵羊,肉多.
Spring提供的AbstractRoutingDataSource实现多数据源切换,具体使用这里就不说了,
可以自行google,这里简单过一下基本原理.
典型的用法是:
利用aop拦截service的方法调用,然后根据方法上设置的dbType来选择初始化好的dataSource实例,
然后赋值给db层即可.
存在的问题是:
手动在方法上设置使用哪个dataSource,当我们的db架构是读写分离时,使用起来很麻烦.
基本流程:
创建一个包含多个数据源的统一数据源,拦截所有的SQL,然后做词法语法分析,
分析出该SQL是读还是写(包含强制hint走读or写),
然后自动选择相应的dataSource执行SQL.
SQL解析:
这里仅仅支持MySQL,且仅支持少量并常用的SQL语法(想要完整的SQL支持就使用温高铁的Druid吧).
手写原因一般有几个:
1.代码洁癖(如果你用工具,如:Lucene里面用的JavaCC,会发现生成一堆"机器"代码,看着很不舒服)
2.精细控制(手写的可以控制更加精细).
3.效率(一般手写的分析比parser generator生成的代码效率高一些).