Optimize SnowFlake algorithm.#1065
Merged
yang-xiaodong merged 3 commits intodotnetcore:masterfrom Mar 2, 2022
Merged
Conversation
Contributor
Author
|
Unbind time from the operating system timestamp. The generator only gets the current system timestamp at initialization as the initial timestamp, but is no longer in sync with the system timestamp. Its subsequent increment is driven only by the increment of the serial number. For example, if the current sequence number is 4095 and the next request comes in, the sequence number +1 overflows the 12-bit space, the sequence number is reset to zero, and the overflow carry is added to the timestamp, making the timestamp +1 |
Member
|
Have you tested this algorithm? Why is the value of recreated instance always begin with 4989988387126509569? |
Contributor
Author
|
Sorry for that. I forgot to init the first timestamp and sequence, Fixed now. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The idea of Optimize SnowFlate algorithm comes from Seata which is an open-source distributed transaction solution of Ali. It also uses snowflake to generate Id, but they upgraded the algorithm to avoid time step back exception.
FYI: https://seata.io/zh-cn/blog/seata-analysis-UUID-generator.html