面试刷题31:分布式ID设计方案
面试中关于分布式的问题很多。(分布式事务,基本理论CAP,BASE,分布式锁)先来一个简单的。 简单说一下分布式ID的设计方案? 首先要明确在分布式环境下,分布式id的基本要求。 1, 全局唯一,在分布式集群下,不同的节点并发生成的分布式id要唯一; 2, 顺序性,分布式id是有序生成 然后给出分布式id的设计方案。 1, 基于数据的自增id生成分布式ID,使用比较简单,缺点是扩展性和可靠性有限; 基于数据库表的自增id 2,基于 snowflake 算法生成; snowflake生成的分布式id是一个64位整数;位数标识如下: 1 标识正负 41位,一般使用System.currentTimeMilles()得到; 5 数据中心标识 5 机器ip标识 12 单位毫秒内可以生成的序数极限 snowflake的生成跟时间相关的使用的是System.currentTimeMilles(),跟冬令时没有关系。 分布式id的进一步要求 可靠性: 即高可用 紧凑性: 64位的整数比较长,不太紧凑,作为索引,存储不占优势。 有意义: 可以放入业务标识或者时间 snowflake的缺点 受时间影响:需要保证分布式集群的时间同步,即NTP ; 可以预测到:容易按照时间规律预测到,进而影响安全性; 小结 回答了分布式id的基本要求,已经常用方案。 原创不易,点赞关注支持一下吧!转载请注明出处