Documentation ¶
Overview ¶
Package idutil implements utility functions for generating unique, randomized ids.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Generator ¶
type Generator struct {
// contains filtered or unexported fields
}
Generator generates unique identifiers based on counters, timestamps, and a node member ID.
The initial id is in this format: High order byte is memberID, next 5 bytes are from timestamp, and low order 2 bytes are 0s. | prefix | suffix | | 2 bytes | 5 bytes | 1 byte | | memberID | timestamp | cnt |
The timestamp 5 bytes is different when the machine is restart after 1 ms and before 35 years.
It increases suffix to generate the next id. The count field may overflow to timestamp field, which is intentional. It helps to extend the event window to 2^56. This doesn't break that id generated after restart is unique because etcd throughput is << 256req/ms(250k reqs/second).