系统设计::在分布式系统中设计一个唯一ID生成器
在分布式系统中设计一个唯一 ID 生成器 在本章中,你被要求设计一个分布式系统中的唯一 ID 生成器。你的第一个想法可能是在传统的数据库中使用一个带有自动增加属性的主键。然而,auto_increment 在分布式环境中不起作用,因为单个数据库服务器不够大,以最小的延迟在多个数据库中生成唯一的 ID 是具有挑战性的。 这里有几个唯一 ID 的例子。 了解问题并确定设计范围 提出明确的问题是解决任何系统设计面试问题的第一步。下面是一个候选人与面试官互动的例子。 候选人:唯一 ID 的特点是什么? 面试官:ID 必须是唯一的,而且是可排序的。 候选者:对于每条新记录,ID 是否递增 1? 面试官:ID 按时间递增,但不一定只按 1 递增。在晚上创建的 ID 比同一天早上创建的 ID 要大。 候选人:ID 是否只包含数值? 面试官:是的,这是对的。 候选热:ID 的长度要求是什么? 面试官:ID 最长 64 位。 候选热:系统的规模是多少? 面试官:系统应该能够每秒生成 10,000 个 ID。 以上是一些你可以问面试官的样本问题。理解需求并澄清模糊之处非常重要。对于这个面试问题,要求列举如下。 ID 必须是唯一的。 ID 只能是数值。 IDs 最长 64 位的。 IDs 按日期排序。 有能力每秒产生超过 10,000 个唯一的 ID。 提出高层次的设计并获得认同 在分布式系统中,可以使用多种选项来生成唯一的 ID。我们考虑的选项是。 多主机复制 通用唯一标识符 UUID Ticket server Twitter Snowflake 让我们来看看他们中的每一个,他们是如何工作的,以及每个选项的优点/缺点。 ...