Telegram Channel
在GitHub的一个事故中,某个数据并非完全同步的MySQL从节点被提升为主副本,数据库使用了自增计数器将主键分配给新创建的行,但是因为新的主节点计数器落后于原主节点(即二者并非完全同步),它重新使用了已被原主节点分配出去的某些主键,而恰好这些主键已被外部Redis所引用,结果出现MySQL和Redis之间的不一致,最后导致了某些私有数据被错误地泄露给了其他用户。
—-
《DDIA》第五章的例子,使用分布式 ID 可避免此类问题。至于分布式 ID 的局部性问题,可参考 UUID7 的思路,以时间戳为前缀。
 
 
Telegram Channel