Java雪花算法生成分布式id详解
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
@TableId(value = "id",type = IdType.ID_WORKER) private Long id;
第二:在application.yml文件中配置数据中心id和机器id
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
# 设置别名包扫描路径,通过该属性可以给包中的类注册别名
type-aliases-package: com.heima.model.article.pojos
global-config:
datacenter-id: 1
workerId: 1datacenter-id:数据中心id(取值范围:0-31)
workerId:机器id(取值范围:0-31)
到此这篇关于Java雪花算法生成分布式id详解的文章就介绍到这了,更多相关Java雪花算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot整合clickhouse配置多分片地址的示例详解
这篇文章主要为大家详细介绍了SpringBoot整合clickhouse配置多分片地址的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下2025-10-10
java使用jdbc连接数据库工具类和jdbc连接mysql数据示例
这篇文章主要介绍了java使用jdbc连接数据库的工具类和使用jdbc连接mysql数据的示例,需要的朋友可以参考下2014-03-03
SpringBoot @Schedule的使用注意与原理分析
这篇文章主要介绍了SpringBoot @Schedule的使用注意与原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08


最新评论