Go语言分布式id生成器

  • 内容
  • 评论
  • 相关

有时我们需要能够⽣成类似 MySQL 自增 ID 这样不断增大,同时又不会重复的 ID。以支持业务中的⾼并发场景。比较典型的是电商促销时短时间内会有大量的订单涌入到系统,比如每秒 10w+。明星出轨时会有大量热情的粉丝发微博以表心意,同样会在短时间内产生大量的消息。

在插入数据库之前,我们需要给这些消息、订单先打上一个 ID,然后再插⼊到我们的数据库。对这个 ID 的要求是希望其中能带有一些时间信息,这样即使我们后端的系统对消息进行了分库分表,也能够以时间顺序对这些消息进⾏排序。

Twitter 的 snowflake 算法是这种场景下的一个典型解法。先来看看 snowflake 是怎么回事,如下图所示:

snowflake 中的⽐特位分布
图:snowflake 中的比特位分布

本文标题:Go语言分布式id生成器

本文地址:https://www.hosteonscn.com/6807.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注