Skip to main content

Snowflake配置方式

  • 分布式部署就需要分配不同的workId, 如果workId相同,可能会导致生成的id相同

  • 分布式情况下,需要保证各个系统时间一致,如果服务器的时钟回拨,就会导致生成的 id 重复

配置实操

spring.shardingsphere.sharding.tables.product_order.key-generator.props.worker.id=1
方式一
@TableId(value = "id", type = IdType.ASSIGN_ID)
默认实现类为DefaultIdentifierGenerator雪花算法
方式二

使用Sharding-Jdbc配置文件,注释DO类里面的id分配策略

#id生成策略
spring.shardingsphere.sharding.tables.product_order.key-generator.column=id
spring.shardingsphere.sharding.tables.product_order.key-generator.type=SNOWFLAKE

动态指定sharding jdbc 的雪花算法中的属性work.id属性

使用sharding-jdbc中的使用IP后几位来做workId, 但在某些情况下会出现生成重复ID的情况

解决办法:在启动时给每个服务分配不同的workId, 引入redis/zk都行,缺点就是多了依赖