分布式 ID


在分布式系统存在多个 Shard 的场景中 , 同时在各个 Shard 插入数据时 , 怎么给这些数据生成全局的 unique ID?

在单机系统中 (例如一个 MySQL 实例), unique ID 的生成是非常简单的 , 如直接利用 MySQL 自带的自增 ID 功能就可以实现。

但在一个存在多个 Shards 的分布式系统 (例如多个 MySQL 实例组成一个集群 , 在这个集群中插入数据), 这个问题会变得复杂 , 所生成的全局的 unique ID 要满足以下需求 :

如果没有上面这些限制, 问题会相对简单, 例如: