【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)

相关推荐
Wpa.wk9 分钟前
自动化测试(java) - PO模式了解
java·开发语言·python·测试工具·自动化·po模式
进阶的猪9 分钟前
stm32 GPIO输出-使用固件库点亮LED灯 Q&A
c语言·笔记·stm32·单片机
IT 行者21 分钟前
Spring Security 7.0 新特性详解
java·后端·spring
阿萨德528号24 分钟前
Maven 项目构建笔记 - 单体应用与简单微服务
笔记·微服务·maven
华仔啊27 分钟前
Java 的金额计算用 long 还是 BigDecimal?资深程序员这样选
java·后端
YJlio27 分钟前
Strings 学习笔记(12.1):从二进制里“扒”出明文信息的瑞士军刀
服务器·笔记·学习
Coder_Boy_31 分钟前
业务导向型技术日志记录(2)
java·人工智能·驱动开发·微服务
凤凰战士芭比Q37 分钟前
Jenkins(环境变量、构建参数、流水线触发、通知报告)
java·servlet·jenkins
运维@小兵1 小时前
Spring AI系列——开发MCP Server和MCP Client(SSE方式)
java·人工智能·spring
Hunter1161 小时前
Delphi通过ITHTTP传输有汉字乱码问题
笔记