Comments (5)
逻辑上讲,应该用 options.MaxSeqNumber。
从数值上讲,1<<SeqBitLength-1,是对的。目前DefaultIdGenerator 和 M1中都做了处理,后续可以优化一下,集中一处处理。
from idgenerator.
因为MaxSeqNumber和options.MaxSeqNumber的默认值都是0,所以用户让options.MaxSeqNumber保持默认值0,代码会正常工作。修改为0以外的值,就会发现该配置无法生效。我没有运行代码验证过这点,但理应如此。
这个库做的非常棒。我打算将它集成到项目中。一直担心 并发过大 Id重复,把雪花漂移代码看了2天。发现如果在一毫秒内生成的Id超过上限,程序就会停止生成Id,直到下一个毫秒到来。此设计是非常好的。但看到您写的TODO:
// TODO: 在漂移终止,等待时间对齐时,如果发生时间回拨较长,则此处可能等待较长时间。可优化为:在漂移终止时增加时间回拨应对逻辑。(该情况发生概率低,暂不处理)
您是认为对于这种情况,还有一个没来得及实现的更好的处理方案吗?
from idgenerator.
因为MaxSeqNumber和options.MaxSeqNumber的默认值都是0,所以用户让options.MaxSeqNumber保持默认值0,代码会正常工作。修改为0以外的值,就会发现该配置无法生效。我没有运行代码验证过这点,但理应如此。
这个库做的非常棒。我打算将它集成到项目中。一直担心 并发过大 Id重复,把雪花漂移代码看了2天。发现如果在一毫秒内生成的Id超过上限,程序就会停止生成Id,直到下一个毫秒到来。此设计是非常好的。但看到您写的TODO:
// TODO: 在漂移终止,等待时间对齐时,如果发生时间回拨较长,则此处可能等待较长时间。可优化为:在漂移终止时增加时间回拨应对逻辑。(该情况发生概率低,暂不处理)
您是认为对于这种情况,还有一个没来得及实现的更好的处理方案吗?
只能说是代码结构优化,逻辑上没有bug调整
from idgenerator.
善
from idgenerator.
因为MaxSeqNumber和options.MaxSeqNumber的默认值都是0,所以用户让options.MaxSeqNumber保持默认值0,代码会正常工作。修改为0以外的值,就会发现该配置无法生效。我没有运行代码验证过这点,但理应如此。
这个库做的非常棒。我打算将它集成到项目中。一直担心 并发过大 Id重复,把雪花漂移代码看了2天。发现如果在一毫秒内生成的Id超过上限,程序就会停止生成Id,直到下一个毫秒到来。此设计是非常好的。但看到您写的TODO:
// TODO: 在漂移终止,等待时间对齐时,如果发生时间回拨较长,则此处可能等待较长时间。可优化为:在漂移终止时增加时间回拨应对逻辑。(该情况发生概率低,暂不处理)
您是认为对于这种情况,还有一个没来得及实现的更好的处理方案吗?
抱歉,之前有疏忽,对于你提出的【还有一个没来得及实现的更好的处理方案吗?】这个问题,之前没有回答。
今天再补充一下,关于【在漂移终止时增加时间回拨应对逻辑。(该情况发生概率低,暂不处理)】这个问题,是有一个更好的方案,不过由于漂移后再发生时钟回拨的概率极低极低,我就没有去处理它(因为当下的存在的问题,只是多等待一会让时间对其,并不会产生逻辑bug)。
from idgenerator.
Related Issues (20)
- ID 使用ORM 的 default 字段生成,在几十秒内生成的 ID 都一样? HOT 2
- Go 导入问题 HOT 3
- c# 请问如果我是单台服务器使用只要生成最短(10-12)位就可以的递增ID就可以 HOT 3
- SOSO:5个并发的情况下出现重复数据 HOT 3
- Maybe better to upload to Pypi / npm? HOT 1
- 1
- 如何指定生成单号的长度 HOT 1
- 生成id重复 HOT 4
- PHP 扩展 phpize 后报 warning 错误 HOT 11
- 请问有lua版本的吗? HOT 1
- NextId有重复 HOT 1
- I'm sorry I'm asking this question here HOT 6
- php 版本的扩展能否提供ts版本
- 分布式可否提升性能 HOT 3
- 请问第二版有计划了吗 HOT 3
- 这是一个无效代码吧 HOT 1
- 可以根据生成的id解析出时间等信息吗? HOT 3
- 单服务多线程下生成的Id重复 HOT 1
- 单线程性能很慢 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from idgenerator.