官方文檔分佈式主鍵
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.測試