当前位置: 首页 > 网络应用技术

基于雪花算法的基于GO基于分布式ID生成器

时间:2023-03-08 11:23:54 网络应用技术

  不仅对于用户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库具有以下配置参数:

  简单示例: