分布式序列算法 #
雪花算法 #
类型:SNOWFLAKE
可配置属性:
属性名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
max-vibration-offset (?) | int | 最大抖动上限值,范围[0, 4096)。注:若使用此算法生成值作分片值,建议配置此属性。此算法在不同毫秒内所生成的 key 取模 2^n (2^n一般为分库或分表数) 之后结果总为 0 或 1。为防止上述分片问题,建议将此属性值配置为 (2^n)-1 | 1 |
max-tolerate-time-difference-milliseconds (?) | long | 最大容忍时钟回退时间,单位:毫秒 | 10 毫秒 |
worker-id-offset | int | 该参数适用于多集群环境,避免生成重复的雪花算法。设置参数值时,请合理评估集群所需的节点数 | 0 |
UUID #
类型:UUID
可配置属性:无
NANOID #
类型:NANOID
可配置属性:无
Redis 自增主键 #
类型:REDIS_AUTO_INCREMENT
可配置属性:
属性名称 | 数据类型 | 说明 | 默认值 |
---|---|---|---|
host | String | 主机地址 | 127.0.0.1 |
port | int | 端口 | 6379 |
user | String | 用户名 | null |
password | String | 密码 | null |
database | int | 数据库 | 0 |
connection-timeout-millis | int | 连接超时时长,单位:毫秒 | 2000 |
socket-timeout-millis | int | 执行超时时长,单位:毫秒 | 2000 |
max-total | int | 最大连接数 | 8 |
max-idle | int | 最大空闲连接数 | 8 |
min-idle | int | 最小空闲连接数 | 0 |
increment-step | int | 自增主键步长 | 1 |
reserved-size | int | 首次接入 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) 计算。