设计背景:
某系统有旧的单体应用转向分布式架构应用,由于与其他系统公用一套节点,算是寄在某一大程序下的子程序。数据库实现方面,大系统使用的是以地区为维度垂直拆分的数据库策略。故子系统也要从业务和地区维度进行分库分表。
数据路由思路:
在架构层面通过Spring框架的自定义注解@DataSourceRouter,即-- 根据上送报文中的地区号进行数据库路由存储。
数据路由回滚思路:
通过SAGA回滚模式进行回滚,自定义注解@DTX,通过DTX框架回滚,在实际下执行的方法下添加回滚方法注解 @Compensable(compensationMethod = "MyRollBackMethod"),
MyRollBackMethod方法就是我们实际的SAGA回滚方法。该方法有DTX框架自动调用,其入参与正向交易(回滚为逆向交易)入参一直,在正向交易的基础上进行逆向变更。
欢迎关注kaki 的码云,以及B站 KakiNakajima