id

package
v0.1.27 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidIDLength 表示ID长度无效
	ErrInvalidIDLength = errors.New("无效的ID长度")
	// ErrIDGenerationFailed 表示ID生成失败
	ErrIDGenerationFailed = errors.New("ID生成失败")
	// ErrInvalidNodeID 表示节点ID无效
	ErrInvalidNodeID = errors.New("无效的节点ID")
	// ErrClockMovedBackwards 表示时钟回拨
	ErrClockMovedBackwards = errors.New("时钟回拨,无法生成ID")
)

错误定义

Functions

func GenerateMonotonicULID

func GenerateMonotonicULID() (string, error)

GenerateMonotonicULID 生成单调递增的ULID

func GenerateULID

func GenerateULID() (string, error)

GenerateULID 生成ULID

func NodeIDFromMAC

func NodeIDFromMAC() (int64, error)

从MAC地址生成节点ID

func ReleaseEntropyReader

func ReleaseEntropyReader(er *EntropyReader)

ReleaseEntropyReader 归还熵源到池

func SecureSequence

func SecureSequence(prefix string) (string, error)

SecureSequence 生成安全序列

func Snowflake

func Snowflake(nodeID int64) (int64, error)

Snowflake 生成雪花算法ID

func SnowflakeWithStrategy

func SnowflakeWithStrategy(nodeID int64, strategy ClockDriftStrategy) (int64, error)

SnowflakeWithStrategy 使用指定时钟回拨策略生成雪花ID

func Token

func Token(length int) (string, error)

Token 生成随机令牌

func UUID

func UUID() (string, error)

UUID 生成标准UUID

Types

type ClockDriftStrategy

type ClockDriftStrategy int

ClockDriftStrategy 时钟回拨处理策略

const (
	// StrategyError 出错策略 - 直接返回错误
	StrategyError ClockDriftStrategy = iota
	// StrategyWait 等待策略 - 等待时钟赶上
	StrategyWait
	// StrategyTruncate 截断策略 - 使用最后的时间戳
	StrategyTruncate
)

type Config

type Config struct {
	// Type ID类型
	Type IDType
	// Format ID格式
	Format FormatType
	// UUIDVersion UUID版本
	UUIDVersion UUIDVersion
	// TokenLength 令牌长度
	TokenLength int
	// SequencePrefix 序列前缀
	SequencePrefix string
	// SnowflakeConfig 雪花算法配置
	SnowflakeConfig SnowflakeConfig
	// 优化:单调递增选项
	MonotonicULID bool
	// 优化:时钟回拨处理策略
	ClockDriftHandling ClockDriftStrategy
}

Config 配置ID生成器

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig 返回默认配置

type EntropyReader

type EntropyReader struct {
	// contains filtered or unexported fields
}

EntropyReader 包装随机源以提高性能

func GetEntropyReader

func GetEntropyReader() *EntropyReader

GetEntropyReader 从池中获取熵源

func (*EntropyReader) Read

func (er *EntropyReader) Read(p []byte) (n int, err error)

Read 实现io.Reader接口

type FormatType

type FormatType int

FormatType 定义ID格式类型

const (
	// FormatHex 十六进制格式
	FormatHex FormatType = iota
	// FormatBase32 Base32格式
	FormatBase32
	// FormatBase64 Base64格式
	FormatBase64
	// FormatString 字符串格式 (例如标准UUID字符串)
	FormatString
	// FormatInt 数字格式 (用于雪花算法)
	FormatInt
)

type Generator

type Generator interface {
	// Generate 生成ID
	Generate() (string, error)
	// GenerateBytes 生成字节形式的ID
	GenerateBytes() ([]byte, error)
	// GenerateInt 生成整数形式的ID(仅适用于雪花算法)
	GenerateInt() (int64, error)
}

Generator ID生成器接口

func NewGenerator

func NewGenerator(config *Config) Generator

创建一个基于配置的ID生成器

type IDType

type IDType int

IDType 定义生成ID的类型

const (
	// TypeUUID 使用标准UUID
	TypeUUID IDType = iota
	// TypeULID 使用ULID (Universally Unique Lexicographically Sortable Identifier)
	TypeULID
	// TypeSnowflake 使用雪花算法
	TypeSnowflake
	// TypeToken 使用随机令牌
	TypeToken
	// TypeSecureSequence 使用抗推测序列
	TypeSecureSequence
)

type MonotonicEntropy

type MonotonicEntropy struct {
	// contains filtered or unexported fields
}

MonotonicEntropy 单调递增的熵源

func NewMonotonicEntropy

func NewMonotonicEntropy() *MonotonicEntropy

NewMonotonicEntropy 创建单调递增的熵源

func (*MonotonicEntropy) Generate

func (m *MonotonicEntropy) Generate(t time.Time) ([]byte, error)

生成单调递增的随机数

type SecureSequenceGenerator

type SecureSequenceGenerator struct {
	// contains filtered or unexported fields
}

安全序列生成器

func (*SecureSequenceGenerator) Generate

func (g *SecureSequenceGenerator) Generate() (string, error)

生成安全序列

func (*SecureSequenceGenerator) GenerateBytes

func (g *SecureSequenceGenerator) GenerateBytes() ([]byte, error)

生成安全序列字节

func (*SecureSequenceGenerator) GenerateInt

func (g *SecureSequenceGenerator) GenerateInt() (int64, error)

生成整数形式的ID

type SnowflakeConfig

type SnowflakeConfig struct {
	// NodeID 节点ID
	NodeID int64
	// NodeBits 节点位数
	NodeBits uint8
	// StepBits 序列位数
	StepBits uint8
	// TimeUnit 时间单位
	TimeUnit time.Duration
	// EpochStart 开始时间戳
	EpochStart int64
	// SequenceBlockSize 序列块大小
	SequenceBlockSize int64
	// UseRandom 使用随机数填充序列
	UseRandom bool
	// contains filtered or unexported fields
}

SnowflakeConfig 雪花算法配置

type SnowflakeGenerator

type SnowflakeGenerator struct {
	// contains filtered or unexported fields
}

雪花算法生成器

func (*SnowflakeGenerator) Generate

func (g *SnowflakeGenerator) Generate() (string, error)

生成雪花算法ID

func (*SnowflakeGenerator) GenerateBytes

func (g *SnowflakeGenerator) GenerateBytes() ([]byte, error)

生成雪花算法ID字节

func (*SnowflakeGenerator) GenerateInt

func (g *SnowflakeGenerator) GenerateInt() (int64, error)

生成雪花算法ID整数

func (*SnowflakeGenerator) Release

func (g *SnowflakeGenerator) Release()

释放雪花算法生成器到对象池

type TokenGenerator

type TokenGenerator struct {
	// contains filtered or unexported fields
}

令牌生成器

func (*TokenGenerator) Generate

func (g *TokenGenerator) Generate() (string, error)

生成令牌

func (*TokenGenerator) GenerateBytes

func (g *TokenGenerator) GenerateBytes() ([]byte, error)

生成令牌字节

func (*TokenGenerator) GenerateInt

func (g *TokenGenerator) GenerateInt() (int64, error)

生成整数形式的ID (令牌不支持,返回错误)

type ULID

type ULID [ulidTimeSize + ulidRandomSize]byte

ULID表示一个ULID(Universally Unique Lexicographically Sortable Identifier) 26个字符,按照lexicographical排序 ULID是128位标识符,包含48位时间戳(毫秒)和80位随机数,编码为26个字符的字符串

func (ULID) String

func (u ULID) String() string

将ULID转换为字符串

type ULIDGenerator

type ULIDGenerator struct {
	// contains filtered or unexported fields
}

ULID生成器

func (*ULIDGenerator) Generate

func (g *ULIDGenerator) Generate() (string, error)

生成ULID

func (*ULIDGenerator) GenerateBytes

func (g *ULIDGenerator) GenerateBytes() ([]byte, error)

生成ULID字节

func (*ULIDGenerator) GenerateInt

func (g *ULIDGenerator) GenerateInt() (int64, error)

生成整数形式的ID (ULID不支持,返回错误)

func (*ULIDGenerator) Release

func (g *ULIDGenerator) Release()

释放ULID生成器到对象池

type UUIDGenerator

type UUIDGenerator struct {
	// contains filtered or unexported fields
}

UUID生成器

func (*UUIDGenerator) Generate

func (g *UUIDGenerator) Generate() (string, error)

生成UUID

func (*UUIDGenerator) GenerateBytes

func (g *UUIDGenerator) GenerateBytes() ([]byte, error)

生成UUID字节

func (*UUIDGenerator) GenerateInt

func (g *UUIDGenerator) GenerateInt() (int64, error)

生成整数形式的ID (UUID不支持,返回错误)

type UUIDVersion

type UUIDVersion int

UUIDVersion 定义UUID版本

const (
	// UUIDv4 完全随机UUID
	UUIDv4 UUIDVersion = 4
	// UUIDv7 有序的UUID(基于时间)
	UUIDv7 UUIDVersion = 7
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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