全局ID的相关问题
2021/6/6 10:24:09
本文主要是介绍全局ID的相关问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
常见的几种解决方法
- UUID
- 使用数据库中设置整形字段auto_increment
- 使用雪花算法
UUID的优缺点
优点:简单,方便生成。
缺点:毫无意义,这个字段仅能保证唯一性,不重复,但是没有实际意义
auto_crement
这个比较简单,设计表的时候,就设置自增长。
缺点:就是采用分布式布局,进行集群,那么不同服务器
雪花算法的理论
雪花算法是生成64位的数字。
最高位是符号位,对于我们来说没有什么实际意义。这位就是0,表示是正数
接着41位是一个时间戳。2^41,2的41次方,可以使用69年,这已经远超一个软件的生命周期了,(我去腾讯学习的时候,说过一般软件的生命周期很短,像QQ这种超长生命周期的产品不多见)
接着10位是工作机器ID,2^10次方,可以有1024个数字,表示可以有1024个机器做集群,这个数字对于我来说很夸张了
最后12位表示序列号,2^12,表示4096,这个是序列号,一毫秒生成4096个序列号,那么一秒钟就会生成4096000,这已经可以保证不重复了吧。
优点就是适用于分布式数据库生成全局ID。缺点就是依赖机器的当前时间。如果机器出现时间回滚,就是回到某个过去的时间,可能会造成ID重复。
这篇关于全局ID的相关问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程