千家信息网

分布式唯一ID生成常用方案有哪些

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,分布式唯一ID生成常用方案有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 使用JAVA的UUID生成算法的核心思想是结合机器的
千家信息网最后更新 2024年09月22日分布式唯一ID生成常用方案有哪些

分布式唯一ID生成常用方案有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1. 使用JAVA的UUID生成
算法的核心思想是结合机器的网卡、当地时间、一个随记数来生成UUID。

优点:本地生成,生成简单,性能好,没有高可用风险
缺点:长度过长,字母和数字组合,存储冗余,且无序不可读,查询效率低

2. 数据库自增ID

使用数据库的id自增策略,如 MySQL 的 auto_increment、oracle的sequence。并且可以使用两台数据库分别设置不同步长,生成不重复ID的策略来实现高可用。

优点:数据库生成的ID绝对有序,高可用实现方式简单
缺点:需要独立部署数据库实例,成本高,实时操作数据库,大并发时存在性能瓶颈问题

3. 数据库+程序(批量生成ID)
一次按需批量生成多个ID,每次生成都需要访问数据库,将数据库修改为最大的ID值,并在内存中记录当前值及最大值。

优点:避免了每次生成ID都要访问数据库并带来压力,提高了性能
缺点:属于本地生成策略,存在单点故障,如果服务器宕机,重启服务造成ID不连续

4. Redis生成ID
Redis的所有命令操作都是单线程的,本身提供像 incr 和 increby 这样的自增原子命令,所以能保证生成的 ID 肯定是唯一有序的。

优点:不依赖于数据库,灵活方便,且性能优于数据库;数字ID天然排序,对分页或者需要排序的结果很有帮助。

缺点:如果系统中没有Redis,还需要引入新的组件,增加系统复杂度;需要编码和配置的工作量比较大。

考虑到单节点的性能瓶颈,可以使用 Redis 集群来获取更高的吞吐量。假如一个集群中有3台 Redis。可以初始化每台 Redis 的值分别是1, 2, 3,然后步长都是3。各个 Redis 生成的 ID 为:

A:1, 4, 7, 10, 13B:2, 5, 8, 11, 14C:3, 6, 9, 12, 15

随便负载到哪个机确定好,未来很难做修改。步长和初始值一定需要事先确定。使用 Redis 集群也可以方式单点故障的问题。
另外,比较适合使用 Redis 来生成每天从0开始的流水号。比如订单号 = 日期 + 当日自增长号。可以每天在 Redis 中生成一个 Key ,使用 INCR 进行累加。

5.MongoDB生成ID

MongoDB的ObjectId和snowflake算法类似。它设计成轻量型的,不同的机器都能用全局唯一的同种方法方便地生成它。MongoDB 从一开始就设计用来作为分布式数据库,处理多个节点是一个核心要求。使其在分片环境中要容易生成得多。

6.其他一些常用的方案

百度uid生成器:https://github.com/baidu/uid-generator

美团点评生成器:http://tech.meituan.com/MT_Leaf.html

zookeeper方式生成唯一UUID

snowflake算法生成UUID

看完上述内容,你们掌握分布式唯一ID生成常用方案有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

生成 数据 数据库 性能 优点 缺点 问题 分布式 常用 方案 方式 方法 策略 算法 集群 步长 不同 最大 有序 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 一个用户可以修改自己的数据库密码 GGBOOK下载软件开发 网络安全性保障 财务软件开发注意事项 中国工业网络安全综合能力 四川壹鱼科技互联网有限公司 山东网络安全博览 大型数据库管理系统技术 软件开发哪一类商标 怎么解决多线程访问数据库 网络技术和计算机软件开发 北京手机软件开发免费咨询 快云数据库啥意思 结构化的软件开发模式 海淀区电子计算机软件开发排名 网络安全密钥手机怎么看 存储服务器一体机怎么调试 什么是客户机服务器 lol国内玩什么服务器不卡 iis自动开启管理服务器 开展网络安全认证检测风险苹果 河北云算网络技术有限公司 香港服务器的历史 赣州兆鑫软件开发 软件开发三年经验 网络安全等级评定中心 长春网络技术口碑推荐 小火箭服务器订阅加速软件 网络安全性选择什么区别 中国软件开发公司有多少家
0