官方文档分布式主键
sharding-jdbc提供了两种主键生成策略UUID、SNOWFLAKE
,默认使用SNOWFLAKE,
还抽离出分布式主键生成器的接口org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator
,方便用户自行实现自定义的自增主键生成器。
1.自定义实现ShardingKeyGenerator
public class SimpleShardingKeyGenerator implements ShardingKeyGenerator {
private AtomicLong atomic = new AtomicLong(0);
@Getter
@Setter
private Properties properties = new Properties();
@Override
public Comparable<?> generateKey() {
return atomic.incrementAndGet();
}
@Override
public String getType() {
//声明类型
return "SIMPLE";
}
}
这里仅为了说明如何配置使用自定义主键生成器,简单使用AtomicLong实现
。
2.配置分片策略
spring:
shardingsphere:
datasource: ## 略......
sharding:
tables:
t_order:
## 指定 t_order表的 数据分布情况,配置数据节点
actual-data-nodes: m1.t_order_$->{1..2}
## 指定t_order表的主键列,以及主键生成策略为SNOWFLAKE
key-generator:
column: order_id
## 指定分片策略类型
type: SIMPLE
## 指定t_order的分片策略: 设置分片键和分片算法
table-strategy:
inline:
sharding-column: order_id
## 根据order_id % 2 + 1 的结果,指定t_order的实际表
algorithm-expression: t_order_$->{order_id % 2 +1}
指定
spring.shardingsphere.datasource.sharding.tables.<tablename>.key-generator.type=SIMPLE
3.SPI接口配置
添加如下文件META-INF/services/org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator
,文件内容为:your_package_name.SimpleShardingKeyGenerator
.
4.测试