最近复习的时候看到不少人说被问到分布式系统全局ID的问题,有些还要求是全局自增的(TinyURL)
自己搜集了一些资料,但是不是很确定,所以想请老师来点评一下
分布式系统如何生成全局自增ID
参考 Srinath's Blog :My views of the World: Generating a Distributed Sequence Number
- zookeeper 慢
- custom server 单点失效 承受不住高并发
- snowflake 时钟回滚问题
请问面试如果被问到了,选哪个好?
另:如果不要求自增,是不是用uuid就好了?
logic
2
Snowflake 是自增ID的比较好的方案,这个时钟回滚的问题确实存在,解决方案也很简单,检测出来时钟回滚的话就在可以利用预留出来的2位的bits。00是普通情况,01是发生第一次回滚,10是第二次,11是第三次。这样的话必须要在同一个时间戳上回滚3次才会报错,算是足够好了。
参考这篇文章。
1 个赞
请问Snowflake id怎么用成TinyURL 的short url呢?Snowflake id本身太长,肯定不行。如果hash后,那么就有不唯一的可能。感觉无论是uuid还是Snowflake id都没法用啊。。。求指点