分布式ID
2020-11-17 22:25:08 24 举报
AI智能生成
分布式ID是指在分布式系统中用于唯一标识一个实体或操作的ID。在分布式系统中,由于数据分散在多个节点上,传统的自增ID无法满足需求。因此,需要一种能够全局唯一、不重复的ID生成策略。常用的分布式ID生成算法有雪花算法(Snowflake)和全局唯一ID生成器(如Twitter的Snowflake算法)。这些算法能够保证在分布式环境下生成的ID具有唯一性和递增性,从而满足各种业务场景的需求。
作者其他创作
大纲/内容
生成方式
UUID(不推荐)
使用
优点
生成简单,本地生成无网络消耗,具有唯一性
缺点
无序的字符串,不具备自增特性
没有具体的业务含义
长度过长,16字节,128位。MySQL对于36位长度的字符串,存储以及查询对数据库的性能消耗较大,MySQL明确建议主键越短越好,作为数据库主键,UUID的无序性会导致数据位置频繁变动,严重影响性能。
数据库自增ID
使用
优点
实现简单,ID单调递增,数值类型查询速度快
缺点
并发高,访问量激增时MySQL本身就是系统的瓶颈
DB单点存在宕机风险,无法扛住高并发场景
数据库多主模式
使用
优点
解决DB单点问题
缺点
不利于后续扩容,在其他集群机器起始值和自增步长确定好之后,新增机器会比较麻烦
单个数据库自身压力还是大,高并发的情况下对数据库自身压力还是大
号段模式
使用
优点
不强依赖数据库,不会频繁访问数据库,对数据库压力比较小
缺点
Redis
使用
优点
使用集群,解决数据库生成ID的性能问题
缺点
持久化问题。RDB方式,挂掉重启后会出现ID重复的情况。
AOF方式,重启数据恢复时间过长。
redis集群之后水平扩张会麻烦
雪花算法
时间戳 + 工作机器id + 序列号
介绍
使用
优点
缺点
滴滴-TinyID
图解
介绍
原理
接入方式
http
tinyid-client
建议
优点
缺点
百度-Uidgenerator
介绍
组成
使用
建议
优点
可以自定义机器id生成策略
能支持较高的吞吐量,基本维持在 600w/s
缺点
需要额外使用数据库,生成机器id用
美团-Leaf
介绍
使用
号段模式
snowflake
优点
缺点
要求
全局唯一
高性能
高可用
方便接入
趋势递增
0 条评论
下一页