在一次UAT环境测试中,发现了主键冲突问题,原因是UAT和Prod共用相同的数据库,但Zookeeper配置的Host不同。分布式ID生成器在不同环境下生成了相同的ID,导致冲突。这种问题在项目初期可能出现,但随着Prod环境自增值的增加,冲突应会减少。然而,由于运维在一次故障排查中清理了生产ZK的缓存,导致自增序列重置,冲突问题再次出现。为避免类似问题,建议在分布式ID生成算法中引入更多唯一元素,如更长的时间戳、机器码和序列号,参考雪花算法,以确保ID的唯一性。