asjdf

一只在杭电摸鱼的小火鸡

Golang唯一ID生成库特征比较
Jan 5, 2023
One minute read

前言

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