初衷:微服务的盛行及对于mybatis的习惯。对于现有的数据+应用的架构希望寻找及总结一种灵活、扩展性好、方便的方案作为以后长期使用。
目标是可以支持多数据源、读写分离、原理配置简单。
方案1:
原理:使用mysql自带的replicationDriver来实现。replicationDriver简单来说就是存在2个connection:masterConnection和slaveConnection。当setReadonly(true)时就会把currentConnection=slaveConnection.。
配置:
jdbc.driverClassName = com.mysql.jdbc.ReplicationDriver
jdbc.url = jdbc:mysql:replication:master:3306,slave1:6603,slave2:3306(在这里可以配置多个salve,估计在自动选择slaveConnection的时候会在多个数据源间自动路由)
方案2:
原理:自己实现配置,主要做法是先配置多个dataSource,然后再DAO层中设置多个sqlsession。一个读、一个写(或者其他更多)。这样在DAO层的方法中,选择自己适合的sqlsession来操作数据库即可。这样做很灵活,数据源的选择在DAO层的方法级,灵活性很大。但如果与mybatis结合的话就显得复杂和混乱了。因为mybatis有自己的mapper,一般做法是DAO层调用mapper,如果这样还得考录如何将相应DAO方法中的sqlsession注入到mapper中使用,又或者抛弃了mapper直接使用DAO。(有人会说直接使用mapper作为D