This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new cbb0c0d21c5 refactor readwrite-splitting doc (#19089)
cbb0c0d21c5 is described below
commit cbb0c0d21c5bd91b82e30abfa24a0c804732cec7
Author: Chuxin Chen <[email protected]>
AuthorDate: Wed Jul 13 14:29:59 2022 +0800
refactor readwrite-splitting doc (#19089)
* refactor readwrite-splitting doc
* refactor readwrite-splitting.cn.md
---
.../java-api/rules/readwrite-splitting.cn.md | 46 ++++++++++++++++-
.../java-api/rules/readwrite-splitting.en.md | 59 +++++++++++++++++++---
2 files changed, 96 insertions(+), 9 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
index c826dd64bbb..982d6bdd28b 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
@@ -3,7 +3,12 @@ title = "读写分离"
weight = 2
+++
-## 配置入口
+## 背景信息
+Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java
代码构造读写分离数据源便可以使用读写分离功能。
+
+## 参数解释
+
+### 配置入口
类名称:org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration
@@ -47,3 +52,42 @@ weight = 2
算法类型的详情,请参见[内置负载均衡算法列表](/cn/user-manual/shardingsphere-jdbc/builtin-algorithm/load-balance)。
查询一致性路由的详情,请参见[使用规范](/cn/features/readwrite-splitting/use-norms)。
+
+## 操作步骤
+1. 添加读写分离数据源
+2. 设置负载均衡算法
+3. 使用读写分离数据源
+
+## 配置示例
+
+```java
+public DataSource getDataSource() throws SQLException {
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new
ReadwriteSplittingDataSourceRuleConfiguration(
+ "demo_read_query_ds", new
StaticReadwriteSplittingStrategyConfiguration("demo_write_ds",
+ Arrays.asList("demo_read_ds_0", "demo_read_ds_1")),
null,"demo_weight_lb");
+ Properties algorithmProps = new Properties();
+ algorithmProps.setProperty("demo_read_ds_0", "2");
+ algorithmProps.setProperty("demo_read_ds_1", "1");
+ Map<String, ShardingSphereAlgorithmConfiguration> algorithmConfigMap =
new HashMap<>(1);
+ algorithmConfigMap.put("demo_weight_lb", new
ShardingSphereAlgorithmConfiguration("WEIGHT", algorithmProps));
+ ReadwriteSplittingRuleConfiguration ruleConfig = new
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceConfig),
algorithmConfigMap);
+ Properties props = new Properties();
+ props.setProperty("sql-show", Boolean.TRUE.toString());
+ return
ShardingSphereDataSourceFactory.createDataSource(createDataSourceMap(),
Collections.singleton(ruleConfig), props);
+ }
+
+ private Map<String, DataSource> createDataSourceMap() {
+ Map<String, DataSource> result = new HashMap<>(3, 1);
+ result.put("demo_write_ds",
DataSourceUtil.createDataSource("demo_write_ds"));
+ result.put("demo_read_ds_0",
DataSourceUtil.createDataSource("demo_read_ds_0"));
+ result.put("demo_read_ds_1",
DataSourceUtil.createDataSource("demo_read_ds_1"));
+ return result;
+ }
+```
+
+## 相关参考
+
+- [核心特性:读写分离](/cn/features/readwrite-splitting/)
+-
[YAML配置:读写分离](/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/readwrite-splitting/)
+- [Spring Boot
Starter:读写分离](/cn/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/readwrite-splitting/)
+- [Spring
命名空间:读写分离](/cn/user-manual/shardingsphere-jdbc/spring-namespace/rules/readwrite-splitting/)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
index 0ff4ce87f98..a8e955f17fc 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
@@ -3,22 +3,28 @@ title = "Readwrite-splitting"
weight = 2
+++
-## Root Configuration
+## Background
+
+The read/write splitting configured in Java API form can be easily applied to
various scenarios without relying on additional jar packages. Users only need
to construct the read/write splitting data source through java code to be able
to use the read/write splitting function.
+
+## Parameters Explained
+
+### Entry
Class name:
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration
-Attributes:
+Configurable Properties:
| *Name* | *DataType*
| *Description* |
| ----------------- |
----------------------------------------------------------- |
---------------------------------------------------------------------- |
| dataSources (+) |
Collection\<ReadwriteSplittingDataSourceRuleConfiguration\> | Data sources of
write and reads |
| loadBalancers (*) | Map\<String, ShardingSphereAlgorithmConfiguration\>
| Load balance algorithm name and configurations of replica data sources |
-## Readwrite-splitting Data Source Configuration
+### Primary-secondary Data Source Configuration
Class name:
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration
-Attributes:
+Configurable Properties:
| *Name* | *DataType* | *Description*
| *Default Value* |
| -------------------------- | -------------------- |
------------------------------------------------- |
----------------------------------|
@@ -27,10 +33,9 @@ Attributes:
| dynamicStrategy | Properties | Dynamic
Readwrite-splitting configuration | - |
| loadBalancerName (?) | String | Load balance algorithm
name of replica sources | Round robin load balance algorithm |
-
Class
name:org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration
-Attributes:
+Configurable Properties:
| *Name* | *DataType* | *Description*
| *Default Value* |
| -------------------------- | ---------------------|
----------------------------| ----------------|
@@ -39,12 +44,50 @@ Attributes:
Class
name:org.apache.shardingsphere.readwritesplitting.api.strategy.DynamicReadwriteSplittingStrategyConfiguration
-Attributes:
+Configurable Properties:
| *Name* | *DataType* | *Description*
| *Default Value* |
| ------------------------------- | -------------------|
------------------------------------------------------------------------------------------------------------|
-------------------|
| autoAwareDataSourceName | String | Database discovery
logic data source name
| - |
| writeDataSourceQueryEnabled (?) | String | All read data source
are offline, write data source whether the data source is responsible for read
traffic | true |
-Please refer to [Built-in Load Balance Algorithm
List](/en/user-manual/shardingsphere-jdbc/builtin-algorithm/load-balance) for
more details about type of algorithm.
+Please refer to [Built-in Load Balance Algorithm
List](/en/user-manual/shardingsphere-jdbc/builtin-algorithm/load-balance) for
details on algorithm types.
Please refer to [Use Norms](/en/features/readwrite-splitting/use-norms) for
more details about query consistent routing.
+
+## Operating Procedures
+1. Add read-write splitting data source
+2. Set load balancing algorithms
+3. Use read-write splitting data source
+
+## Configuration Examples
+
+```java
+public DataSource getDataSource() throws SQLException {
+ ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new
ReadwriteSplittingDataSourceRuleConfiguration(
+ "demo_read_query_ds", new
StaticReadwriteSplittingStrategyConfiguration("demo_write_ds",
+ Arrays.asList("demo_read_ds_0", "demo_read_ds_1")),
null,"demo_weight_lb");
+ Properties algorithmProps = new Properties();
+ algorithmProps.setProperty("demo_read_ds_0", "2");
+ algorithmProps.setProperty("demo_read_ds_1", "1");
+ Map<String, ShardingSphereAlgorithmConfiguration> algorithmConfigMap =
new HashMap<>(1);
+ algorithmConfigMap.put("demo_weight_lb", new
ShardingSphereAlgorithmConfiguration("WEIGHT", algorithmProps));
+ ReadwriteSplittingRuleConfiguration ruleConfig = new
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceConfig),
algorithmConfigMap);
+ Properties props = new Properties();
+ props.setProperty("sql-show", Boolean.TRUE.toString());
+ return
ShardingSphereDataSourceFactory.createDataSource(createDataSourceMap(),
Collections.singleton(ruleConfig), props);
+ }
+
+ private Map<String, DataSource> createDataSourceMap() {
+ Map<String, DataSource> result = new HashMap<>(3, 1);
+ result.put("demo_write_ds",
DataSourceUtil.createDataSource("demo_write_ds"));
+ result.put("demo_read_ds_0",
DataSourceUtil.createDataSource("demo_read_ds_0"));
+ result.put("demo_read_ds_1",
DataSourceUtil.createDataSource("demo_read_ds_1"));
+ return result;
+ }
+```
+
+## References
+- [Read-write splitting-Core features](/en/features/readwrite-splitting/)
+- [YAML Configuration: read-write
splitting](/en/user-manual/shardingsphere-jdbc/yaml-config/rules/readwrite-splitting/)
+- [Spring Boot Starter: read-write
splitting](/en/user-manual/shardingsphere-jdbc/spring-boot-starter/rules/readwrite-splitting/)
+- [Spring namespace: read-write
splitting](/en/user-manual/shardingsphere-jdbc/spring-namespace/rules/readwrite-splitting/)