浅谈常见的分布式ID生成方案

一、UUID

UUID是通用唯一标识码的缩写,其目的是让分布式系统中的所有元素都有唯一的辨识信息,而不需要通过中央控制器来指定唯一标识。

优点:

(1)降低全局节点的压力,使得主键生成速度更快;

(2)生成的主键全局唯一;

(3)跨服务器合并数据方便。

缺点:

(1)UUID占用16个字符,空间占用较多;

(2)不是递增有序的数字,数据写入IO随机性很大,且索引效率下降。

二、数据库主键自增

MySQL数据库设置主键且主键自动增长。

优点:

(1)INT和BIGINT类型占用空间较小;

(2)主键自动增长,IO写入连续性好;

(3)数字类型查询速度优于字符串。

缺点:

(1)并发性能不高,受限于数据库性能;

(2)分库分表,需要改造,复杂;

(3)自增-数据和数据量泄露。

三、Redis自增ID

Redis计数器,原子性自增。

优点: 使用内存,并发性能好 。

缺点:

(1)数据丢失;

(2)自增-数据量泄露。

四、雪花算法

大名鼎鼎的雪花算法,分布式ID的经典解决方案。雪花算法生成的ID组成如下所示:

(1)符号位,占用1位。

(2)时间戳,占用41位,可以支持69年的时间跨度。

(3)机器ID,占用10位。

(4)序列号,占用12位。一毫秒可以生成4095个ID。

优点:

(1)不依赖外部组件;

(2)性能好。

缺点: 时钟回拨。

相关推荐
柒.梧.1 小时前
MyBatis一对一关联查询深度解析:大实体类、SQL99联表、分布式查询实践
分布式·mybatis
Wang's Blog2 小时前
Kafka: Admin 客户端操作指南之主题管理与集群监控
分布式·kafka
源代码•宸2 小时前
goframe框架签到系统项目开发(用户认证、基于 JWT 实现认证、携带access token获取用户信息)
服务器·开发语言·网络·分布式·后端·golang·jwt
前端世界3 小时前
别只测功能:一套可落地的鸿蒙分布式压力测试方案
分布式·压力测试·harmonyos
Wang's Blog3 小时前
Kafka: AdminClient 核心操作详解之Topic 信息查询、配置修改与分区管理
分布式·kafka
Mr.朱鹏3 小时前
分布式接口幂等性实战指南【完整版】
java·spring boot·分布式·sql·spring·云原生·幂等
无泪无花月隐星沉4 小时前
uos server 1070e部署Hadoop
大数据·运维·服务器·hadoop·分布式·uos·国产化os
Wang's Blog4 小时前
RabbitMQ: 构建高可靠消息系统之定时重发、消费重试与死信告警全解析
分布式·rabbitmq
Wang's Blog19 小时前
Kafka: 分布式配置管理的核心挑战
分布式·kafka
回家路上绕了弯20 小时前
分布式事务TCC详解:高并发场景下的柔性事务最优解?
分布式·后端