ZLBer
ZLBer
> 我不确定能否无视时钟回拨问题、省掉存储,仅仅声明“我们不帮你解决时钟回拨问题,请使用一个可靠的NTP服务器、让他确保你的机器不会时钟回拨”。我不确定有没有这样的NTP服务(我记得即使关闭NTP同步,闰秒还是会导致回拨?) 阿里云有NTP服务器,可以参考下 : https://help.aliyun.com/document_detail/92704.html
This issue will participate in the [chinese GLCC activity](https://mp.weixin.qq.com/s/yBem9JTrPI5OKWqunUQWAQ) # 1.题目描述 Layotto Sequencer API 的雪花算法实现 # 2.编码任务 - 实现雪花算法的Sequencer组件,解决时钟漂移问题 - 编写合适的测试用例测试算法的正确性 - 编写组件文档(中英文) # 3.技能要求和编程语言 - 熟悉go语言 - 了解雪花算法的原理与实现 -...
> 开启多个线程向RingBuffer中填入预先生成的UID。当sequence到达最大位数,delta seconds直接+1(除了程序启动时读取当前时间,之后不再需要)。 @OOOOlh 可以展开说一下这里吗。按这种方式,delta seconds已经和时间没有什么关系了。`当sequence到达最大位数,delta seconds直接+1` 这与直接递增id好像是一样的了。这种方式的的并发度应该不如和与时间绑定的算法吧?
>这种方法的一个主要不足是业务请求的uid反解析后的时间不是业务真实发生的时间,我不确定这个影响算不算大。 这个问题应该不大,只要是递增的就行 >只在程序启动时读取当前时间(这个时间一般是比上次RingBuffer中的uid的时间戳晚的 还有这里,按照上面的设计,每次启动不都是获取的新的workid吗?那么时间戳从0开始不都可以?
好,我大概明白了,就是不再依赖于物理时间。可以大概描述下整个id生成的过程,然后可以写代码了。
@seeflood 周老师看下方案吧
@OOOOlh remember add license header
ivr is confusing :-)
用zk实现分布式锁-我的设计方案: 要保证 trylock(expire)语义正确性 ,即在expire时间内自动实现解锁,自己删除zk 的节点的 话,且不会因为client的异常导致节点一直存在,只能用zk的临时节点。临时节点和zkclient的生命周期是绑定在一起的,且zk的临时节点不支持设置超时时间,只能自己保持zkclient的存活,所以我想到了下面两种方式: 
@seeflood next i want to implement lock by consul, let me try !