分布式id---雪花算法

为什么要用分布式id
随着业务的增长,后期可能会对数据库进行拆分的操作,通过数据库中间间链接。如果数据库表中的id采取的是自增策略,则会产生重复的id。使用分布式id便是为了避免此类现象。

雪花算法
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0

基于MyBatisPlus实现分布式id
mybatis-plus已经集成了雪花算法,完成以下两步即可在项目中集成雪花算法

  1. 第一:在实体类中的id上加入如下配置,指定类型为id_worker
点击查看代码
@TableId(value = "id",type = IdType.ID_WORKER)
private Long id;
2. 第二:在application.yml文件中配置数据中心id和机器id
点击查看代码
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  # 设置别名包扫描路径,通过该属性可以给包中的类注册别名
  type-aliases-package: com.wzh.model.article.pojos
  global-config:
    datacenter-id: 1
    workerId: 1
posted @ 2023-07-03 23:36  wzh_Official  阅读(37)  评论(0编辑  收藏  举报