一次tddl-sequence问题的排查

背景 在测试环境,有个同事发现了一个ID插入的时候报了主键冲突。这是一件很奇怪的事情,在大家的理解中,使用了Sequence功能,每个节点的内存拿的ID段应该都是不同的,不可能会出现这个问题。不然这又要颠覆认知了~ 思考 是否有人手动插入了一条数据,然后出入的时候手动设置了ID呢? 是否有人手动调整了Sequence的value呢? 为什么数据库还存在了ID相同,但在不同表的数据呢?是不是多线程写的有毛病啊? 初步排查 确认没有人手动插入ID,都是用程序获取的方式; 那有时间与精力去手动设置Sequence的value啊,确实谁去没事儿管这个; 数据ID相同数据在不同表,明显是2台不同的项目Node导致的。 总结:确定问题出现了2台机器获取的Sequence的value范围冲突了。 问题表现出来的确实如此, »