什么事分布式事务:
多个服务同时修改记录时,保证数据的一致性.
分布式思路:
- 通过在redis设置一个唯一锁,如果存在key,则认为有其他客户端在使用,等待锁释放。
- 如果不存在key,说明没有客户端使用,可以执行任务,执行完毕,解锁,删除key.
-
存在的问题1 :
获得锁后,服务宕机,由于key是唯一的,所以无法被删除.
问题1解决方案
设置过期时间。
存在的问题2
任务执行过长,超过过期时间。
问题2解决方案
通过一个守护线程,给线程续命.
存在的问题3:
任务执行造成死循环,会造成无限续命.
问题3解决方案 :
设置最大续命时间。