事务,其存在的意义是为了保证系统中所有的数据都是符合期望的,且相互关联的数据之间不会产生矛盾。也就是说,事务是数据状态一致性问题的一种解决方案。
事务的概念起源于数据库系统,但到今天已不再局限于数据库本身。所有需要保证数据一致性的应用场景,因此,我们提到的数据源,包括但不限于数据库、缓存、消息队列、分布式存储等。
按照服务和数据源的关系,可以得到多种可能需要事务解决方案的场景:
-
单服务单数据源
-
单服务多数据源
-
多服务单数据源
-
多服务多数据源
解决单服务单数据源的一致性问题,使用本地事务即可。本地事务是最基础的一种事务解决方案,直接依赖于数据源本身提供的事务能力。
单服务多数据源以及多服务单数据源,在微服务架构下,其最终的走向都是多服务多数据源。解决多服务多数据源的一致性问题的方案是分布式事务。