分布式ID生成

分布式ID生成
1.1 为什么使用分布式ID

在这里插入图片描述
1.2 分布式ID解决方案
1). UUID
UUID 可以保证每一次生成的ID不重复 ;
缺点 :

  • 长度比较长 , 占用磁盘空间
  • 无法排序
    2). Redis
    通过redis的指令 incr指令, 来实现一个自增的主键 , 可以保证ID不会重复 , 并且线程安全 ;

    实现:
    incr orderid
    缺点 :
  • 借助于redis数据库 ;
    在这里插入图片描述

3). 雪花算法
自己编写的一种算法实现 , 是推特网站提供的一种分布式ID生成机制 ; 不需要借助于第三方服务, 性能高;

在这里插入图片描述
64 = 1 + 41 + 10(5 + 5) + 12 ;
5: 代表数据中心ID
5: 代表机器ID

在这里插入图片描述
1.3 雪花算法实现
IdWorker idWorker = new IdWorker(0,0);
for(int i=0;i<1000;i++){
long id = idWorker.nextId();
System.out.println(id);
}

将IdWorker交给Spring管理 :
@Value("${workerId}")
private Integer workerId;

@Value("{datacenterId}")
private Integer datacenterId;
@Bean
public IdWorker idWorker(){
return new IdWorker(workerId,datacenterId);
}

发布了92 篇原创文章 · 获赞 3 · 访问量 2801

猜你喜欢

转载自blog.csdn.net/weixin_44993313/article/details/104401358
今日推荐