场景八股
Mybatis如何配置多数据源
MyBatis 多数据源配置的核心是通过AbstractRoutingDataSource实现动态路由,结合 Spring AOP 可实现声明式切换,适用于读写分离、多业务库等场景。实际使用中需注意事务一致性和线程安全问题,根据业务复杂度选择合适的切换策略。
- 先在配置文件里写好两个库的地址
就像给两个数据库 “编个号”,比如叫 db1 和 db2,把它们的连接地址、账号密码都写在 application.yml 里,告诉程序 “这俩库你得认识”。 - 搞个 “数据源总管”
用 Spring 提供的一个叫 AbstractRoutingDataSource 的工具,它就像个 “调度员”。你得告诉它:“db1 对应哪个库,db2 对应哪个库”,再指定一个默认用哪个(比如默认用 db1)。 - 给线程贴个 “标签”
用 ThreadLocal 这个东西,给当前线程贴个 “用 db1” 或 “用 db2” 的标签。程序执行时,“调度员” 会看这个标签,决定去查哪个库。 - 用的时候指定一下就行
两种方式:
- 从源头(MySQL)保证 binlog 格式正确、顺序可靠;
- 中间层(Canal)通过集群化和偏移量持久化,确保不丢数据、不重复解析;
- 消费端通过幂等性设计和可靠存储,确保事件被正确处理;
- 最后通过业务层的定期校验,兜底解决极端场景下的不一致。
评论





