Golang唯一ID生成库特征比较

2023-01-08 11:21:00 浏览数 (1)

前言

前段时间碰到友人在看到唯一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

0 人点赞