【Java笔记】分布式id生成-雪花算法

随着业务的增长,有些表可能要占用很大的物理存储空间,为了解决该问题,后期使用数据库分片技术。将一个数据库进行拆分,通过数据库中间件连接。如果数据库中该表选用ID自增策略,则可能产生重复的ID,此时应该使用分布式ID生成策略来生成ID。

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

mybatis-plus已经集成了雪花算法,完成以下两步即可在项目中集成雪花算法

第一:在实体类中的id上加入如下配置,指定类型为id_worker

java 复制代码
@TableId(value = "id",type = IdType.ID_WORKER)
private Long id;

第二:在application.yml文件中配置数据中心id和机器id

yaml 复制代码
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  # 设置别名包扫描路径,通过该属性可以给包中的类注册别名
  type-aliases-package: com.heima.model.article.pojos
  global-config:
    datacenter-id: 1
    workerId: 1

datacenter-id:数据中心id(取值范围:0-31)

workerId:机器id(取值范围:0-31)

相关推荐
东离与糖宝几秒前
Java 26 FFM API进阶:零JNI调用TensorRT/OpenVINO,AI端到端延迟砍半
java·人工智能
红云梦几秒前
互联网三高-高性能之线程池与连接池调优
java·线程池·连接池·池化技术
瑶山2 分钟前
SpringBoot + MongoDB 5分钟快速集成:从0到1实操指南
java·数据库·spring boot·后端·mongodb
迈巴赫车主3 分钟前
蓝桥杯192.等差数列java
java·数据结构·算法·职场和发展·蓝桥杯
chase。3 分钟前
【学习笔记】RoboForge:让文本指令“落地”到人形机器人——一个物理优化与隐式驱动的端到端框架
笔记·学习·机器人
JOEH607 分钟前
为什么你的接口总是响应慢?Java 生产环境 6 大排查误区
java
linux修理工8 分钟前
Claude API 密钥更换方法
java·数据库·mysql
clamlss8 分钟前
💥 踩坑实录:MapStruct 映射失效?揭秘 Lombok 组合下的编译期陷阱
java·后端
殷紫川10 分钟前
CAS 无锁并发深度解析:从 CPU 原语、JDK 源码到生产实战与避坑指南
java
chase。13 分钟前
【学习笔记】从经典算法到通用神经运动规划器
笔记·学习·算法