Documentation ¶
Index ¶
Constants ¶
View Source
const ( Epoch = 1288834974657 // 毫秒,Thu, 04 Nov 2010 01:42:54 GMT DataCenterIdBits = 5 // 数据标识id占位 WorkerIdBits = 5 // 机器id占位 MaxDataCenterId = -1 ^ (-1 << DataCenterIdBits) // 最大数据标识id MaxWorkerId = -1 ^ (-1 << WorkerIdBits) // 最大机器id SequenceBits = 12 // 序列占位 TimestampLeftShift = SequenceBits + WorkerIdBits + DataCenterIdBits // 毫秒,左移22位 DataCenterIdShift = SequenceBits + WorkerIdBits // 数据标识id,左移17位 WorkerIdShift = SequenceBits // 机器id,左移12位 SequenceMask = -1 ^ (-1 << SequenceBits) // 序列掩码 )
View Source
const ( BitLenTime = 39 // 时间位长 BitLenSequence = 8 // 序列号的位长 BitLenMachineID = 63 - BitLenTime - BitLenSequence // 机器ID的位长 )
这些常数是SonyFlake ID部分的位长度。
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Settings ¶
type Settings struct { StartTime time.Time MachineID func() (uint16, error) CheckMachineID func(uint16) bool }
Settings 配置SonyFlake:
StartTime 是将SonyFlake时间定义为经过时间的时间。 如果StartTime为0,则将SonyFlake的开始时间设置为"2014-09-01 00:00:00 +0000 UTC"。 如果StartTime早于当前时间,则不会创建SonyFlake。 MachineID 返回SonyFlake实例的唯一ID。 如果MachineID返回错误,则不会创建SonyFlake。 如果MachineID为nil,则使用默认的MachineID。 默认的MachineID返回私有IP地址的低16位。 CheckMachineID 验证机器ID的唯一性。 如果CheckMachineID返回false,说明SonyFlake未创建。 如果CheckMachineID为nil,则不进行验证。
type SnowFlake ¶ added in v1.3.5
type SnowFlake struct {
// contains filtered or unexported fields
}
SnowFlake 共64位 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 正号|1位 - 毫秒|41位 - 数据标识id|5位 - 机器id|5位 - 序列|12位
func GetSnowWorker ¶ added in v1.3.5
func GetSnowWorker() *SnowFlake
GetSnowWorker 获取雪花算法实例,警告:golang版本的雪花算法生成的ID有序递增
func NewSnowFlake ¶ added in v1.3.5
func (*SnowFlake) IdToTimestamp ¶ added in v1.3.5
IdToTimestamp 雪花算法ID转时间戳,毫秒
func (*SnowFlake) NextIdInt64 ¶ added in v1.3.5
NextIdInt64 获取雪花算法ID,int64
func (*SnowFlake) TilNextMillis ¶ added in v1.3.5
type SonyFlake ¶
type SonyFlake struct {
// contains filtered or unexported fields
}
SonyFlake 是一个分布式唯一ID生成器。
var IdBean *SonyFlake
IdBean 全局分布式唯一id实例,IdBean.NextID()获取唯一id。
func NewSonyFlake ¶
NewSonyFlake 返回用给定设置配置的新SonyFlake。
NewSonyFlake 在以下情况下返回nil: - Settings.StartTime 在当前时间之前。 - Settings.MachineID 返回一个错误。 - Settings.CheckMachineID 返回false。
Click to show internal directories.
Click to hide internal directories.