medis

忘掉 Snowflake,感受一下性能高出 587 倍的全局唯一 ID 生成算法

别来无恙 提交于 2020-08-06 00:57:22
今天我们来拆解 Snowflake 算法,同时领略百度、美团、腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法。这还不够,我们会讨论到全局唯一 ID 服务的分布式 CAP 选择与性能瓶颈。 已经熟悉 Snowflake 的朋友可以先去看大厂的设计和权衡。 百度 UIDGenertor:https://github.com/baidu/uid-... 美团 Leaf:https://tech.meituan.com/2017... 腾讯 Seqsvr: https://www.infoq.cn/article/... 全局唯一 ID 是分布式系统和订单类业务系统中重要的基础设施。这里引用美团的描述: 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一 ID 来标识一条数据或消息,数据库的自增 ID 显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一 ID 做标识。 这时候你可能会问:我还是不懂,为什么一定要全局唯一 ID? 我再列举一个场景,在 MySQL 分库分表的条件下,MySQL 无法做到依次、顺序、交替地生成 ID,这时候要保证数据的顺序,全局唯一 ID 就是一个很好的选择。 在爬虫场景中