前言
我们都知道,在使用Spring进行项目开发时,开启事务只需要在类或者上标注一个**@Transactional**注解即可实现,那么这个是怎么做到的呢?
以下内容基于Spring Boot 2.1.9.RELEASE版本
探究其实现原理之前,我们先来看一个**@EnableTransactionManagement**注解。
在开发中,延时任务属于比较常见的需求,比如,订单在限定时间内未支付则自动取消并释放库存;外卖的商家端在设置特定时间后仍未接单时则自动接单等这都需要延时任务来完成。
实现延时任务的方式可以有许多种:
1 DelayQueue(JDK提供实现)
2 ScheduledExecutorService(JDK提供实现)
3 Redis(使用ZSET数据结构实现)
4 RabbitMQ实现
5 ……
我们都知道,传统数据库事务具有ACID的特性,但在分布式环境下,追求强一致性在大多数情况下无法满足高性能需求。
分布式系统的CAP理论告诉我们,一致性、可用性、分区容忍性无法同时满足,最多只能满足其他两项。CAP理论描述如下: