根据MySQL主密钥ID,大多数场景都是可以的,但是在拆分表之后,某些数据库需要独特,确定徽标的唯一性。例如,会员表的成员ID,订单表的订单ID,营销优惠券等在。
Sharding-JDBC默认使用Snowflake提供了两个主要密钥来生成策略,其相应的实现类是UuidShardingKenator和SnowflakeshardingKeygenerator。
除了上述两个构建的策略外,它还可以根据shardingkeygenerator自定义主键发电机。
在Apache shardingsphere中,SPI注入完成了许多功能实施类加载方法。服务提供商界面(SPI)是由第三方实施或扩展的API,可用于实现框架扩展或组件更换。
SPI扩展Apache Shardingsphere的原因是由于整体架构的最佳设计考虑。为了使高级用户通过实现Apache Shardingsphere提供的相应界面来加载用户定义的实现类,从而满足实际需求用户在不同场景中的不同场景的不同场景。
添加以下文件:meta-inf/services/org.apache.shardingsphere.spi.keygen.keygen.shardingkeygenerator,
文件的内容为:com.sharding.jdbc.demo.util.myshardingkeygenerator
shardingjdbc构建的IN ID生成器实现类包括uuidshardingkenarator和snowflakeshardingkenator。
SnowflakeshardingKeygenerator感兴趣,您可以阅读此源代码
Snowflake算法生成的ID是纯粹的数字,并且具有时间顺序。它的原始版本是Scala版本,许多其他语言(例如Java和C ++)稍后出现。
粗略:第一名是无效的,时间戳记差,机器(过程)编码和序列号:四个部分。
根据Twitter雪花算法,长度为64位;64位组成如下: