zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Golang唯一ID生成库特征比较

2023-02-19 12:29:02 时间

前言

前段时间碰到友人在看到唯一ID的时候判断不出种类,故专门整理一下不同唯一ID的特征。

概览

包名

样例

组成成分

特征

github.com/rs/xid

9m4e2mr0ui3e8a215n4g

4 bytes of time (seconds) + 3 byte machine id + 2 byte process id + 3 bytes random

免配置,可排序

github.com/segmentio/ksuid

0ujsswThIGTUYm2K8FjOOfXtY1K

4 bytes of time (seconds) + 16 random bytes

免配置,可排序

github.com/sony/sonyflake

20f8707d6000108

~5 bytes of time (10 ms) + 1 byte sequence + 2 bytes machine id

需要机器/DC 配置,需要中央服务器,可排序

github.com/google/uuid

5b52d72c-82b3-4f8e-beb5-437a974842c

16 bytes

免配置,不可排序

github.com/kjk/betterguid

-Kmdih_fs4ZZccpx2Hl1

8 bytes of time (milliseconds) + 9 random bytes

免配置,可排序

根据对比,我推荐一般场景下用xid(虽然我之前推荐snowflake),免配置且可排序,比snowflake方便一些。

Back to posts