自省:分布式锁主动续期的入门级实现
如果某个客户端获得锁之后处理时间超过最大约定时间,或者持锁期间内发生了故障导致无法主动释放锁,其持有的锁也能够被其他机制正确释放,并保证后续其它客户端也能加锁,整个处理流程继续正常执行。
ThreadLocal 使用手册 | 按需收藏
Java 中的ThreadLocal类允许程序员创建只能由创建它们的线程访问的变量。这对于创建线程安全代码很有用,因为它确保每个线程都有自己的变量副本并且不会干扰其他线程。
Seata-AT模式:MySQL自增ID的场景下推荐在 Mybatis 中使用 useGeneratedKeys
TDDL+ MySQL自增ID的场景下,Seata AT 模式inset记录时,其构建afterImage时会遇到一些麻烦。从源码中梳理可知 Seata AT 模式下,自增ID场景下,采用useGeneratedKeys可规避这个问题。
Seata-AT模式+TDDL:构建Insert操作的后镜像在执行SELECT LAST_INSERT_ID()时报错
构建 afterImage的时候,复用了Insert操作的prepareStatement,由于未清空参数,只把 sql 变成了 SELECT LAST_INSERT_ID() ,引发了错误。