id

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2026 License: MIT Imports: 16 Imported by: 2

README

ID生成器

订单ID

  • 电商平台:202506041234567890(时间戳 + 随机数,19-20 位)。
  • 支付系统:PAY20250604123456789(业务前缀 + 时间戳 + 序号)。
  • 微信支付:1589123456789012345(类似 Snowflake 的纯数字 ID)。
  • 美团订单:202506041234567890123(时间戳 + 商户 ID + 随机数)。

UUID

特性 GUID/UUID KSUID ShortUUID XID Snowflake
长度 36/32字符(不含-) 27字符 22字符 20字符 19(数字位数)
有序性 无序(UUIDv4) 严格时序 无序 趋势有序 严格时序
时间精度 无(UUIDv4) 毫秒级 秒级 毫秒级
分布式安全 高(随机数) 高(需配置WorkerID)
性能 中等 中等 较低(编码开销) 极高 极高
时钟依赖 有(需处理时钟回拨) 有(但影响较小) 强依赖(需严格同步)
适用场景 跨系统兼容 时序索引 短ID、URL 高并发、短ID 分布式时序ID

选择建议

  • GUID/UUID: 适用于需要跨系统兼容的场景,特别是当不需要有序性时。
  • KSUID: 适合需要严格时序的应用,如事件日志、时间序列数据。
  • ShortUUID: 当需要短ID且不关心有序性时的理想选择,适用于URL、短链接等。
  • XID: 高并发场景下的短ID选择,适合需要一定有序性的应用。
  • Snowflake: 适合分布式系统,特别是需要严格时序和高性能的场景,如大规模分布式应用。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateOrderIdWithIncreaseIndex

func GenerateOrderIdWithIncreaseIndex(prefix string, tm *time.Time) string

GenerateOrderIdWithIncreaseIndex 生成20位订单号,前缀+时间+自增长索引

func GenerateOrderIdWithPrefixSnowflake

func GenerateOrderIdWithPrefixSnowflake(workerId int64, prefix string) string

func GenerateOrderIdWithPrefixSonyflake

func GenerateOrderIdWithPrefixSonyflake(prefix string) string

func GenerateOrderIdWithRandom

func GenerateOrderIdWithRandom(prefix string, tm *time.Time) string

GenerateOrderIdWithRandom 生成20位订单号,前缀 + 时间戳 + 随机数

func GenerateOrderIdWithTenantId

func GenerateOrderIdWithTenantId(tenantID string) string

GenerateOrderIdWithTenantId 带商户ID的订单ID生成器:202506041234567890123

func GenerateSnowflakeID

func GenerateSnowflakeID(workerId int64) int64

func GenerateSonyflakeID

func GenerateSonyflakeID() uint64

func NewGUIDv4

func NewGUIDv4(withHyphen bool) string

NewGUIDv4 generates a new GUID/UUID v4 string.

func NewGUIDv7

func NewGUIDv7(withHyphen bool) string

NewGUIDv7 generates a new GUID/UUID v7 string.

func NewKSUID

func NewKSUID() string

NewKSUID generates a new KSUID string.

func NewMongoObjectID

func NewMongoObjectID() string

NewMongoObjectID generates a new MongoDB ObjectID string.

func NewShortUUID

func NewShortUUID() string

NewShortUUID generates a new ShortUUID string.

func NewSnowflakeID

func NewSnowflakeID(workerId int64) (int64, error)

func NewSonyflakeID

func NewSonyflakeID() (uint64, error)

func NewXID

func NewXID() string

NewXID generates a new XID string.

Types

type SnowflakeNode

type SnowflakeNode struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewSnowflakeNode

func NewSnowflakeNode(workerId int64) (*SnowflakeNode, error)

func (*SnowflakeNode) Generate

func (sfNode *SnowflakeNode) Generate() int64

func (*SnowflakeNode) GenerateString

func (sfNode *SnowflakeNode) GenerateString() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL