Logo
分布式序列算法

分布式序列算法 #

雪花算法 #

类型:SNOWFLAKE

可配置属性:

属性名称数据类型说明默认值
max-vibration-offset (?)int最大抖动上限值,范围[0, 4096)。注:若使用此算法生成值作分片值,建议配置此属性。此算法在不同毫秒内所生成的 key 取模 2^n (2^n一般为分库或分表数) 之后结果总为 0 或 1。为防止上述分片问题,建议将此属性值配置为 (2^n)-11
max-tolerate-time-difference-milliseconds (?)long最大容忍时钟回退时间,单位:毫秒10 毫秒
worker-id-offsetint该参数适用于多集群环境,避免生成重复的雪花算法。设置参数值时,请合理评估集群所需的节点数0

UUID #

类型:UUID

可配置属性:无

NANOID #

类型:NANOID

可配置属性:无

Redis 自增主键 #

类型:REDIS_AUTO_INCREMENT

可配置属性:

属性名称数据类型说明默认值
hostString主机地址127.0.0.1
portint端口6379
userString用户名null
passwordString密码null
databaseint数据库0
connection-timeout-millisint连接超时时长,单位:毫秒2000
socket-timeout-millisint执行超时时长,单位:毫秒2000
max-totalint最大连接数8
max-idleint最大空闲连接数8
min-idleint最小空闲连接数0
increment-stepint自增主键步长1
reserved-sizeint首次接入 Redis 自增主键的预留空间0

说明:Redis 自增主键依赖 Redis 服务,需要由用户自行提供服务并保证服务的可用性,禁止手动删除或修改 Redis 自增主键。Redis 自增主键存在网络调用,性能相比其他分布式序列算法存在一定损耗,性能敏感的业务需要提前进行压测评估。如果用户修改了 Redis 自增主键的步长 increment-step,则需要同时设置 MySQL 中的 auto_increment_increment 参数,保证步长在 MySQL 和 Engine 中一致。 reserved-size 参数用于首次使用自增主键时,Engine 会查询广播表当前最大值进行 Redis 自增初始化,考虑到增量业务同时会进行写入,此时会有新的 ID 生成,因此需要预留一定的空间,保证 ID 不冲突,reserved-size 可以用 QPS * 规则切换时长(小于 10s) 计算。