分布式ID是什么?有哪些解决方案?

在开发中,我们通常会需要一个唯一ID来标识数据,如果是单体架构我们可以通过数据库的主键,或直接在内存中维护一个自增数字来作为ID都是可以的,但对于一个分布式系统,就会有可能会出现ID冲突,此时有以下解决方案:

1.uuid,这种方案复杂度最低,但是会影响存储空间和性能

2.利用单机数据库的自增主键,作为分布式ID的生成器,复杂度适

中,ID长度较之uuid更短,但是受到单机数据库性能的限制,并发量大的时候,

此方案也不是最优方案

3.利用redis、zookeeper的特性来生成id,比如redis的自增命令、Dokeeper的顺序节点,这种方案和单机数据库(mysql)相比,性能有所提高,可以适当选用

4.雪花算法,一切问题如果能直接用算法解决,那就是最合适的,利用雪花算法也可以生成分布式ID,底层原理就是通过某台机器在某一毫秒内对但是只能保证趋势递增。业界存在tinyid、leaf等开源中间件实现了雪花算法某一个数字自增,这种方案也能保证分布式架构中的系统id唯一。

相关推荐
一条泥憨鱼1 小时前
【Redis | 黑马点评】分布式锁;Lua脚本;Redisson与看门狗 |源码万字详解
redis·分布式·lua
stark张宇2 小时前
库存扣减的“锁”事:悲观锁、乐观锁、分布式锁
redis·分布式·mysql
xianyuCcCcCCCcc5 小时前
Ceph 分布式存储:集群配置与存储池管理
运维·分布式·ceph
萧瑟余晖7 小时前
Spring Cloud分布式事务与链路追踪详解
分布式·spring·spring cloud
汤姆宝库8 小时前
预训练工程深拆:Scaling_Law、数据管线与分布式并行
分布式
pjj198548 小时前
Spark RDD 核心知识详解:算子、依赖与执行模型
大数据·分布式·spark
浔溺9 小时前
Spark核心基石:RDD全方位深度解析(原理、算子、实战、优化)
大数据·分布式·spark
catino9 小时前
RabbitMQ详解
分布式·rabbitmq·ruby
爱吃火鸡面呀9 小时前
Spark RDD 创建与转换算子详解
大数据·分布式·spark
叶总没有会1 天前
RabbitMQ高级
分布式·rabbitmq