DevX 开源组件 # DevXRoutingDataSource ②

43 阅读2分钟

封面:来自于 google search 随便找的一张图片

DevX 开源组件 # DevXRoutingDataSource ②

最近随着公司数据量的持续增长,针对这个问题开始准备技术上的解决方案,调研了一些数据中间件和一些做读写分离的组件,准备先用读写分离的方案做一个过渡,目前还是主要以业务推进为主,没有太多的资源投入到相对较重的技术升级上。看了一些做读写分离的轻量级开源库都不是太满意,其中最重要的一点就是代码侵入性都比较强。读写分离作为一种过渡性方案的话,我希望是侵入性越低越好,要能达到最低成本的引入,和最低成本的剥离。于是乎决定自己写一个。

为了尽可能的实现 0 侵入的目标,以及不依赖于某一特定的 ORM 框架,在初版架构的基础上做了调整.不在依赖于 mybatis 执行过程中获取 SQL , 而是面向 JDBC 标准 API 编程, 达到与具体的 SQL 执行组件无关的目的。在 0 侵入方面思路是提供对 mybatisspring data jpa 提供支持, 根据他们的方法名称中的关键字进行路由, 这也是采用了约定大于编码的思路. 比如方法名称可以命名为 selectByIdFromRead sql 会路由到所有的读库中执行, 或者 selectByIdFromWrite sql 会路由到写库执行。

RoutingRule 支持自定义扩展,可提供多个 RoutingRule 实现并按照指定顺序执行。

DevX-RoutingDataSource.drawio (1).png

DevX 会持续分享有趣的技术和见闻,如果你觉得本文对你有帮助希望你可以分享给更多的朋友看到。该文章会同步在微信公众号 【DevXJava】, 方便在微信客户端阅读。

DevX 不止于技术