不仅对于用户ID,实际Internet中还有许多方案需要能够生成可以生成自我信息ID等ID的ID,同时又不重复。支持业务中的高征用场景。
更典型的场景是:在短时间内将在系统中朗诵大量订单,例如每秒10W+;当星形出轨时,将在短时间内生成大量相关的微博转发和评论。在将这些业务方案插入数据库之前,我们需要为这些订单和消息分配一个唯一的ID,然后将其保存到该数据库中数据库。此ID的要求是希望可以有一些时间信息,因此,即使后端的系统在消息上具有库和划分,也可以按时间顺序对这些消息进行排序。
雪花算法
Snowflake算法是Twitter的64位整数开源的分布式ID,高性能以及在架子上增加的ID。
BWMARRIN/SNOWFLAKE:易于使用的GO(Golang)软件包生成或解析Twitter snowflake ID(github.com)
BWMarrin/Snowflake是一种轻巧的雪花GO实施。
例子:
Sony/Sonyflake:由Twitter的Snowflake启发的分布式唯一ID生成器(github.com)
Sonyflake是索尼的开源项目。基本思想类似于雪花:相似,但定位略有不同:
这里的时间只花了39位,但是时间单位变为10ms,因此从理论上讲,它的时间超过41个数字的时间(174年)。序列ID与先前的定义一致。机器ID实际上是节点ID.SonyFlake库具有以下配置参数:
简单示例: