分布式事务的使用场景
数据库的水平分割倒逼分布式事务
但是随着业务的不断扩大,用户数不断变大,几百万 几千万用户时数据可以存在一个库甚至一个表里,原来一个库里的事务操作,现在变成了跨数据库的事务操作。
此时@Transcational注解就失效了,这就是跨数据库分布式事务问题。
微服务化倒逼了分布式事务
当然,更多的情形是随着业务不断增长,将业务中不同模块服务拆分成微服务化后,同时调用多个微服务所产生的,设想一个传统的单体应用,无论多少内部调用,最后终归是在同一个数据库上进行操作来完成业务的操作,如下图:
随着业务量的发展,业务需求和架构发生了巨大的变化,整体架构由原来的单体应用逐渐拆分成了微服务。原来的3个服务被从一个单体架构上拆开了,成为了3个微服务,分别使用独立的数据源,也不在之前共享同一个数据源了,具体的业务将由三个服务的调用来完成,如下图:
一张图梳理清楚:分布式事务的五花八门