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