Sharding核心配置主要如下(官网):
- 分片规则
分片规则配置的总入口。包含数据源配置、表配置、绑定表配置以及读写分离配置等
-
数据源配置
真实数据源列表
-
表配置
逻辑表名称、数据节点与分表规则的配置
-
数据节点配置
用于配置逻辑表与真实表的映射关系。可分为均匀分布和自定义分布两种形式
-
分片策略配置
对于分片策略存有数据源分片策略和表分片策略两种维度
- 数据源分片策略:
对应于DatabaseShardingStrategy。用于配置数据被分配的目标数据源
- 表分片策略
对应于TableShardingStrategy。用于配置数据被分配的目标表,该目标表存在与该数据的目标数据源内。故表分片策略是依赖与数据源分片策略的结果的
- 数据源分片策略:
- 自增主键生成策略
通过在客户端生成自增主键替换以数据库原生自增主键的方式,做到分布式主键无重复。
接下来对各个核心配置进行分析:
- 以多主多从读写分离、表分片为例
public final class ShardingMasterSlaveConfigurationPrecise implements ExampleConfiguration { @Override public DataSource getDataSource() throws SQLException { ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration(); //分片表规则配置 shardingRuleConfig.getTableRuleConfigs().add(getOrderTableRuleConfiguration()); shardingRuleConfig.getTableRuleConfigs().add(getOrderItemTableRuleConfiguration()); //绑定分片表,主要用来路由 shardingRuleConfig.getBindingTableGroups().add("t_order, t_order_item"); //设置默认数据源分片策略 shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new PreciseModuloShardingDatabaseAlgorithm())); //设置默认表分片策略 shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("order_id", new PreciseModuloShardingTableAlgorithm())); //主从配置,支持多主多从 shardingRuleConfig.setMasterSlaveRuleConfigs(getMasterSlaveRuleConfigurations()); //创建ShardingDataSource数据源 return ShardingDataSourceFactory.createDataSource(createDataSourceMap(), shardingRuleConfig, new Properties()); } private static TableRuleCo