无锡网站建设在哪里,网站开发和设计实训,高端装饰公司网站设计,微网页制作专业公司分布式 id 需要处理的问题主要是同一时间在多台机器中保证生成的 id 唯一#xff0c;为了这么做我们可以这么做#xff1a;
分布式 id 生成策略
先说几个已经被淘汰的策略引出分布式 id 的问题
1#xff0c;UUID#xff1a;UUID 随机并且唯一#xff0c;在单一的数据库…分布式 id 需要处理的问题主要是同一时间在多台机器中保证生成的 id 唯一为了这么做我们可以这么做
分布式 id 生成策略
先说几个已经被淘汰的策略引出分布式 id 的问题
1UUIDUUID 随机并且唯一在单一的数据库中就不适合作为主键因为生成的字符串太长不符合索引优化规则
2自增 ID不管是数据库自增还是MP自增分布式数据库中总是要存放一定范围的数据使用自增策略可能会导致不同数据库存放同一id的问题
以下的方法比较靠谱
3redis 生成利用 redis 的 incr 命令生成 id设置起始值和步长步长值是配置了多少台 redis这种方法同样适应与数据库多主模式
4雪花算法生成一个64bit的id也就是long类型的数字长度适中并且方便快捷
雪花算法
雪花算法是一个比较常见的生成分布式 id 的方式它会生成一个 8 字节的数据通过确保每段数据在空间与时间上唯一来确定最终数据的唯一
64bit 中起始 1bit 为0闲置不用
接下来 41bit 代表时间戳这个是毫秒级的时间存放时间戳的差值当前时间-固定的开始时间41位的时间戳可以使用69年 10bit 存放机器 id前 5bit 代表机器位置配置在不同地区的机器有不同 id后 5bit 代表机器 id 一个地区会配置集群 最后的 12bit 代表流水号一个毫秒时间内最多可以处理4096个 id