+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**id**|String|False| |plugin id|
+|**name**|String|True| |plugin name|
+|**config**|String|False| |plugin configuration (Json format)|
+|**role**|String|False| |plugin role |
+|**enabled**|Boolean|False| |whether to turn on|
+
+##### Example
+
+POST body
+
+```
+{"id":3,"name":"divide","enabled":"true"}
+
+```
+
+### CleanAll
+
+Clear all data (plugins, selectors, rules)
+
+##### Request Method
+
+GET
+
+##### Path
+
+/cleanAll
+
+### Clean Plugin
+
+Clear plugin data(selector, rule)
+
+##### Request Method
+
+GET
+
+##### Path
+
+/cleanPlugin?name = xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**name**|String|true| |plugin name |
+
+### Delete plugin
+
+Remove plugin data (not included, the selectors and rules data)
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/delete?name = xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**name**|String|true| |plugin name |
+
+### Delete All Plugin
+
+Remove all plugin data (not included, the selectors and rules data)
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/deleteAll
+
+### Find plugin by name
+
+Find plugin by name
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/findByName?name=xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**name**|String|true| |plugin name |
+
+### Save or Update Selector
+
+Save or Update Selector
+
+##### Request Method
+
+POST
+
+##### Path
+
+/plugin/selector/saveOrUpdate
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**SelectorData**|[SelectorData](#SelectorData)|True| |Selector object (pass Json object inside Body)|
+
+#####
SelectorData
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**id**|String|False| |selector id|
+|**pluginName**|String|True| |plugin name|
+|**name**|String|False| |Selector name (default is plugin:selector+random number if not filled)|
+|**matchMode**|Integer|False| |Matching mode (0:and;1:or), not filled with the default generation And mode|
+|**type**|Integer|False| |Traffic type(0: full traffic; 1: custom traffic) do not fill in the default generation of full traffic|
+|**sort**|Integer|False| |Sort by, not filled by default generate 10|
+|**enabled**|Boolean|False| |Whether to turn on, not fill in the default generation true|
+|**logged**|Boolean|False| |Whether or not to print the log, do not fill in the default generated into false|
+|**handle**|String|False| |Selector handler (Json objects, depending on each plug-in, different objects are passed)|
+|**conditionList**|[Condition](#Condition)|False| |Conditional collection, custom traffic needs to be passed, full traffic does not need to be passed (Json List object)|
+
+#####
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**pluginName**|String|True| |plugin name|
+|**selectorName**|String|False| |Selector name (if not filled in, it is generated by default plugin:selector+random number)|
+|**matchMode**|Integer|False| |Matching mode (0:and;1:or), not filled with the default generation And mode|
+|**selectorHandler**|String|False| |Selector handler (Json objects, depending on each plug-in, different objects are passed)|
+|**conditionList**|[ConditionData](#ConditionData)|True| |Selector condition collection (Json List object)|
+|**ruleDataList**|[RuleLocalData](#RuleLocalData)|True| |Rule condition collection (Json List object)|
+
+#####
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**paramType**|String|True| |param type(post,uri,query,host,header,cookie,req_method,domain)|
+|**operator**|String|True| |operator (match,=,regex,>,<,contains,SpEL,Groovy,TimeBefore,TimeAfter)|
+|**paramName**|String|False| |param mame(The uri parameter type can be passed without)|
+|**paramValue**|Integer|False| |param value|
+
+##### Example
+
+POST body
+
+```
+{
+ "pluginName": "divide",
+ "selectorHandler": "[{\"upstreamUrl\":\"127.0.0.1:8089\"}]",
+ "conditionDataList": [{
+ "paramType": "uri",
+ "operator": "match",
+ "paramValue": "/http/**"
+ }],
+ "ruleDataList": [{
+ "ruleHandler": "{\"loadBalance\":\"random\"}",
+ "conditionDataList": [{
+ "paramType": "uri",
+ "operator": "=",
+ "paramValue": "/http/test/payment"
+ }]
+ }, {
+ "ruleHandler": "{\"loadBalance\":\"random\"}",
+ "conditionDataList": [{
+ "paramType": "uri",
+ "operator": "=",
+ "paramValue": "/http/order/save"
+ }]
+ }]
+}
+
+```
+
+### Delete Selector
+
+Delete selectors based on selector id and plugin name
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/selector/delete?pluginName=xxxx&&id=xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**pluginName**|String|true| |plugin name |
+|**id**|String|true| |selector id |
+
+### Find All Selector
+
+Get all selectors by plugin name
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/selector/findList?pluginName=xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**pluginName**|String|true| |plugin name |
+
+### Save or Update Rule Data
+
+Save or Update Rule Data
+
+##### Request Method
+
+POST
+
+##### Path
+
+/plugin/rule/saveOrUpdate
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**RuleData**|[RuleData](#RuleData)|True| |Rule object (pass Json object inside Body)|
+
+#####
RuleData
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**id**|String|False| |rule id|
+|**pluginName**|String|True| |plugin name|
+|**name**|String|False| |Rule name (default generation if not filled plugin:rule+random number)|
+|**selectorId**|String|True| |Selector id|
+|**matchMode**|Integer|False| |Matching mode (0:and;1:or), not filled with the default generation And mode|
+|**sort**|Integer|False| |Sort by , not filled by default generate 10|
+|**enabled**|Boolean|False| |Whether to turn on, not fill in the default generation true|
+|**logged**|Boolean|False| |Whether or not to print the log, do not fill in the default generated into false|
+|**handle**|String|False| |Rule handler (Json objects, depending on each plug-in, different objects are passed)|
+|**conditionList**|[ConditionData](#ConditionData)|False| |Conditional collections (Json List objects)|
+
+#####
conditionList
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**paramType**|String|True| |param type(post,uri,query,host,header,cookie,req_method,domain)|
+|**operator**|String|True| |operator (match,=,regex,>,<,contains,SpEL,Groovy,TimeBefore,TimeAfter)|
+|**paramName**|String|False| |param mame(The uri parameter type can be passed without)|
+|**paramValue**|Integer|False| |param value|
+
+##### Example
+
+POST body
+
+```
+{
+ "pluginName": "divide",
+ "selectorId": 123456,
+ "handle": "{\"loadBalance\":\"random\"}",
+ "conditionDataList": [{
+ "paramType": "uri",
+ "operator": "=",
+ "paramValue": "/test"
+ }]
+}
+
+```
+
+##### Result
+
+Is rule id
+
+```
+xxxxx
+```
+
+### Delete rule data
+
+Delete rules based on selector id and rule id
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/rule/delete?selectorId=xxxx&&id=xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**selectorId**|String|true| |selector ID |
+|**id**|String|true| |rule ID |
+
+### Find Rule data List
+
+Get all rules by selector ID
+
+##### Request Method
+
+GET
+
+##### Path
+
+/plugin/rule/findList?selectorId=xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**selectorId**|String|true| |selector id |
+
+## Meta data
+
+### Save Or Update
+
+Save Or Update Meta data
+
+##### Request Method
+
+POST
+
+##### Path
+
+/meta/saveOrUpdate
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**MetaData**|[MetaData](#MetaData)|True| |Metadata object (pass Json object inside Body)|
+
+#####
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**appKey**|String|True| |app key|
+|**appSecret**|String|True| |app secret|
+|**enabled**|Boolean|False| |Whether to turn on|
+|**open**|Boolean|False| |is open|
+|**paramDataList**|[AuthParamData](#AuthParamData)|false| |Parameter set, open is true when you need to pass (Json list object)|
+|**AuthPathData**|[AuthPathData](#AuthPathData)|false| |Path collection, open is true when you need to pass (Json list object)|
+
+#####
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**appName**|String|True| |app name|
+|**path**|String|True| |path|
+|**enabled**|Boolean|False| |Whether to turn on|
+
+### Delete
+
+Delete App Sign Data
+
+##### Request Method
+
+GET
+
+##### Path
+
+/auth/delete?appKey=xxxx
+
+##### RequestParam
+
+|Name|Type|Required|Default|Description|
+|---|---|---|---|---|
+|**appKey**|String|true| |app key |
diff --git a/versioned_docs/version-2.6.1/developer/notice-alert.md b/versioned_docs/version-2.6.1/developer/notice-alert.md
new file mode 100644
index 00000000000..500b8ed7ec5
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/notice-alert.md
@@ -0,0 +1,83 @@
+---
+title: Alarm Notice
+keywords: ["alarm"]
+description: Alarm message dispatch and notice
+---
+
+## Description
+
+* This doc gives a brief description for send alarm notice message using `Apache ShenYu API`.
+
+## Enable Alert in ShenYu Gateway
+
+* Config the gateway `application.yml`
+
+```yaml
+shenyu:
+ alert:
+ enabled: true
+ # the shenyu admin servers, if admin cluster, config like 127.0.0.1:9095,192.3.4.2:9095
+ admins: localhost:9095
+```
+
+## Send Alarm Message
+
+* We can send custom alarm message in plugin using `AlarmSender.alarm()`
+
+Refer below:
+
+```java
+public class ParamMappingPlugin extends AbstractShenyuPlugin {
+
+ @Override
+ public Mono doExecute(final ServerWebExchange exchange, final ShenyuPluginChain chain, final SelectorData selector, final RuleData rule) {
+ ParamMappingRuleHandle paramMappingRuleHandle = ParamMappingPluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(rule));
+
+ if(some condition) {
+ Map labels = new HashMap<>(8);
+ labels.put("plugin", "http-redirect");
+ labels.put("component", "http");
+ AlarmSender.alarmHighEmergency("alarm-title", "alarm-content", labels);
+ AlarmSender.alarmMediumCritical("alarm-title", "alarm-content", labels);
+ AlarmSender.alarmLowWarning("alarm-title", "alarm-content", labels);
+ AlarmSender.alarm((byte) 0, "alarm-title", "alarm-content");
+ }
+
+ HttpHeaders headers = exchange.getRequest().getHeaders();
+ MediaType contentType = headers.getContentType();
+ return match(contentType).apply(exchange, chain, paramMappingRuleHandle);
+ }
+}
+```
+
+## Dispatch Alarm Notice
+
+* In the previous step, we send custom alarm message in plugin.
+* Now we configure how these messages are sent to whom(tom,lili...) by which type(email,DingDing...)
+* Config this in ShenYu Admin Dashboard.
+
+![alarm-config](/img/shenyu/alert/alarm-config.png)
+
+Have fun!
+
+## Attention
+
+1. If you use the email notice, you should config your email send server in ShenYu Admin `application.yml`
+
+```yaml
+spring:
+ mail:
+ # Attention: this is mail server address.
+ host: smtp.qq.com
+ username: shenyu@apache.com
+ # Attention: this is not email account password, this requires an email authorization code
+ password: your-password
+ port: 465
+ default-encoding: UTF-8
+ properties:
+ mail:
+ smtp:
+ socketFactoryClass: javax.net.ssl.SSLSocketFactory
+ ssl:
+ enable: true
+```
diff --git a/versioned_docs/version-2.6.1/developer/shenyu-optimize.md b/versioned_docs/version-2.6.1/developer/shenyu-optimize.md
new file mode 100644
index 00000000000..0c35a713ef6
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/shenyu-optimize.md
@@ -0,0 +1,44 @@
+---
+title: ShenYu Optimize
+keywords: ["Optimize"]
+description: performance optimization for Apache ShenYu
+---
+
+## Description
+
+* This doc shows how to do performance optimization for Apache ShenYu.
+
+## Time Consumption
+
+* Apache ShenYu is JVM driven and processing time for a single request is nearly between `1-3` ms.
+
+## Netty Optimization
+
+* `spring-webflux` is one of dependencies of ShenYu, and it uses Netty in lower layer.
+* The demo down below demonstrates tuning ShenYu by customizing params in Netty.
+
+```java
+@Bean
+ public NettyReactiveWebServerFactory nettyReactiveWebServerFactory() {
+ NettyReactiveWebServerFactory webServerFactory = new NettyReactiveWebServerFactory();
+ webServerFactory.addServerCustomizers(new EventLoopNettyCustomizer());
+ return webServerFactory;
+ }
+
+private static class EventLoopNettyCustomizer implements NettyServerCustomizer {
+
+ @Override
+ public HttpServer apply(final HttpServer httpServer) {
+ return httpServer
+ .tcpConfiguration(tcpServer -> tcpServer
+ .runOn(LoopResources.create("shenyu-netty", 1, DEFAULT_IO_WORKER_COUNT, true), false)
+ .selectorOption(ChannelOption.SO_REUSEADDR, true)
+ .selectorOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)
+ .option(ChannelOption.TCP_NODELAY, true)
+ .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT));
+ }
+}
+```
+
+* The `shenyu-bootstrap` module offers this class, you may modify it when benchmarking your app if necessary.
+* You can get references of business thread model from [thread model](./thread-model)
diff --git a/versioned_docs/version-2.6.1/developer/spi/_category_.json b/versioned_docs/version-2.6.1/developer/spi/_category_.json
new file mode 100644
index 00000000000..149cee92bf3
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "SPI",
+ "position": 1
+}
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-load-balance.md b/versioned_docs/version-2.6.1/developer/spi/custom-load-balance.md
new file mode 100644
index 00000000000..f4ea3ecb2b8
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-load-balance.md
@@ -0,0 +1,65 @@
+---
+title: Custom Load Balancer
+keywords: ["LoadBalance"]
+description: Custom Load Balance
+---
+
+* This paper describes how to customize the extension of `org.apache.shenyu.loadbalancer.spi.LoadBalancer`.
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-base
+ ${project.version}
+
+
+```
+
+* Create a new class `CustomLoadBalancer`, extends `org.apache.shenyu.loadbalancer.spi.AbstractLoadBalancer`.
+
+```java
+public class CustomLoadBalancer extends AbstractLoadBalancer {
+
+ @Override
+ public Upstream doSelect(final List upstreamList, final String ip) {
+ // custom load balancer
+ }
+}
+```
+
+* In the project's META-INF/services directory, create key-value as following in `org.apache.shenyu.loadbalancer.spi.LoadBalancer` file.
+
+```shell title="script"
+${spi name}=${custom class path}
+```
+
+`${spi name}` represents the name of `spi` and `${custom class path}` represents the fully qualified name of the class. Such as:
+
+```shell title="script"
+custom=xxx.xxx.xxx.CustomLoadBalancer
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
+
+* In the `Apache ShenYu` gateway management system --> BasicConfig --> Dictionary, find the dictionary code as `LOAD_BALANCE`, add a new piece of data, pay attention to the dictionary name: `${spi name}`.
+
+
+
+> DictionaryType: `loadBalance`;
+>
+> DictionaryCode: `LOAD_BALANCE`;
+>
+> DictionaryName: `${spi name}`, input your custom spi name;
+>
+> DictionaryValue: When used, the value of the drop-down box, do not repeat with the existing;
+>
+> DictionaryDescribe: desc your custom match strategy;
+>
+> Sort: to sort;
+
+* When adding selectors or rules, you can use custom MatchType:
+
+
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-match-mode.md b/versioned_docs/version-2.6.1/developer/spi/custom-match-mode.md
new file mode 100644
index 00000000000..3539e3e54ff
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-match-mode.md
@@ -0,0 +1,72 @@
+---
+title: Custom Match Mode
+keywords: ["MatchStrategy"]
+description: custom match mode
+---
+
+
+* This paper describes how to customize the extension of `org.apache.shenyu.plugin.base.condition.strategy.MatchStrategy`.
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-base
+ ${project.version}
+
+
+```
+
+* Create a new class `CustomMatchStrategy`, extends `org.apache.shenyu.plugin.base.condition.strategy.AbstractMatchStrategy`, implements `org.apache.shenyu.plugin.base.condition.strategy.MatchStrategy`, add annotation `org.apache.shenyu.spi.Join`.
+
+```java
+/**
+ * This is custom match strategy.
+ */
+@Join
+public class CustomMatchStrategy extends AbstractMatchStrategy implements MatchStrategy {
+
+ @Override
+ public Boolean match(final List conditionDataList, final ServerWebExchange exchange) {
+ // custom match strategy
+ }
+}
+```
+
+* In the project's META-INF/services directory, create `org.apache.shenyu.plugin.base.condition.strategy.MatchStrategy` file.
+
+```shell title="script"
+${spi name} = ${custom class path}
+```
+
+`${spi name}` represents the name of `spi` and `${custom class path}` represents the fully qualified name of the class. Such as:
+
+```shell title="script"
+custom = xxx.xxx.xxx.CustomMatchStrategy
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
+
+* In the `Apache ShenYu` gateway management system --> BasicConfig --> Dictionary, find the dictionary code as `MATCH_MODE`, add a new piece of data, pay attention to the dictionary name: `${spi name}`.
+
+
+
+> DictionaryType: `matchMode`;
+>
+> DictionaryCode: `MATCH_MODE`;
+>
+> DictionaryName: `${spi name}`, input your custom spi name;
+>
+> DictionaryValue: When used, the value of the drop-down box, do not repeat with the existing;
+>
+> DictionaryDescribe: desc your custom match strategy;
+>
+> Sort: to sort;
+>
+> Status: open or close.
+
+* When adding selectors or rules, you can use custom MatchType:
+
+
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-metrics-monitor.md b/versioned_docs/version-2.6.1/developer/spi/custom-metrics-monitor.md
new file mode 100644
index 00000000000..c8bf88e78c4
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-metrics-monitor.md
@@ -0,0 +1,63 @@
+---
+title: Custom Metrics Monitor
+keywords: ["MetricsMonitor"]
+description: custom Metrics Monitor
+---
+
+
+## Explanation
+
+* Before custom development, please customize and build the gateway environment first, please refer to: [custom deployment](../deployment-custom)
+
+* This article describes how to customize the extension of `org.apache.shenyu.plugin.metrics.spi.MetricsService`.
+
+## Extension
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-base
+ ${project.version}
+
+
+```
+
+* Create a new class `${you class}`,implements `org.apache.shenyu.plugin.metrics.spi.MetricsService`
+
+```
+public class ${you class} implements MetricsService {
+
+ /**
+ * Start metrics tracker.
+ *
+ * @param metricsConfig metrics config
+ * @param metricsRegister the metrics register
+ */
+ public void start(MetricsConfig metricsConfig, MetricsRegister metricsRegister){
+ //your code
+ }
+
+ /**
+ * Stop metrics tracker.
+ */
+ public void stop() {
+ //your code
+ }
+}
+```
+
+* In the project `resources` directory,Create a new `META-INF/shenyu` directory, and the new file name is : `org.apache.shenyu.plugin.metrics.spi.MetricsService`.
+add `${you spi name}` = `${you class path}`:
+
+```
+${you spi name} = ${you class path}
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
+
+* In the `Admin` service ---> BasicConfig ---> Plugin , Find the `Monitor` plugin, edit config, pay attention to the `metricsName` name: `${you spi name}`.
+
+
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-mock-generator.md b/versioned_docs/version-2.6.1/developer/spi/custom-mock-generator.md
new file mode 100644
index 00000000000..618fb42b5ea
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-mock-generator.md
@@ -0,0 +1,77 @@
+---
+title: Custom Mock Data Generator
+keywords: ["Mock"]
+description: custom mock data generator
+---
+## Explanation
+
+1. This article describes how to make custom extensions to `org.apache.shenyu.plugin.mock.generator.Generator`.
+2. The mock data generation expression needs to satisfy the format of `${name|param1|param2|...}`
+
+## Extension
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-mock
+ ${project.version}
+
+
+```
+
+* Create a new class `CustomerGenerator`,implements `org.apache.shenyu.plugin.mock.generator.Generator`。
+
+```java
+@Join
+public class CustomGenerator implements Generator {
+ @Override
+ public String getName() {
+ // The name of the generator, i.e. the content before the first | of the expression
+ }
+
+ @Override
+ public String generate() {
+ // Implement the logic of data generation
+ }
+
+ @Override
+ public int getParamSize() {
+ // The number of required parameters of the expression
+ }
+
+ @Override
+ public void initParam(List params, String rule) {
+ // params is the contents except the name after the expression is split according to |
+ // rule is the content of the original expression , if there is a custom parameter processing logic, you can use this parameter
+ }
+
+ @Override
+ public boolean match(String rule) {
+ // Check if the current expression is valid
+ }
+
+ @Override
+ public String[] getPrefixAndSuffix() {
+ // Return the prefix and suffix added after the generated content, please return a string array with two elements
+ // 0th element is the prefix, 1st element is the suffix
+ }
+}
+```
+
+* In the project `resources` directory,Create a new `META-INF/shenyu` directory, and the new file name is : `org.apache.shenyu.plugin.mock.generator.Generator`.
+ add `${you spi name}` = `${you class path}`:
+
+```shell title="script"
+${spi name}=${custom class path}
+```
+
+`${spi name}` represents the name of `spi`, `${spi name }` needs to be consistent with the definition of the getName() method in the Generator implementation class, `${custom class path}` represents the fully qualified name of the class. for example:
+
+```shell title="script"
+custom=xxx.xxx.xxx.CustomGenerator
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-parameter-data.md b/versioned_docs/version-2.6.1/developer/spi/custom-parameter-data.md
new file mode 100644
index 00000000000..bff80ece761
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-parameter-data.md
@@ -0,0 +1,71 @@
+---
+title: Custom Parameter Data
+keywords: ["ParameterData"]
+description: Custom Parameter Data
+---
+
+This paper describes how to customize the extension of `org.apache.shenyu.plugin.base.condition.data.ParameterData`.
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-base
+ ${project.version}
+
+
+```
+
+* Create a new class `CustomParameterData`, implements `org.apache.shenyu.plugin.base.condition.data.ParameterData`, add annotation `org.apache.shenyu.spi.Join`.
+
+```java
+/**
+ * This is custom parameter data.
+ */
+@Join
+public class CustomParameterData implements ParameterData {
+
+ @Override
+ public String builder(final String paramName, final ServerWebExchange exchange) {
+ // custom parameter data
+ }
+}
+```
+
+* In the project's META-INF/services directory, create `org.apache.shenyu.plugin.base.condition.data.ParameterData` file, add key-value as following:
+
+```shell title="script"
+${spi name} = ${custom class path}
+```
+
+`${spi name}` represents the name of `spi` and `${custom class path}` represents the fully qualified name of the class. Such as:
+
+```shell title="script"
+custom=xxx.xxx.xxx.CustomParameterData
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
+
+* In the `Apache ShenYu` gateway management system --> BasicConfig --> Dictionary, find the dictionary code as `PARAM_TYPE`, add a new piece of data, pay attention to the dictionary name: `${spi name}`.
+
+
+
+> DictionaryType: `paramType`;
+>
+> DictionaryCode: `PARAM_TYPE`;
+>
+> DictionaryName: `${spi name}`, input your custom spi name;
+>
+> DictionaryValue: When used, the value of the drop-down box, do not repeat with the existing;
+>
+> DictionaryDescribe: desc your custom match strategy;
+>
+> Sort: to sort;
+>
+> Status: open or close.
+
+* When adding selectors or rules, you can use custom parameter data:
+
+
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-predicate-judge.md b/versioned_docs/version-2.6.1/developer/spi/custom-predicate-judge.md
new file mode 100644
index 00000000000..6b1640d5b89
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-predicate-judge.md
@@ -0,0 +1,121 @@
+---
+title: Custom Predicate Judge
+keywords: ["PredicateJudge"]
+description: Custom Predicate Judge
+---
+
+## Introduction
+
+* This paper describes how to customize the extension of `org.apache.shenyu.plugin.base.condition.judge.PredicateJudge`.
+* The conditional predicate is the bridge between data and rules in the selector and serves to filter out requests that match the conditions.
+* There are already seven conditional predicates including match, =, regex, contains, TimeBefore, TimeAfter, exclude.
+* Please refer to [judge](https://github.com/apache/shenyu/tree/master/shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/condition/judge) module, add your own conditional predicates, or submit `pr` to the official website if you have a good common plugin.
+
+## Extension
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-base
+ ${project.version}
+
+
+```
+
+* Create a new class `CustomPredicateJudge`, implements `org.apache.shenyu.plugin.base.condition.judge.PredicateJudge`, add annotation `org.apache.shenyu.spi.Join`.
+
+```java
+/**
+ * custom predicate judge.
+ */
+@Join
+public class CustomPredicateJudge implements PredicateJudge {
+
+ @Override
+ public Boolean judge(final ConditionData conditionData, final String realData) {
+ // Custom Predicate Judge
+ }
+}
+
+```
+
+* In the project's META-INF/services directory, create `org.apache.shenyu.plugin.base.condition.judge.PredicateJudge` file, add key-value as following:
+
+```shell title="script"
+${spi name} = ${custom class path}
+```
+
+`${spi name}` represents the name of `spi` and `${custom class path}` represents the fully qualified name of the class. Such as:
+
+```shell title="script"
+custom=xxx.xxx.xxx.CustomPredicateJudge
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
+
+* In the `Apache ShenYu` gateway management system --> BasicConfig --> Dictionary, find the dictionary code as `OPERATOR`, add a new piece of data, pay attention to the dictionary name: `${spi name}`.
+
+
+
+> DictionaryType: `operator`;
+>
+> DictionaryCode: `OPERATOR`;
+>
+> DictionaryName: `${spi name}`, input your custom spi name;
+>
+> DictionaryValue: When used, the value of the drop-down box, do not repeat with the existing;
+>
+> DictionaryDescribe: desc your custom match strategy;
+>
+> Sort: to sort;
+>
+> Status: open or close.
+
+* When adding selectors or rules, you can use custom predicate judge:
+
+
+
+## Example
+
+* Add `GroovyPredicateJudge` and `SpELPredicateJudge` extension.
+
+```java
+/**
+ * Groovy predicate judge.
+ */
+@Join
+public class GroovyPredicateJudge implements PredicateJudge {
+
+ @Override
+ public Boolean judge(final ConditionData conditionData, final String realData) {
+ return (Boolean) Eval.me(conditionData.getParamName(), realData, conditionData.getParamValue());
+ }
+}
+```
+
+```java
+/**
+ * SpEL predicate judge.
+ */
+@Join
+public class SpELPredicateJudge implements PredicateJudge {
+
+ private static final ExpressionParser EXPRESSION_PARSER = new SpelExpressionParser();
+
+ @Override
+ public Boolean judge(final ConditionData conditionData, final String realData) {
+ Expression expression = EXPRESSION_PARSER.parseExpression(conditionData.getParamValue().replace('#' + conditionData.getParamName(), realData));
+ return expression.getValue(Boolean.class);
+ }
+}
+```
+
+* Update `org.apache.shenyu.plugin.base.condition.judge.PredicateJudge`:
+
+```shell title="script"
+Groovy=xxx.xxx.xxx.GroovyPredicateJudge
+SpEL=xxx.xxx.xxx.SpELPredicateJudge
+```
diff --git a/versioned_docs/version-2.6.1/developer/spi/custom-rate-limiter.md b/versioned_docs/version-2.6.1/developer/spi/custom-rate-limiter.md
new file mode 100644
index 00000000000..4d2bebdbc65
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/spi/custom-rate-limiter.md
@@ -0,0 +1,104 @@
+---
+title: Custom Rate Limiter
+keywords: ["RateLimiter"]
+description: Custom Rate Limiter
+---
+
+## Explanation
+
+* Before custom development, please customize and build the gateway environment first, please refer to: [custom deployment](../deployment-custom).
+
+* This article describes how to customize the extension of `org.apache.shenyu.plugin.ratelimiter.algorithm.RateLimiterAlgorithm` .
+
+## Extension
+
+* Create a new project and introduce the following dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-plugin-base
+ ${project.version}
+
+
+```
+
+* Create a new class `${you class}`, implements `org.apache.shenyu.plugin.ratelimiter.algorithm.RateLimiterAlgorithm`
+
+```java
+public class ${you class} implements RateLimiterAlgorithm {
+
+ /**
+ * Gets script.
+ *
+ * @return the script
+ */
+ public RedisScript getScript() {
+ //coding and return
+ }
+
+ /**
+ * Gets keys.
+ *
+ * @param id the id
+ * @return the keys
+ */
+ public List getKeys(String id) {
+ //coding and return
+ }
+
+ /**
+ * Callback string.
+ *
+ * @param script the script
+ * @param keys the keys
+ * @param scriptArgs the script args
+ */
+ public void callback(final RedisScript> script, final List keys, final List scriptArgs) {
+ //coding and return
+ }
+}
+```
+
+* In the project `resources` directory,Create a new `META-INF/shenyu` directory, and the new file name is : `org.apache.shenyu.plugin.ratelimiter.algorithm.RateLimiterAlgorithm`.
+add `${you spi name}` = `${you class path}`:
+
+```
+${you spi name} = ${you class path}
+```
+
+* Package the project and copy it to the `lib` or `ext-lib` directory of the gateway (bootstrap-bin).
+
+* In the `Admin` service ---> BasicConfig ---> Dictionary , Find the dictionary code as `ALGORITHM_*`, add a new piece of data, pay attention to the dictionary name: `${you spi name}`.
+
+
+
+* Or execute the following custom `SQL` statement:
+
+```sql
+INSERT IGNORE INTO `shenyu_dict` (
+ `id`,
+ `type`,
+ `dict_code`,
+ `dict_name`,
+ `dict_value`,
+ `desc`,
+ `sort`,
+ `enabled`,
+ `date_created`,
+ `date_updated`
+ )
+VALUES (
+ 'you id',
+ 'matchMode',
+ 'MATCH_MODE',
+ 'you spi name',
+ 'you value',
+ 'you spi name',
+ 0,
+ 1,
+ '2021-08-30 19:29:10',
+ '2021-08-30 20:15:23'
+ );
+```
diff --git a/versioned_docs/version-2.6.1/developer/thread-model.md b/versioned_docs/version-2.6.1/developer/thread-model.md
new file mode 100644
index 00000000000..cee61af2ec3
--- /dev/null
+++ b/versioned_docs/version-2.6.1/developer/thread-model.md
@@ -0,0 +1,30 @@
+---
+title: Thread Model
+keywords: ["Thread"]
+description: thread model
+---
+
+## Description
+
+* This article gives an introduction to thread models in ShenYu and usage in various scenarios.
+
+## IO And Work Thread
+
+* `spring-webflux` is one of dependencies of ShenYu, and it uses Netty thread model in lower layer.
+
+## Business Thread
+
+* Use scheduling thread to execute by default.
+* A fixed thread pool manages business threads, the number of threads is count in this formula: cpu * 2 + 1.
+
+
+## Type Switching
+
+* `reactor.core.scheduler.Schedulers`.
+* `-Dshenyu.scheduler.type=fixed` is a default config. If set to other value, a flexible thread pool will take place it.`Schedulers.elastic()`.
+* `-Dshenyu.work.threads = xx` is for configuring number of threads, the default value calculates in following formula `cpu * 2 + 1` with a minimum of 16 threads.
+
+
+
+
+
diff --git a/versioned_docs/version-2.6.1/index.md b/versioned_docs/version-2.6.1/index.md
new file mode 100644
index 00000000000..6ed8b63106b
--- /dev/null
+++ b/versioned_docs/version-2.6.1/index.md
@@ -0,0 +1,179 @@
+---
+sidebar_position: 1
+title: Overview
+keywords: ["Apache shenyu"]
+description: This is an asynchronous, high-performance, cross-language, responsive API gateway.
+aliases: "/shenyu/docs/Home"
+---
+
+# Architecture
+
+ ![](/img/architecture/shenyu-architecture-3d.png)
+
+# What is the Apache ShenYu?
+
+This is an asynchronous, high-performance, cross-language, responsive API gateway.
+
+# Why named Apache ShenYu
+
+ShenYu (神禹) is the honorific name of Chinese ancient monarch Xia Yu (also known in later times as Da Yu), who left behind the touching story of the three times he crossed the Yellow River for the benefit of the people and successfully managed the flooding of the river. He is known as one of the three greatest kings of ancient China, along with Yao and Shun.
+
+* Firstly, the name ShenYu is to promote the traditional virtues of our Chinese civilisation.
+* Secondly, the most important thing about the gateway is the governance of the traffic.
+* Finally, the community will do things in a fair, just, open and meritocratic way, paying tribute to ShenYu while also conforming to the Apache Way.
+
+---
+
+# Features
+
+* Proxy: Support for Apache® Dubbo™, Spring Cloud, gRPC, Motan, SOFA, TARS, WebSocket, MQTT
+* Security: Sign, OAuth 2.0, JSON Web Tokens, WAF plugin
+* API governance: Request, response, parameter mapping, Hystrix, RateLimiter plugin
+* Observability: Tracing, metrics, logging plugin
+* Dashboard: Dynamic traffic control, visual backend for user menu permissions
+* Extensions: Plugin hot-swapping, dynamic loading
+* Cluster: NGINX, Docker, Kubernetes
+* Language: provides .NET, Python, Go, Java client for API register
+
+---
+
+# Mind map
+
+ ![](/img/shenyu/activite/shenyu-xmind.png)
+
+ ---
+
+# Quick Start (docker)
+
+### Run Apache ShenYu Admin
+
+```
+docker pull apache/shenyu-admin
+docker network create shenyu
+docker run -d -p 9095:9095 --net shenyu apache/shenyu-admin
+```
+
+Default account: **admin**
+
+Default password: **123456**
+
+### Run Apache ShenYu Bootstrap
+
+```
+docker pull apache/shenyu-bootstrap
+docker run -d -p 9195:9195 -e "shenyu.local.enabled=true" --net shenyu apache/shenyu-bootstrap
+```
+
+### Set router
+
+* Real requests :,
+
+```json
+{
+ "name" : "Shenyu",
+ "data" : "hello world"
+}
+```
+
+* Set routing rules (Standalone)
+
+Add `localKey: 123456` to Headers. If you need to customize the localKey, you can use the sha512 tool to generate the key based on plaintext and update the `shenyu.local.sha512Key` property.
+
+```
+curl --location --request POST 'http://localhost:9195/shenyu/plugin/selectorAndRules' \
+--header 'Content-Type: application/json' \
+--header 'localKey: 123456' \
+--data-raw '{
+ "pluginName": "divide",
+ "selectorHandler": "[{\"upstreamUrl\":\"127.0.0.1:8080\"}]",
+ "conditionDataList": [{
+ "paramType": "uri",
+ "operator": "match",
+ "paramValue": "/**"
+ }],
+ "ruleDataList": [{
+ "ruleHandler": "{\"loadBalance\":\"random\"}",
+ "conditionDataList": [{
+ "paramType": "uri",
+ "operator": "match",
+ "paramValue": "/**"
+ }]
+ }]
+}'
+```
+
+* Proxy request :
+
+```json
+{
+ "name" : "Shenyu",
+ "data" : "hello world"
+}
+```
+
+---
+
+# Plugin
+
+ Whenever a request comes in, Apache ShenYu will execute it by all enabled plugins through the chain of responsibility.
+
+ As the heart of Apache ShenYu, plugins are extensible and hot-pluggable.
+
+ Different plugins do different things.
+
+ Of course, users can also customize plugins to meet their own needs.
+
+ If you want to customize, see [custom-plugin](https://shenyu.apache.org/docs/developer/custom-plugin/) .
+
+---
+
+# Selector & Rule
+
+ According to your HTTP request headers, selectors and rules are used to route your requests.
+
+ Selector is your first route, It is coarser grained, for example, at the module level.
+
+ Rule is your second route and what do you think your request should do. For example a method level in a module.
+
+ The selector and the rule match only once, and the match is returned. So the coarsest granularity should be sorted last.
+
+---
+
+# Data Caching & Data Sync
+
+ Since all data have been cached using ConcurrentHashMap in the JVM, it's very fast.
+
+ Apache ShenYu dynamically updates the cache by listening to the ZooKeeper node (or WebSocket push, HTTP long polling) when the user changes configuration information in the background management.
+
+ ![](/img/shenyu/dataSync/shenyu-config-processor-en.png)
+
+ ![](/img/shenyu/dataSync/config-strategy-processor-en.png)
+
+---
+
+# Prerequisite
+
+* JDK 1.8+
+
+---
+
+# Stargazers over time
+
+
+
+---
+
+# Contributor and Support
+
+* [How to Contribute](https://shenyu.apache.org/community/contributor-guide)
+* [Mailing Lists](mailto:dev@shenyu.apache.org)
+
+---
+
+# Known Users
+
+In order of registration, More access companies are welcome to register at [https://github.com/apache/shenyu/issues/68](https://github.com/apache/shenyu/issues/68) (For open source users only) .
+
+All Users : [Known Users](https://shenyu.apache.org/community/user-registration)
+
+---
diff --git a/versioned_docs/version-2.6.1/plugin-center/_category_.json b/versioned_docs/version-2.6.1/plugin-center/_category_.json
new file mode 100644
index 00000000000..5831affdd38
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Plugin Center",
+ "position": 6
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/cache/_category_.json b/versioned_docs/version-2.6.1/plugin-center/cache/_category_.json
new file mode 100644
index 00000000000..8768a0fab5a
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/cache/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Cache",
+ "position": 7
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/cache/cache-plugin.md b/versioned_docs/version-2.6.1/plugin-center/cache/cache-plugin.md
new file mode 100644
index 00000000000..10675c44589
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/cache/cache-plugin.md
@@ -0,0 +1,152 @@
+---
+title: Cache Plugin
+keywords: ["Cache"]
+description: Cache Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Cache Plugin
+
+## 1.2 Appropriate Scenario
+
+* Situation where data is not updated frequently and a large number of calls are required.
+
+* For Situation where data consistency is not required.
+
+## 1.3 Plugin functionality
+
+* The `Cache` plugin is able to cache the results of the target service, allowing the user to configure the expiration
+ time of the cached results.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-cache-handler`.
+* Core Module `shenyu-plugin-cache-redis`.
+* Core Module `shenyu-plugin-cache-memory`.
+
+* Core Class `org.apache.shenyu.plugin.cache.CachePlugin`
+* Core Class `org.apache.shenyu.plugin.cache.redis.RedisCache`
+* Core Class `org.apache.shenyu.plugin.cache.memory.MemoryCache`
+
+## 1.5 Added Since Which shenyu version
+
+* Since 2.4.3
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Import cache plugin dependency in `ShenYu Bootstrap`.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-cache
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `cache` set Status enabled.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin Config
+
+![](/img/shenyu/plugin/cache/cache-plugin-config-en.png)
+
+* `cacheType`: Cache currently supports two modes of caching data.
+
+* memory:local memory mode
+
+* redis:redis mode
+
+The current default is `local memory mode`, the results of the target service are stored in the local memory, if the
+gateway is deployed by way of cluster, it is not recommended to use `local memory mode`, it is recommended to
+use `redis mode`, the data of the target service are cached in redis.
+
+If you are using `local memory mode`, you only need to select memory in cacheType, no other configuration is needed.
+
+If you are using `redis mode`, select redis in cacheType, and the parameters are as follows
+
+* `database`: which database the cache results are stored in, the default is index database 0.
+
+* `master`: default is master.
+
+* `mode`: the working mode of redis, the default is single-point mode: `standalone`, in addition to cluster
+ mode: `cluster`, sentinel mode: `sentinel`.
+
+* `url`: configure the IP and port of the redis database, configured by colon connection, example: `192.168.1.1:6379`.
+
+* `password`: the password of the redis database, if not, you can not configure.
+
+* `maxldle`: the maximum free connections in the connection pool
+
+* `minldle`: minimum idle connections in the connection pool
+
+* `maxActive`: the maximum number of connections in the connection pool
+
+* `maxWait`: the maximum blocking wait time for the connection pool (use negative values to indicate no limit) default -1
+
+### 2.4.2 Selector Config
+
+* Selectors and rules, please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) .
+
+### 2.4.3 Rule Config
+
+![](/img/shenyu/plugin/cache/cache-plugin-rule-en.png)
+
+* Only matching requests will be cached by the Cache plugin for the results of the target service.
+
+`timeoutSecods`: the value is the target service result data cache time, the default is 60, in `seconds`.
+
+Notice: The current version of the Cache plugin uses the url as a unique key to identify the same request.
+
+## 2.5 Examples
+
+### 2.5.1 Use redis cache request result
+
+#### 2.5.1.1 Plugin Config
+
+![](/img/shenyu/plugin/cache/cache-plugin-config-example-en.png)
+
+select redis cache type, config redis database, url, mode, password
+
+#### 2.5.1.2 Selector Config
+
+![](/img/shenyu/plugin/cache/cache-plugin-selector-en.png)
+
+#### 2.5.1.3 Rule Config
+
+![](/img/shenyu/plugin/cache/cache-plugin-rule-en.png)
+
+#### 2.5.1.4 Send Request
+
+* send http request to cache result.
+
+```http title="request"
+### shengyu getway proxy orderSave
+GET http://localhost:9195/http/order/findById?id=123
+Accept: application/json
+Content-Type: application/json
+```
+
+#### 2.5.1.5 Check Result
+
+![](/img/shenyu/plugin/cache/cache-result.jpg)
+
+![](/img/shenyu/plugin/cache/cache-result-check.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `cache` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/common/_category_.json b/versioned_docs/version-2.6.1/plugin-center/common/_category_.json
new file mode 100644
index 00000000000..88b377b2c49
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/common/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Common",
+ "position": 6
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/common/general-context-plugin.md b/versioned_docs/version-2.6.1/plugin-center/common/general-context-plugin.md
new file mode 100644
index 00000000000..b8d6453151a
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/common/general-context-plugin.md
@@ -0,0 +1,36 @@
+---
+title: GeneralContext Plugin
+keywords: ["generalContext"]
+description: generalContext plugin
+---
+
+## Description
+
+* When making invokes to the target service, Apache ShenYu gateway also allows users to use the `generalContext` plugin to pass the service context parameters by reading the header in this request.
+
+## Plugin Setting
+
+* In `shenyu-admin` --> BasicConfig --> Plugin --> `generalContext`, set to enable.
+* If the user don't use, please disable the plugin in the background.
+
+
+
+* Introduce `generalContext` support in the pox.xml file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-general-context
+ ${project.version}
+
+
+```
+
+* Selectors and rules, please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule).
+* Only those matched requests can print the information about this request.
+
+## Situation
+
+* The parameters in the request header need to be passed to the proxy server.
+* Need to replace a key in the request header and pass it to the proxy server.
diff --git a/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/_category_.json b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/_category_.json
new file mode 100644
index 00000000000..b02214033d8
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Fault Tolerance",
+ "position": 3
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/hystrix-plugin.md b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/hystrix-plugin.md
new file mode 100644
index 00000000000..7e740e802c8
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/hystrix-plugin.md
@@ -0,0 +1,144 @@
+---
+title: Hystrix Plugin
+keywords: ["Hystrix"]
+description: hystrix plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Hystrix Plugin
+
+## 1.2 Appropriate Scenario
+
+* The backend service is unstable, use hystrix for protection
+
+## 1.3 Plugin functionality
+
+* Fusing the flow
+* Protect the application behind ShenYu Gateway
+* Isolation mode supports `thread` and `semaphore`.
+
+## 1.4 Plugin code
+
+* Core Module: `shenyu-plugin-hystrix`
+
+* Core Class: `org.apache.shenyu.plugin.hystrix.HystrixPlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Add `hystrix` dependency in the `pom.xml` file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-hystrix
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `hystrix` set to enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin Config
+
+* No Config, but you should open hystrix plugin.
+
+### 2.4.2 Selector Config
+
+It is used to filter traffic for the first time and does not require handle fields.
+
+For more information on selectors and rules configuration, see [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) , only some of the fields are covered here.
+
+![](/img/shenyu/plugin/hystrix/selector_en.png)
+
+### 2.4.3 Rule Config
+
+* For the final filtering of traffic, there is a rule handler logic, isolation mode supports `thread` and `semaphore`.
+
+![](/img/shenyu/plugin/hystrix/rule_en.png)
+
+* Hystrix handler details:
+
+ * `MinimumRequests`: the minimum number of requests required to trigger a circuit breaker.
+
+ * `ErrorThresholdPercentage`: percentage of exception occurring during that time.
+
+ * `Timeout`(ms): execution timeout.
+
+ * `MaxConcurrentRequests`: max concurrent requests.
+
+ * `Sleep`(ms): The recovery time after the circuit breaker.
+
+ * `GroupKey`: It is generally set to: `contextPath`.
+
+ * `CallBackUrl`: default url `/fallback/hystrix`.
+
+ * `CommandKey`: generally, it is set to a specific path interface.
+
+## 2.5 Examples
+
+### 2.5.1 use hystrix protect application
+
+#### 2.5.1.1 Preparation
+
+- Start ShenYu Admin
+- Start ShenYu Bootstrap
+- Start a backend service
+
+#### 2.5.1.2 Selector Config
+
+![](/img/shenyu/plugin/hystrix/selector_en.png)
+
+#### 2.5.1.3 Rule Config
+
+* The rules in the pictures below are test examples, actual environment depends on the specific situation.
+
+![](/img/shenyu/plugin/hystrix/hystrix-example-rule-en.png)
+
+* test example
+
+```java
+@RestController
+@RequestMapping("/test")
+@ShenyuSpringMvcClient("/test/**")
+public class HttpTestController {
+ @PostMapping("/testHystrix")
+ public ResultBean ok() {
+ Random random = new Random();
+ int num = random.nextInt(100);
+ if (num > 20) {
+ throw new RuntimeException();
+ }
+ return new ResultBean(200, "ok", null);
+ }
+}
+```
+
+#### 2.5.1.4 Send Request With `Apache Jmeter`
+
+![](/img/shenyu/plugin/hystrix/hystrix-send-request.png)
+
+#### 2.5.1.5 Check Result
+
+![](/img/shenyu/plugin/hystrix/hystrix-result.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `hystrix` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/rate-limiter-plugin.md b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/rate-limiter-plugin.md
new file mode 100644
index 00000000000..0f1c2a7794b
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/rate-limiter-plugin.md
@@ -0,0 +1,193 @@
+---
+title: RateLimiter Plugin
+keywords: ["rateLimiter"]
+description: rateLimiter plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* RateLimiter Plugin
+
+## 1.2 Appropriate Scenario
+
+* traffic control in gateway cluster environment
+* rate limiting according to specific rules
+* You can set to the interface level, or the parameter level. How to use it depends on your traffic configuration.
+
+## 1.3 Plugin functionality
+
+* use redis to control gateway traffic
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-ratelimiter`.
+
+* Core Class `org.apache.shenyu.plugin.ratelimiter.RateLimiterPlugin`
+* Core Class `org.apache.shenyu.plugin.ratelimiter.executor.RedisRateLimiter`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+## 1.6 Technical Solution
+
+### 1.6.1 Using redis token bucket algorithm to limit traffic.
+
+- The system generates the token at a constant rate, and then puts the token into the token bucket.
+- The token bucket's capacity. When the bucket is full, the token put into it will be discarded.
+- Each time requests come, you need to obtain a token from the token bucket. If there are tokens, the service will be provided; if there are no tokens, the service will be rejected.
+
+* Flow Diagram:
+ ![](/img/shenyu/plugin/ratelimiter/tokenbucket.png)
+
+
+### 1.6.2 Using redis leaky bucket algorithm to limit traffic.
+
+- water (request) go to the leaky bucket first. The leaky bucket goes out at a fixed speed. When the flow speed is too fast, it will overflow directly (reject service)
+
+* Flow Diagram:
+ ![](/img/shenyu/plugin/ratelimiter/leakybucket.png)
+
+
+### 1.6.3 Using redis sliding time window algorithm to limit traffic.
+
+- The sliding time window maintains the count value of unit time. Whenever a requests pass, the count value will be increased by 1. When the count value exceeds the preset threshold, other requests in unit time will be rejected. If the unit time has ended, clear the counter to zero and start the next round counting.
+
+* Flow Diagram:
+ ![](/img/shenyu/plugin/ratelimiter/sldingwindow.png)
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Add `rateLimiter` dependency in `pom.xml` file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-ratelimiter
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `rateLimiter` set to enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin Config
+
+![](/img/shenyu/plugin/ratelimiter/ratelimiter-plugin-en.png)
+
+* `mode`: the working mode of redis, the default is single-point mode: `standalone`, in addition to cluster
+ mode: `cluster`, sentinel mode: `sentinel`.
+
+* `master`: default is master.
+
+* `url`: configure the IP and port of the redis database, configured by colon connection, example: `192.168.1.1:6379`.
+
+* `password`: the password of the redis database, if not, you can not configure.
+
+### 2.4.2 Selector Config
+
+* Selectors and rules, please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule)
+
+### 2.4.3 Rule Config
+
+![](/img/shenyu/plugin/ratelimiter/ratelimiter-plugin-rule-en.png)
+
+* TokenBucket/Concurrent
+
+ * `algorithmName`: `tokenBucket`/`concurrent`.
+
+ * `replenishRate`: It is how many requests you allow users to execute per second, while not discarding any requests. This is the filling rate of token bucket.
+
+ * `burstCapacity`: it is the maximum number of requests that users are allowed to execute in one second. This is token bucket can save the number of token.
+
+ * `keyResolverName`: `whole` indicates that the traffic is limited by gateway per second, and `remoteAddress` indicates that the traffic is limited by IP per second.
+
+* LeakyBucket
+
+ * `algorithmName`: `leakyBucket`.
+
+ * `replenishRate`: The rate at which requests are executed per unit time, and the rate at which water droplets leak out of the leaky bucket.
+
+ * `burstCapacity`: The maximum number of requests that users are allowed to execute in one second. This is the amount of water in the bucket.
+
+ * `keyResolverName`: `whole` indicates that the traffic is limited by gateway per second, and `remoteAddress` indicates that the traffic is limited by IP per second.
+
+* SlidingWindow
+
+ * `algorithmName`: `slidingWindow`.
+
+ * `replenishRate`: The rate of requests per unit time, used to calculate the size of the time window.
+
+ * `burstCapacity`: The maximum number of requests in the time window (per unit time).
+
+ * `keyResolverName`: `whole` indicates that the traffic is limited by gateway per second, and `remoteAddress` indicates that the traffic is limited by IP per second.
+
+## 2.5 Examples
+
+### 2.5.1 Limit traffic with `RateLimiter` plugin in gateway cluster environment
+
+#### 2.5.1.1 Preparation
+
+- Start ShenYu Admin on `10.10.10.10:9095`
+- Start two ShenYu Bootstrap on `10.10.10.20:9195` and `10.10.10.30:9195`, and config data sync center on `10.10.10.10:9095`
+- config nginx, for example:
+
+```nginx
+upstream shenyu_gateway_cluster {
+ ip_hash;
+ server 10.1.1.1:9195 max_fails=3 fail_timeout=10s weight=50;
+ server 10.1.1.2:9195 max_fails=3 fail_timeout=10s weight=50;
+}
+
+server {
+ location / {
+ proxy_pass http://shenyu_gateway_cluster;
+ proxy_set_header HOST $host;
+ proxy_read_timeout 10s;
+ proxy_connect_timeout 10s;
+ }
+}
+```
+
+#### 2.5.1.2 Plugin/Selector/Rule Configuration
+
+- config redis configuration with ratelimiter plugin
+
+- config selector
+
+- config rule
+
+![](/img/shenyu/plugin/ratelimiter/rule-example-en.png)
+
+replenishRate is 3, burstCapacity is 10
+
+#### 2.5.1.3 Send Request to `Ngin`x by `Apache Jmeter`
+
+* jmeter thread group configuration
+
+![](/img/shenyu/plugin/ratelimiter/jmeter-thread-group.png)
+
+* jmeter http request configuration
+
+![](/img/shenyu/plugin/ratelimiter/jmeter-http-request.png)
+
+#### 2.5.1.4 Check Result
+
+![](/img/shenyu/plugin/ratelimiter/jmeter-result.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `rateLimiter` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/resilience4j-plugin.md b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/resilience4j-plugin.md
new file mode 100644
index 00000000000..f58c00b30c4
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/resilience4j-plugin.md
@@ -0,0 +1,81 @@
+---
+title: Resilience4j Plugin
+keywords: ["Resilience4j"]
+description: resilience4j plugin
+---
+
+## Description
+
+* `Resilience4j` is one of the options that supports flow control and circuit breaking.
+* `Resilience4j` supports flow control and circuit breaking functions for gateway.
+
+## Plugin Setting
+
+Select a mode to start shenyu-admin. For details, see deployment. For example, with [Local Deployment](../../deployment/deployment-local) starts the `Apache ShenYu` background management system.
+
+* In BasicConfig --> Plugin --> resilience4j, set to enable.
+* If the user don't use, please disable the plugin in the background.
+
+
+
+
+
+## Add resilience4j plugin dependency
+
+* Add `resilience4j` dependency in the `pom.xml` file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-resilience4j
+ ${project.version}
+
+
+```
+
+## Resilience4j Config
+
+For more information on selectors and rules configuration, see [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) , only some of the fields are covered here.
+
+#### Selector Config
+
+It is used to filter traffic for the first time and does not require handle fields.
+
+
+
+
+#### Rule Config
+
+For the final filtering of traffic, there is a rule handler logic.
+
+
+
+* Resilience4j Processing Details
+
+ * `limitForPeriod` :Configures the number of permissions available during one limit refresh period,default value:`50`.
+
+ * `limitRefreshPeriod` :Configures the period of a limit refresh. After each period the rate limiter sets its permissions count back to the limitForPeriod value,default value:`500`.
+
+ * `timeoutDurationRate` :Configures wait time(ms) a thread waits for a permission,default value:`5000`.
+
+ * `circuitEnable` :Configures circuitBreaker enable, `0`:OFF ,`1`:ON ,default value:`0`.
+
+ * `failureRateThreshold` :Configures the failure rate threshold in percentage,When the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls,default value:`50`.
+
+ * `fallbackUri` :Configures the fallback uri.
+
+ * `minimumNumberOfCalls` :Configures the minimum number of calls which are required (per sliding window period) before the CircuitBreaker can calculate the error rate or slow call rate,default value:`100`.
+
+ * `bufferSizeInHalfOpen`:Configures the number of permitted calls when the CircuitBreaker is half open,default value:`10`.
+
+ * `slidingWindowSize` :Configures the size of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed,default value:`100`.
+
+ * `slidingWindowType` :Configures the type of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed,
+ Sliding window can either be `0`:count-based or `1`:time-based.,default value:`0`.
+
+ * `timeoutDuration` :Configures request CircuitBreaker timeout(ms),default value:`30000`.
+
+ * `waitIntervalInOpen` :Configures the circuitBreaker time(ms) of duration,default value:`10`.
+
+ * `automaticTransitionFromOpenToHalfOpenEnabled` :Configures automatically transition from open state to half open state,`true`:ON, `false`:OFF, default value:`false`.
diff --git a/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/sentinel-plugin.md b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/sentinel-plugin.md
new file mode 100644
index 00000000000..9c7919098ba
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/fault-tolerance/sentinel-plugin.md
@@ -0,0 +1,215 @@
+---
+title: Sentinel Plugin
+keywords: ["Sentinel"]
+description: sentinel plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Sentinel Plugin
+
+## 1.2 Appropriate Scenario
+
+* `Sentinel` is one of the options that supports flow control and circuit breaking.
+* `Sentinel` supports flow control and circuit breaking functions for gateway.
+
+## 1.3 Plugin functionality
+
+* flow control
+* request circuit breaker and service degrade
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-sentinel`.
+
+* Core Class `org.apache.shenyu.plugin.sentinel.SentinelPlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Add `sentinel` dependency in the `pom.xml` file of the gateway(shenyu-bootstrap).
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-sentinel
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `sentinel` set to enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin configuration
+
+### 2.4.2 Selector configuration
+
+It is used to filter traffic for the first time and does not require `handle` fields.
+
+
+
+### 2.4.3 Rule configuration
+
+For the final filtering of traffic, there is a rule handler logic.
+
+
+
+| field | default value | field type | desc |
+|-----------------------------------------------------|--------------------|------------|----------------------------------------------------------------------------------------------------------------------------|
+| degradeRuleCount | | Doule | degrade threshold |
+| degradeRuleEnable | 1(enabled) | Integer | whether enable circuit breaking function of `sentinel` |
+| degradeRuleGrade | 0(slow call ratio) | Integer | circuit breaker strategy, support RT of seconds level/ Error Ratio of seconds level/ Error Count of minutes level strategy |
+| degradeRuleMinRequestAmount | 5 | Integer | circuit breaker min request amount |
+| degradeRuleSlowRatioThreshold | 1.0d | Double | slow ratio threshold of degrading |
+| degradeRuleStatIntervals | 1 | Integer | status intervals of degrade |
+| degradeRuleTimeWindow | | Integer | time of degrading(unit: second) |
+| flowRuleControlBehavior | 0(direact reject) | Integer | effect(reject directly/ queue/ slow start up), it do not support flow control by invocation relation. |
+ | flowRuleControlBehavior-direct rejection by default | | | |
+| flowRuleControlBehavior-warm up | | | |
+| flowRuleControlBehavior-constant speed queuing | | | |
+| flowRuleControlBehavior-preheating uniformly queued | | | |
+| flowRuleMaxQueueingTimeMs | 500ms | Integer | Maximum queuing time (valid in "preheating uniformly queued", "constant speed queuing" mode) |
+| flowRuleWarmUpPeriodSec | 10 | Integer | Cold start warm-up time (seconds) (valid in "preheating uniformly queued" "warm up" mode) |
+| flowRuleCount | | Integer | sentinel flow control count |
+| flowRuleEnable | 1(enabled) | Integer | whether enable sentinel flow control function. |
+| flowRuleGrade | 1(QPS) | Integer | type of current limit threshold(QPS or Thread Count)。 |
+| fallbackUri | | String | degraded uri after circuit breaking. |
+
+## 2.5 Examples
+
+### 2.5.1 Using sentinel for flow control
+
+#### 2.5.1.1 Plugin configuration
+
+For more information on selectors and rules configuration, see [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) , only some of the fields are covered here.
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `sentinel` set to enable.
+
+#### 2.5.1.2 Selector configuration
+
+![](/img/shenyu/plugin/sentinel/example-selector-en.png)
+
+#### 2.5.1.3 Rule configuration
+
+![](/img/shenyu/plugin/sentinel/example-rule-en.png)
+
+just use qps flow control strategy, and qps is 10, reject strategy is directly reject.
+
+the code is as follows:
+
+```java
+@RestController
+@RequestMapping("/order")
+@ShenyuSpringMvcClient("/order")
+public class OrderController {
+
+ /**
+ * Save order dto.
+ *
+ * @param orderDTO the order dto
+ * @return the order dto
+ */
+ @PostMapping("/save")
+ @ShenyuSpringMvcClient("/save")
+ public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
+ orderDTO.setName("hello world save order");
+ return orderDTO;
+ }
+}
+```
+
+#### 2.5.1.4 request by `Apache Jmeter`
+
+* Jmeter thead group config
+
+![](/img/shenyu/plugin/sentinel/sentinel-flow-control-config.png)
+
+* Jmeter http request config
+
+![](/img/shenyu/plugin/sentinel/sentinel-flow-control-http.png)
+
+#### 2.5.1.5 Check result
+
+![](/img/shenyu/plugin/sentinel/sentinel-flow-control.png)
+
+### 2.5.2 Using sentinel for request circuit breaker
+
+#### 2.5.2.1 Plugin configuration
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `sentinel` set to enable.
+
+#### 2.5.2.2 Selector configuration
+
+![](/img/shenyu/plugin/sentinel/example-selector-en.png)
+
+#### 2.5.2.3 Rule configuration
+
+![](/img/shenyu/plugin/sentinel/example-circuitbreaker-rule.png)
+
+when degrade strategy is `exception number`, `degradeRuleSlowRatioThreshold` is not effective. When the minimum number of requests per unit of time is 5, and the request happens exception great than 3, it will trigger the circuit breaker.
+
+when degrade strategy is `slow call ratio`, `degradeRuleSlowRatioThreshold` is effective, `degradeRuleCount` means RT(e.g. 200).
+
+the code is as follows:
+
+```java
+@RestController
+@RequestMapping("/order")
+@ShenyuSpringMvcClient("/order")
+public class OrderController {
+
+ /**
+ * Save order dto.
+ *
+ * @param orderDTO the order dto
+ * @return the order dto
+ */
+ @PostMapping("/save")
+ @ShenyuSpringMvcClient("/save")
+ public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
+
+ Random random = new Random();
+ int num = random.nextInt(100);
+ if (num > 40) {
+ throw new RuntimeException("num great than 20");
+ }
+ orderDTO.setName("hello world save order");
+ return orderDTO;
+ }
+
+}
+```
+
+#### 2.5.2.4 request by `Apache Jmeter`
+
+* Jmeter thead group config
+
+![](/img/shenyu/plugin/sentinel/sentinel-flow-control-config.png)
+
+* Jmeter http request config
+
+![](/img/shenyu/plugin/sentinel/sentinel-flow-control-http.png)
+
+#### 2.5.2.5 Check result
+
+![](/img/shenyu/plugin/sentinel/example-circuitbreaker.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `sentinel` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/_category_.json b/versioned_docs/version-2.6.1/plugin-center/http-process/_category_.json
new file mode 100644
index 00000000000..77ac2bace2f
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Http Process",
+ "position": 1
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/contextpath-plugin.md b/versioned_docs/version-2.6.1/plugin-center/http-process/contextpath-plugin.md
new file mode 100644
index 00000000000..8a05fe6c1fb
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/contextpath-plugin.md
@@ -0,0 +1,127 @@
+---
+title: ContextPath Plugin
+keywords: ["contextPath"]
+description: contextPath plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* ContextPath Plugin
+
+## 1.2 Appropriate Scenario
+
+* Different services can do traffic governance of services by setting different context paths.
+
+## 1.3 Plugin functionality
+
+* Set the context path for service.
+* When the interface is called, the plug-in uniformly prefixes the interface address of the service.
+
+## 1.4 Plugin Code
+
+* Core module ```shenyu-plugin-context-path```
+* Core class ```org.apache.shenyu.plugin.context.path.ContextPathPlugin```
+
+## 1.5 Added since which shenyu version
+
+* 2.3.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/context-path/procedure-en.png)
+
+## 2.2 Import pom
+
+- import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-gateway
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `contextPath` set Status enable.
+
+![](/img/shenyu/plugin/context-path/enable-en.png)
+
+## 2.4 Config plugin
+
+- Set client project's contextPath.
+
+![](/img/shenyu/plugin/context-path/client-project-config.png)
+
+- Selector and rule config, please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule).
+- shenyu-admin contextPath plugin config, config contextPath and addPrefix, contextPath defines the value of contextPath,
+- and addPrefix defines the prefix that needs to be automatically added when the interface is called.
+
+![](/img/shenyu/plugin/context-path/plugin-config-en.png)
+
+## 2.5 Examples
+
+### 2.5.1 Example set service context path
+
+#### 2.5.1.1 Refer [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local/) to start admin and bootstrap.
+
+#### 2.5.1.2 Refer 2.2 to import pom and restart bootstrap.
+
+#### 2.5.1.3 Refer 2.3 to enable plugin.
+
+#### 2.5.1.4 Client project config contextPath.
+
+Client project can directly use [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http), and config contextPath in application.yml.
+
+![](/img/shenyu/plugin/context-path/client-project-config.png)
+
+- After the configuration is completed, and start client project, you can see that there is an additional context selector and rule configuration in shenyu-admin.
+
+![](/img/shenyu/plugin/context-path/context-path-selector-and-rule-en.png)
+
+#### 2.5.1.5 Call Interface
+
+![](/img/shenyu/plugin/context-path/invoke-interface.png)
+
+### 2.5.2 Example add prefix
+
+#### 2.5.2.1 Refer [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local/) to start admin and bootstrap.
+
+#### 2.5.2.2 Refer 2.2 to import pom and restart bootstrap.
+
+#### 2.5.2.3 Refer 2.3 to enable plugin.
+
+#### 2.5.2.4 Client project config contextPath.
+
+For client project we can directly use [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http), and config contextPath in application.yml.
+
+![](/img/shenyu/plugin/context-path/client-project-config.png)
+
+- After the configuration is completed, start client project, you can see that there is an additional context selector and rule configuration in shenyu-admin.
+
+![](/img/shenyu/plugin/context-path/context-path-selector-and-rule-en.png)
+
+#### 2.5.2.5 Config addPrefix
+
+![](/img/shenyu/plugin/context-path/add-prefix-en.png)
+
+#### 2.5.2.6 Modify the value of uri in the selector and condition configuration to delete the addPrefix part.
+
+Since this example uses the service of the http protocol, we need to modify the divide plugin.
+
+![](/img/shenyu/plugin/context-path/remove-add-prefix-en.png)
+
+#### 2.5.2.5 Call Interface
+
+![](/img/shenyu/plugin/context-path/invoke-interface-add-prefix.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `contextPath` set Status disable.
+
+![](/img/shenyu/plugin/context-path/disable-en.png)
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/modifyresponse-plugin.md b/versioned_docs/version-2.6.1/plugin-center/http-process/modifyresponse-plugin.md
new file mode 100644
index 00000000000..06dd2d0bdf5
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/modifyresponse-plugin.md
@@ -0,0 +1,146 @@
+---
+title: ModifyResponse Plugin
+keywords: ["modifyResponse"]
+description: modifyResponse plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* ModifyResponse Plugin
+
+## 1.2 Appropriate Scenario
+
+* This plugin is used for modifying HTTP response status code, response headers or response body parameters.
+
+## 1.3 Plugin functionality
+
+* Reset HTTP response status code
+* Add, set, replace or remove HTTP response headers.
+* Add, replace or remove HTTP response body(JSON) parameters.
+
+## 1.4 Plugin Code
+
+* Core module ```shenyu-plugin-modify-response```
+* Core class ```org.apache.shenyu.plugin.modify.response.ModifyResponsePlugin```
+
+## 1.5 Added since which shenyu version
+
+* 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/modify-response/procedure-en.png)
+
+## 2.2 Import pom
+
+- import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-gateway
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `modifyResponse` set Status enable.
+-
+![](/img/shenyu/plugin/modify-response/enable-en.png)
+
+## 2.4 Config plugin
+
+* Selector and rule config, please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule).
+* In `shenyu-admin` --> `PluginList` --> `HttpProcess` --> `modifyResponse`, add selector config first,then add rule config:
+ * Add selector config
+ ![](/img/shenyu/plugin/modify-response/plugin-selector-config-en.png)
+ * Add rule config
+ ![](/img/shenyu/plugin/modify-response/plugin-rule-config-en.png)
+
+## 2.5 Examples
+
+Here is an example of client project [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http).
+
+### 2.5.1 Example reset HTTP response status code
+
+#### 2.5.1.1 Refer [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local/) to start admin and bootstrap.
+
+#### 2.5.1.2 Refer 2.2 to import pom and restart bootstrap.
+
+#### 2.5.1.3 Refer 2.3 to enable plugin.
+
+#### 2.5.1.4 Refer 2.4 to add plugin config.
+
+Add plugin config:
+
+![](/img/shenyu/plugin/modify-response/status-code-rule-config-en.png)
+
+#### 2.5.1.5 Call Interface
+
+![](/img/shenyu/plugin/modify-response//status-code-invoke-interface.png)
+
+### 2.5.2 Example modify HTTP response headers
+
+#### 2.5.2.1 Refer [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local/) to start admin and bootstrap.
+
+#### 2.5.2.2 Refer 2.2 to import pom and restart bootstrap.
+
+#### 2.5.2.3 Refer 2.3 to enable plugin.
+
+#### 2.5.2.4 Refer 2.4 to add plugin config.
+
+Add plugin config:
+
+![](/img/shenyu/plugin/modify-response/header-rule-config-en.png)
+
+#### 2.5.2.5 Call Interface
+
+![](/img/shenyu/plugin/modify-response/header-invoke-interface.png)
+
+### 2.5.3 Example modify HTTP response body
+
+#### 2.5.3.1 Refer [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local/) to start admin and bootstrap.
+
+#### 2.5.3.2 Refer 2.2 to import pom and restart bootstrap.
+
+#### 2.5.3.3 Refer 2.3 to enable plugin.
+
+#### 2.5.3.4 Refer 2.4 to add plugin config.
+
+Add plugin config:
+
+![](/img/shenyu/plugin/modify-response/body-rule-config-en.png)
+
+#### 2.5.3.5 Call Interface
+
+![](/img/shenyu/plugin/modify-response/body-invoke-interface.png)
+
+## 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `modifyResponse` set Status disable.
+
+![](/img/shenyu/plugin/modify-response/disable-en.png)
+
+## 4. rule parameter list
+
+for modifying status code:
+
+* `statusCode`: reset response status code
+
+for modifying response headers:
+
+* `addHeaders`: add response headers, `k-v` format
+* `setHeaders`: set response headers, `k-v` format
+* `replaceHeaderKeys`: replace response headers,`key` is matching to the header key that should be replacing, value is target value after replacing
+* `removeHeaderKeys`: remove response headers,`key` is matching to the header key that should be removing
+
+for modifying response body:
+
+* `addBodyKeys`: add response body parameters
+* `replaceBodyKeys`: replace response body parameters,`key` is matching to the body(JSON) key that should be replacing, value is target value after replacing
+* `removeBodyKeys`: remove response body parameters,`key` is matching to the body(JSON) key that should be removing
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/parammapping-plugin.md b/versioned_docs/version-2.6.1/plugin-center/http-process/parammapping-plugin.md
new file mode 100644
index 00000000000..caa04ab2722
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/parammapping-plugin.md
@@ -0,0 +1,109 @@
+---
+title: ParamMapping Plugin
+keywords: ["paramMapping-plugin"]
+description: paramMapping-plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* ParamMapping Plugin
+
+## 1.2 Appropriate Scenario
+
+* Add/remove/replace certain fixed parameters to the request
+
+## 1.3 Plugin functionality
+
+* `paramMapping` is used to edit your request parameters.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-param-mapping`
+
+* Core Class `org.apache.shenyu.plugin.param.mapping.ParamMappingPlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Introduce `paramMapping` dependency in the pom.xml file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-param-mapping
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `paramMapping` set Status enabled.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin Config
+
+* you should open this plugin when using.
+
+### 2.4.2 Selector Config
+
+* Selectors and rules, please refer to:[Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule)。
+
+* Only those matched requests can be modified your request body.
+
+### 2.4.3 Rule Config
+
+![](/img/shenyu/plugin/param-mapping/param-mapping.png)
+* param details:
+ * `addParameterKeys`: add a new `key-value` on body
+ * `replaceParameterKeys`: replace request body's `key` ,`key` is the value to be replaced,`value` is the value after replacement
+ * `removeParameterKeys`: remove a body `key`
+
+* param_mapping modify the request body is achieved through `JSONPath` , `$.` represents the root directory.
+
+## 2.5 Examples
+
+### 2.5.1 Add parameters in request
+
+#### 2.5.1.1 Config Plugin
+
+* you should open the plugin when using.
+
+#### 2.5.1.2 Selector Config
+
+#### 2.5.1.3 Rule Config
+
+![](/img/shenyu/plugin/param-mapping/param-mapping.png)
+
+use the configuration,unopened the plugin,request body is:
+
+```json
+{"id":3,"data":{"value":"18","age":"36"}}
+```
+
+#### 2.5.1.4 Check Result
+
+open the plugin,the final request body is
+
+```json
+{"name":"shenyu","userId":3,"data":{"age":"36"}}
+```
+
+add a new key-value `name:shenyu`,replace the key `id` to `userId`, remove the key `data.value` .
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `paramMapping` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/redirect-plugin.md b/versioned_docs/version-2.6.1/plugin-center/http-process/redirect-plugin.md
new file mode 100644
index 00000000000..3e61f08f813
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/redirect-plugin.md
@@ -0,0 +1,94 @@
+---
+title: Redirect Plugin
+keywords: ["redirect"]
+description: redirect plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+ - Redirect Plugin
+
+## 1.2 Appropriate Scenario
+
+ - As the name suggests, the `redirect` plugin is to re-forward and redirect `uri`.
+
+## 1.3 Plugin functionality
+
+ - When the Apache ShenYu gateway makes proxy calls to the target service, it also allows users to use the `redirect` plugin to redirect requests.
+
+## 1.4 Plugin code
+
+ Core module ```shenyu-plugin-context-redirect```
+ Core class ```org.apache.shenyu.plugin.redirect.RedirectPlugin```
+
+## 1.5 Added Since Which shenyu version
+
+ before 2.2.0 .
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+
+
+## 2.2 Import pom
+
+ - import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+ ```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-redirect
+ ${project.version}
+
+
+ ```
+
+## 2.3 Enable plugin
+
+ - In `shenyu-admin` --> BasicConfig --> Plugin --> `Redirect` set Status enable.
+
+
+
+## 2.4 Config plugin
+
+ - Selector and rule config, please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule).
+ - In `shenyu-admin` --> `PluginList` --> `HttpProcess` --> `Redirect`, add selector config first,then add rule config:
+ - Add selector config
+
+
+ - Add rule config
+
+
+
+## 2.5 Examples
+
+### 2.5.1 Redirect
+
+ - When we configure a custom path in `Rule`, it should be a reachable service path.
+ - When the request is matched, the `ShenYu Gateway` will perform the `308` service jump according to the customized path.
+ 1. Refer [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local/) to start admin and bootstrap.
+ 2. Refer 2.2 to import pom and restart bootstrap.
+ 3. Refer 2.3 to enable plugin.
+ 4. Refer 2.4 and [Selector and rule config](../../user-guide/admin-usage/selector-and-rule).
+ 5. Invoke interface: [demo](http://localhost:9195/http)
+ - Invoke the interface declared by selectors and rules will redirect to the specified path.
+ - In this demo, it will jump to [ShenYu official website](https://shenyu.apache.org)
+
+
+
+### 2.5.2 Gateway's own interface forwarding
+
+ - When the matching rules are met, the service will use the `DispatcherHandler` internal interface for forwarding.
+ - To implement the gateway's own interface forwarding, we need to use `/` as the prefix in the configuration path. The specific configuration is as shown in the figure below.
+
+
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `Redirect` set Status disable.
+
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/request-plugin.md b/versioned_docs/version-2.6.1/plugin-center/http-process/request-plugin.md
new file mode 100644
index 00000000000..b3757c51204
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/request-plugin.md
@@ -0,0 +1,91 @@
+---
+title: Request Plugin
+keywords: ["request"]
+description: request plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Request Plugin
+
+## 1.2 Appropriate Scenario
+
+* The request plugin is able to make customized changes to the request parameters of `uri`.
+
+## 1.3 Plugin functionality
+
+* The `Apache ShenYu` gateway allows users to use the `request` plugin to add, modify, and remove request headers to request parameters, request headers, and `Cookie` when proxying a target service.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-request`
+
+* Core Class `org.apache.shenyu.plugin.request.RequestPlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+
+
+## 2.2 Import pom
+
+- Import maven config in shenyu-bootstrap project's `pom.xml` file, which is already added by default.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-request
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `request` set Status enabled.
+
+ > If there is an option to configure a `ruleHandlePageType` on the page here, you can configure any string, e.g. `custom`, which has no effect on the request, and will be removed in later versions.
+
+
+
+
+## 2.4 Config plugin
+
+- selectors and rules, only requests that match are forwarded and redirected, see the [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule)
+- `shenyu-admin` Plugin --> `HttpProcess` --> `Request`. Add the selector first, then add the rule:
+- Add the selector:
+
+
+
+- Add the rule
+
+
+
+## 2.5 Examples
+
+### 2.5.1 Adding request parameters
+
+- When we configure a custom path in `Rules`, it should be a reachable service path.
+- When a request is matched, based on the customized path, the `Apache ShenYu` gateway performs a service hop.
+
+1. Refer to [Local Deployment](https://shenyu.apache.org/docs/deployment/deployment-local)启动 admin 和网关
+2. Refer to 2.2 importing pom and restarting the gateway.
+3. Refer to 2.3 enabling Plugin
+4. Start the project [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http)
+5. Refer to 2.4 and [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule), configuring plugin rules.
+6. Call interface:[http-test-api.http](https://github.com/apache/shenyu/blob/master/shenyu-examples/shenyu-examples-http/src/main/http/http-test-api.http)
+- Calling the interface declared by the selector and rule will see the request parameters configured in the request plugin.
+
+
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `request` set Status disable.
+-
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/http-process/rewrite-plugin.md b/versioned_docs/version-2.6.1/plugin-center/http-process/rewrite-plugin.md
new file mode 100644
index 00000000000..adc096f0299
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/http-process/rewrite-plugin.md
@@ -0,0 +1,103 @@
+---
+title: Rewrite Plugin
+keywords: ["rewrite"]
+description: rewrite plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Rewrite Plugin
+
+## 1.2 Appropriate Scenario
+
+* The request uri can be different from the target service by rewriting the path.
+
+## 1.3 Plugin functionality
+
+* This plugin is used to rewrite the request uri.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-rewrite`
+
+* Core Class `org.apache.shenyu.plugin.rewrite.RewritePlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/rewrite/rewrite_use_en.png)
+
+## 2.2 Import pom
+
+- Import maven config in shenyu-bootstrap project's `pom.xml` file..
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-rewrite
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `rewrite` set Status enabled.
+![](/img/shenyu/plugin/rewrite/rewrite_open_en.png)
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin Config
+
+* Enable the plugin before using.
+* Disable the plugin if don't use.
+
+### 2.4.2 Selector Config
+
+* Please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule).
+
+### 2.4.3 Rule Config
+
+![](/img/shenyu/plugin/rewrite/rewrite_rule_config.png)
+
+* Param details:
+ * `regex`: The regular expression that matches the part of uri to be rewrited.
+ * `replace`: The content of replacement.
+
+## 2.5 Examples
+
+### 2.5.1 Example for rewriting uri
+
+#### 2.5.1.1 Run the shenyu-examples-http project
+
+* Use [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http), please refer to [Run the shenyu-examples-http project](../../quick-start/quick-start-http#run-the-shenyu-examples-http-project)
+
+#### 2.5.1.1 Plugin Config
+
+* Refer to [2.4.1](#241-plugin-config) to configure plugin.
+
+#### 2.5.1.2 Selector Config
+
+* Refer to [2.4.2](#242-selector-config) to configure selector
+
+#### 2.5.1.3 Rule Config
+
+![](/img/shenyu/plugin/rewrite/rewrite_example_rule.png)
+
+The request `/http/hello` would be rewritten to `/hi`
+
+#### 2.5.1.4 Check Result
+
+Use some tool (such as Postman) to make a request:
+
+![](/img/shenyu/plugin/rewrite/rewrite_example_result.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `rewrite` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/mock/_category_.json b/versioned_docs/version-2.6.1/plugin-center/mock/_category_.json
new file mode 100644
index 00000000000..e4f13a148a9
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/mock/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Mock",
+ "position": 8
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/mock/mock-plugin.md b/versioned_docs/version-2.6.1/plugin-center/mock/mock-plugin.md
new file mode 100644
index 00000000000..9c1c55ef7c0
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/mock/mock-plugin.md
@@ -0,0 +1,178 @@
+---
+title: Mock Plugin
+keywords: ["mock"]
+description: mock plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Mock Plugin
+
+## 1.2 Appropriate Scenario
+
+* Specify the status code and response body for the request to facilitate testing.
+
+## 1.3 Plugin functionality
+
+* Set the status code and body of the request.
+* Support configuration `${}` placeholder to automatically generate data.
+
+* **Note:** In order to support a more flexible data generation method, the mock plug-in supports users to use SpEL expressions to generate mock data. Using SpEL expressions may lead to the risk of executing malicious scripts or applying destructive programs. We recommend that you be extra careful when using them, use them in a safe environment as much as possible, such as an intranet environment, and follow security best practices.
+
+## 1.4 Plugin Code
+
+* Core module ```shenyu-plugin-mock```
+* Core class ```org.apache.shenyu.plugin.mock.MockPlugin```
+
+## 1.5 Added since which shenyu version
+
+* 2.5.0
+
+# 2. How to use plugin
+
+## 2.1 Import pom
+
+- import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-mock
+ ${project.version}
+
+```
+
+## 2.2 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `mock` set Status enable.
+
+![](/img/shenyu/plugin/mock/enable-mock-plugin-en.png)
+
+## 2.3 Config plugin
+
+- Selector and rule config, please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule).
+- shenyu-admin mock plugin configuration, supports configuring httpStatusCode and responseContent
+ - httpStatusCode:the status code of the request.
+ - responseContent:the response body of the request,support configuring `${}` placeholders to generate random data.
+
+![](/img/shenyu/plugin/mock/mock-rule-configuration-en.png)
+
+## 2.4 `${}` supported syntax
+
+**~~`${int|min-max}`~~**
+- **Description:** Generate random integers from `min` to `max`, inclusive of `min` and `max`.
+- **Example:** `${int|10-20}`
+
+**~~`${double|min-max|format}`~~**
+- **Description:** Generate random floating point numbers from `min` to `max`, formatted according to `format`.
+- **Example:** `${double|10-20}` , `${double|10-20.5|%.2f}`
+
+**~~`${email}`~~**
+- **Description:** Generate random email addresses.
+
+**~~`${phone}`~~**
+- **Description:** Generate random 13-digit mobile number.
+
+**~~`${zh|min-max}`~~**
+- **Description:** Generate random Chinese strings of length `min` to `max`.
+- **Example:** `${zh|10-20}`
+
+**~~`${en|min-max}`~~**
+- **Description:** Generate random English strings of length `min` to `max`.
+- **Example:** `${en|10-20}`
+
+**~~`${bool}`~~**
+- **Description:** Generate a random `boolean` value i.e. `true` or `false`.
+
+**~~`${list|[arg1,arg2...]}`~~**
+- **Description:** Randomly returns any value in a list as a string.
+- **Example:** `${list|[gril,boy]}` will return `boy` or `girl`
+
+**~~`${current|format}`~~**
+- **Description:** Returns the current time and uses `format` to format, `format` can be default, the default is `YYYY-MM-dd HH:mm:ss`.
+- **Example:** `${current}`,`${current|YYYY-MM-dd}`
+
+**~~`${array|item|length}`~~**
+- **Description:** According to the `item` format definition, an array of length `length` can be generated. All the above data generation rules can be nested in `item`, and the result will be automatically added with `[]`.
+- **Example:** `${array|{"name":"test"}|3}` result is `[{"name":"test"},{"name":"test"},{"name":"test"}]`,`${array|{"age":${int|18-65}}|3}`.
+
+**${expression|expression}**
+
+`Spel` expressions are currently supported with built-in functions and arguments, which fully replace the old ${} syntax
+
+- **`${expression|#int(min,max)}`**
+
+ - **Description:** Generate random integers from `min` to `max`, inclusive of `min` and `max`.
+
+ - **Example:** `${expression|#int(1,2)}`
+
+- **`${expression|#double(min,max)}`**
+
+ - **Description:** Generate random floating point numbers from `min` to `max`, formatted according to `format`.
+ - **Example:**`${expression|#double(10.5,12.0)}`,`${expression|#double(10.5,12.0,'¥%.2f')}`
+
+- **`${expression|#email()}`**
+
+ - **Description:** Generate random email addresses.
+
+- **`${expression|#phone()}`**
+
+ - **Description:** Generate random 13-digit mobile number.
+
+- **`${expression|zh(min,max)}`**
+
+ - **Description:** Generate random Chinese strings of length `min` to `max`.
+ - **Example:** `${expression|#zh(1,10)}`
+
+- **`${expression|#bool()}`**
+
+ - **Description:** Generate a random `boolean` value i.e. `true` or `false`.
+
+- **`${expression|#oneOf(arg1,arg2...)}`**
+
+ - **Description:** Randomly returns any value in a list.
+ - **Example:** `${expression|#oneOf('shenyu','number',1)}` will return `'shenyu'` or `'number'`or`1`
+
+- **`${expression|current()}`**
+
+ + **Description:** Returns the current time and uses `format` to format, `format` can be default, the default is `YYYY-MM-dd HH:mm:ss`.
+ + **Example:** `${expression|#current()}`,`${expression|#current('YYYY-MM-dd')}`
+
+- **`${expression|#array(item,length)}`**
+
+ - **Description:** According to the `item` format definition, an array of length `length` can be generated.
+
+ - **Example:** `expression|#array('shenyu',3)` would generate `["shenyu","shenyu","shenyu"]`.
+
+ You can use it nested like`${expression|#array(#bool(),2)}`or`${expression|#array(#array('shenyu',2),2)}`
+
+- **`${expression|#req}`**
+
+ - **Description:** Req is built-in request parameters ,which can generate response data based on request content
+ - **Example:**`${expression|#req.method}`、`${expression|#req.queries['query_name']}`、`${req.queries.query_name}`、`${expression|#req.uri}`。`jsonPath` is used when the request body is json . For example ,when the request body is `{"name":"shenyu"}`,`${expression|#req.json.name}`would return "shenyu"
++ **`${expression|spel}`**
+
+ + **Description**:Use Spel expressions directly to generate data
+ + **Example**:`${expression|T(java.time.LocalDate).now()}`、`${expression|1==1}`
+
+It is recommended to use the new '${}' syntax. The old syntax may be removed at an later date.
+
+Function replaceable table:
+
+| old | new |
+| :------------------------- | :---------------------------------- |
+| ${int\|min-max} | ${expression\|#int(min,max)} |
+| ${double\|min-max\|format} | ${expression\|#double(min,max)} |
+| ${email} | ${expression\|#email()} |
+| ${phone} | ${expression\|#phone()} |
+| ${zh\|min-max} | ${expression\|#zh(min,max)} |
+| ${en\|min-max} | ${expression\|#en(min,max)} |
+| ${list\|[arg1,arg2...]} | ${expression\|#oneOf(arg1,agr2...)} |
+| ${current\|format} | ${expression\|#current(format)} |
+| ${bool} | ${expression\|#bool()} |
+| ${array\|item\|length} | ${expression#array(item,length)} |
+
+**You do not need to use add `""` on both sides of `${}`, the generated content will be prefixed and suffixed according to the definition of generator**
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/_category_.json b/versioned_docs/version-2.6.1/plugin-center/observability/_category_.json
new file mode 100644
index 00000000000..5a1e175c459
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Observability",
+ "position": 5
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-aliyun-sls.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-aliyun-sls.md
new file mode 100644
index 00000000000..a4f8de782e0
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-aliyun-sls.md
@@ -0,0 +1,139 @@
+---
+title: Logging-Aliyun-Sls Plugin
+keywords: ["logging"]
+description: logging plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-AliyunSls Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request information to aliyun sls, analysis request information by aliyun sls platform.
+
+## 1.3 Plugin functionality
+
+* The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+* the plugin records access logs and sends to aliyun sls platform.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-aliyun-sls`
+
+* Core Class `org.apache.shenyu.plugin.aliyun.sls.LoggingAliYunSlsPlugin`
+* Core Class `org.apache.shenyu.plugin.aliyun.sls.client.AliyunSlsLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+ShenYu 2.5.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+- import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-aliyun-sls
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingAliyunSls` set Status enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin configuration
+
+![](/img/shenyu/plugin/logging/logging-aliyun-sls/plugin-config-en.jpg)
+
+| config-item | type | description | remarks |
+| :-------------- | :------ | :----------------------------------------------------------- | :----------------- |
+| accessId | String | accessId | must |
+| accesskey | String | accesskey | must |
+| host | String | host name, example:cn-guangzhou.log.aliyuncs.com | must |
+| projectName | String | log project name | optional, default shenyu |
+| logStoreName | String | log store name | optional, default shenyu-logstore |
+| topic | String | aliyun sls log topic | optional, default shenyu-topic |
+| ttlInDay | Integer | ttl times in one day | optional, default 3 |
+| shardCount | Integer | aliyun sls log shard count | optional, default 10 |
+| sendThreadCount | Integer | send log to aliyun sls thread number | optional, default 1 |
+| ioThreadCount | Integer | io thread count | optional, default 1 |
+| sampleRate | String | sample consume rate | optional, default 1 |
+| maxRequestBody | Integer | max request body | optional, default 524288 |
+| maxResponseBody | Integer | max response body | optional, default 524288 |
+| bufferQueueSize | Integer | consume log queue size | optional, default 50000 |
+
+
+### 2.4.2 Configuration Selectors and Rules
+
+* Selector and rule Config. Please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule.md).
+
+## 2.5 Logging Info
+
+collect request info as follows
+
+| Field Name | Meaning | Description | Remarks |
+|:----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------|:----|
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by aliyun sls platform
+
+#### 2.6.1.1 Plugin Configuration
+
+* Open the plugin and configure aliyun-sls, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-aliyun-sls/plugin-config-en.jpg)
+
+#### 2.6.1.2 Selector Configuration
+
+![](/img/shenyu/plugin/logging/logging-aliyun-sls/aliyun-sls-log-selector-en.png)
+
+#### 2.6.1.3 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-aliyun-sls/aliyun-sls-log-rule-en.png)
+
+#### 2.6.1.4 Send Request
+
+![](/img/shenyu/plugin/logging/logging-aliyun-sls/call-service.png)
+
+#### 2.6.1.5 Aliyun sls Platform Display
+
+![](/img/shenyu/plugin/logging/logging-aliyun-sls/aliyun-sls-log.jpg)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingAliyunSls` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-elasticsearch.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-elasticsearch.md
new file mode 100644
index 00000000000..8354a5b7006
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-elasticsearch.md
@@ -0,0 +1,183 @@
+---
+title: Logging-ElasticSearch Plugin
+keywords: ["Logging", "ElasticSearch"]
+description: Logging-ElasticSearch Plugin
+---
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-ElasticSearch Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request info to elasticsearch, query or display request info by another application(kibana).
+
+## 1.3 Plugin functionality
+
+>`Apache ShenYu` The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+>The list includes: request time, request parameters, request path, response result, response status code, time consumption, upstream IP, exception information waiting.
+>Shenyu gateway can record access logs through logging-elasticsearch-plugin and send access logs to elasticsearch database.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-elasticsearch`
+
+* Core Class `org.apache.shenyu.plugin.logging.elasticsearch.LoggingElasticSearchPlugin`
+* Core Class `org.apache.shenyu.plugin.logging.elasticsearch.client.ElasticSearchLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+* Since 2.5.0
+
+## 1.6 Technical Solutions
+
+* Architecture Diagram
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/logging-elasticsearch-arch.png)
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Add the dependency of logging-elasticsearch to the Shenyu-bootstrap-module 's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-elasticsearch
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin` --> Basic Configuration --> Plugin Management --> `loggingElasticSearch`, configure the ElasticSearch parameter and set it to on.
+
+## 2.4 Config plugin
+
+### 2.4.1 Open the plugin and configure elasticsearch, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/logging-elasticsearch-config-en.png)
+
+- The individual configuration items are described as follows:
+
+| config-item | type | description | remarks |
+|:----------------| :------ | :----------------------------------------------------------- | :---------------------------------- |
+| host | String | host name | must |
+| port | String | port num | must |
+| sampleRate | String | Sampling rate, range 0~1, 0: off, 0.01: acquisition 1%, 1: acquisition 100% | Optional, default 1, all collection |
+| compressAlg | String | Compression algorithm, no compression by default, currently supports LZ4 compression | Optional, no compression by default |
+| maxResponseBody | Ingeter | Maximum response size, above the threshold no response will be collected | Optional, default 512KB |
+| maxRequestBody | Ingeter | Maximum request body size, above the threshold no request body will be collected | Optional, default 512KB |
+Except for host, port, all others are optional, in most cases only these 3 items need to be configured.
+
+### 2.4.2 Configuring Selectors and Rulers
+
+For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+In addition sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and sampling rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/logging-elasticsearch-option.png)
+
+## 2.5 Logging information
+
+The fields of the captured access log are as follows.
+
+| Field Name | Meaning | Description | Remarks |
+| :-------------------- | :----------------------------------------------------------: | :----------------------------------------------------------- | :------ |
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by ElasticSearch
+
+#### 2.6.1.1 Install ElasticSearch
+
+Users need to deploy the `ElasticSearch` service to collect
+
+##### 2.6.1.1.1 Installing ElasticSearch under Windows Environment
+
+- To [download address](https://www.elastic.co/downloads/elasticsearch) Select Windows version to download
+- After downloading the installation package, unzip it, enter the `bin` directory, and double-click to execute `elasticsearch.bat` to start
+- The default startup port is `9200`. Access`http://localhost:9200`, verify success
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/elasticsearch-success.png)
+
+##### 2.6.1.1.2 Installing ElasticSearch in MacOS environment
+
+- To [download address](https://www.elastic.co/downloads/elasticsearch) Select Windows version to download
+- After downloading the installation package, unzip it, enter the `bin` directory and execute the startup command on the terminal: `./elasticsearch`
+- The default startup port is `9200`. Access `http://localhost:9200`, verify success
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/elasticsearch-success.png)
+
+#### 2.6.1.2 Install Kibana
+
+##### 2.6.1.2.1 Installing Kibana under Windows Environment
+
+- To [download address](https://www.elastic.co/cn/downloads/kibana) Select Windows version to download
+- After downloading the installation package, unzip it, enter the `bin` directory, and double-click to execute `kibana.bat` to start
+- The default startup port is `5601`. Access `http://localhost:5601`, verify success
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/kibana-success.png)
+
+##### 2.6.1.2.2 Installing Kibana in MacOS environment
+
+- To [download address](https://www.elastic.co/cn/downloads/kibana) Select Windows version to download
+- After downloading the installation package, unzip it, enter the `bin` directory and execute the startup command on the terminal: `./kibana`
+- The default startup port is `5601`. Access `http://localhost:5601`, verify success
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/kibana-success.png)
+
+#### 2.6.1.3 Plugin Configuration
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/logging-elasticsearch-config-en.png)
+
+#### 2.6.1.4 Selector and Rule Configuration
+
+* For detailed configuration of selectors and rules, please refer to:[Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+#### 2.6.1.5 Using postman to initiate a request
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/postman-request.png)
+
+#### 2.6.1.6 Querying data using kibana
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/index.png)
+
+- The first time you use the plug-in, you will automatically create a `shenyu-access-logging` index
+
+![](/img/shenyu/plugin/logging/logging-elasticsearch/data.png)
+
+- Using ES query statement, the requested log information can be queried
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `LoggingElasticSearch` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-huawei-lts.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-huawei-lts.md
new file mode 100644
index 00000000000..48a59f66173
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-huawei-lts.md
@@ -0,0 +1,172 @@
+---
+title: Logging-Huawei-Lts Plugin
+keywords: ["Logging"]
+description: logging plugin
+
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-HuaweiLts Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request information to huawei lts, analysis request information by huawei lts platform.
+
+## 1.3 Plugin functionality
+
+- The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+
+* the plugin records access logs and sends to huawei lts platform.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-huawei-lts`
+
+* Core Class `org.apache.shenyu.plugin.huawei.lts.LoggingHuaweiLtsPlugin`
+* Core Class `org.apache.shenyu.plugin.huawei.lts.client.HuaweiLtsLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+ShenYu 2.6.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+- ## 2.2 Import pom
+
+ - import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-huawei-lts
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingHuaweiLts` set Status enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin configuration
+
+### ![](/img/shenyu/plugin/logging/logging-huawei-lts/plugin-config-en.png)
+
+| config-item | description | type | remarks |
+| ------------------------- | ------------------------------------------------------------ | ------- | -------- |
+| projectId | The project ID of the HUAWEI CLOUD account(project id) | String | must |
+| accessKeyId | AK of the HUAWEI CLOUD account | String | must |
+| accessKeySecret | SK of HUAWEI CLOUD account | String | must |
+| regionName | Regions of Cloud Log Service | String | must |
+| logGroupId | The log group ID of the LTS | String | must |
+| logStreamId | The log stream ID of the LTS | String | must |
+| totalSizeInBytes | The upper limit of the log size that can be cached by a single producer instance | int | optional |
+| maxBlockMs | If the producer has insufficient free space, the caller's maximum block time on the send method, in milliseconds. The default is 60 seconds (60000 milliseconds), and 0 seconds is recommended. When the maxBlockMs value >= 0, it will block until the set time. If the blocking time is reached, the memory cannot be obtained, that is, an error will be reported and the log will be discarded. When the value of maxBlockMs=-1, it will be blocked until the sending is successful, and the log will not be discarded | long | optional |
+| ioThreadCount | The thread pool size for executing log sending tasks | int | optional |
+| batchSizeThresholdInBytes | When the cached log size in a ProducerBatch is greater than or equal to batchSizeThresholdInBytes, the batch will be sent | int | optional |
+| batchCountThreshold | When the number of cached logs in a ProducerBatch is greater than or equal to batchCountThreshold, the batch will be sent | int | optional |
+| lingerMs | The lingering time of a ProducerBatch from creation until it is sendable | int | optional |
+| retries | If a ProducerBatch fails to send for the first time, the number of times it can be retried is recommended to be 3 times. If retries is less than or equal to 0, the ProducerBatch will directly enter the failure queue after the first sending failure | int | optional |
+| baseRetryBackoffMs | The backoff time for the first retry | long | optional |
+| maxRetryBackoffMs | Maximum backoff time for retries | long | optional |
+| giveUpExtraLongSingleLog | For logs exceeding 1M, the data larger than 1M will be discarded after splitting | boolean | optional |
+| enableLocalTest | 是否开启跨云上报日志 | boolean | optional |
+
+- get `regionName`
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-regionName.png)
+
+| **区域名称** | **RegionName** |
+| ------------ | -------------- |
+| 华北-北京二 | cn-north-2 |
+| 华北-北京四 | cn-north-4 |
+| 华北-北京一 | cn-north-1 |
+| 华东-上海二 | cn-east-2 |
+| 华东-上海一 | cn-east-3 |
+| 华南-广州 | cn-south-1 |
+| 华南-深圳 | cn-south-2 |
+| 西南-贵阳一 | cn-southwest-2 |
+
+- get `projectId`
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-projectId.png)
+
+- get `accessKeyId` and `accessKeySecret`
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-access.png)
+
+- get `logGroupId` and `logStreamId`
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-logGroupId.png)
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-logStreamId.png)
+
+### 2.4.2 Configuration Selectors and Rules
+
+* Selector and rule Config. Please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule.md).
+
+## 2.5 Logging Info
+
+collect request info as follows
+
+| Field Name | Meaning | Description | Remarks |
+| :-------------------- | :----------------------------------------------------------: | :----------------------------------------------------------- | :------ |
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by tencent cls platform
+
+#### 2.6.1.1 Plugin Configuration
+
+* Open the plugin and configure huawei lts, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/plugin-config-en.png)
+
+#### 2.6.1.2 Selector Configuration
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-log-selector-en.png)
+
+#### 2.6.1.3 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-log-rule-en.png)
+
+#### 2.6.1.4 Send Request
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/call-service.png)
+
+#### 2.6.1.5 Huawei lts Platform Display
+
+![](/img/shenyu/plugin/logging/logging-huawei-lts/huawei-lts-log.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin -->`loggingHuaweiLts`set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-kafka.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-kafka.md
new file mode 100644
index 00000000000..feb312c7e61
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-kafka.md
@@ -0,0 +1,162 @@
+---
+title: Logging-Kafka Plugin
+keywords: ["Logging", "kafka"]
+description: Logging-Kafka Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-Kafka Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request log to Kafka, consume Kafka message to another application and analysis.
+
+## 1.3 Plugin functionality
+
+>`Apache ShenYu` The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+> The list includes: request time, request parameters, request path, response result, response status code, time consumption, upstream IP, exception information waiting.
+> The Logging-Kafka plugin is a plugin that records access logs and sends them to the Kafka cluster.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-kafka`.
+
+* Core Class `org.apache.shenyu.plugin.logging.kafka.LoggingKafkaPlugin`
+* Core Claas `org.apache.shenyu.plugin.logging.kafka.client.KafkaLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.5.0
+
+## 1.6 Technical Solutions
+
+* Architecture Diagram
+
+![](/img/shenyu/plugin/logging/logging-kafka/logging-kafka-arch.jpg)
+
+* Full asynchronous collection and delivery of `Logging` inside the `Apache ShenYu` gateway
+
+* Logging platform by consuming the logs in the `Kafka` cluster for repository, and then using `Grafana`, `Kibana` or other visualization platform to display
+
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/logging/logging-console/loggingConsole-use-en.png)
+
+## 2.2 Import pom
+
+* Add the `Logging-Kafka` dependency to the gateway's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-kafka
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin` --> Basic Configuration --> Plugin Management --> `loggingKafka`, configure the kafka parameter and set it to on.
+
+## 2.4 Config plugin
+
+### 2.4.1 Open the plugin and configure kafka, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-config-en.png)
+
+* The individual configuration items are described as follows:
+
+| | | | |
+|:----------------------------------|:---------------------|:----------------------------------|:------------|
+| config-item | type | description | remarks |
+| topic | String | Message Queue Topics | must |
+| namesrvAddr | String | Message queue nameserver address | must |
+| sampleRate | String | Sampling rate, range 0~1, 0: off, 0.01: acquisition 1%, 1: acquisition 100% | Optional, default 1, all collection |
+| compressAlg | String | Compression algorithm, no compression by default, currently supports LZ4 compression | Optional, no compression by default |
+| maxResponseBody | Ingeter | Maximum response size, above the threshold no response will be collected | Optional, default 512KB |
+| maxRequestBody | Ingeter | Maximum request body size, above the threshold no request body will be collected | Optional, default 512KB |
+Except for topic, namesrvAddr, all others are optional, in most cases only these 3 items need to be configured. The default group id is "shenyu-access-logging"
+
+### 2.4.2 Configuring Selectors and Rulers
+
+* For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+In addition, sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and sampling rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+![](/img/shenyu/plugin/logging/logging-config.png)
+
+## 2.5 Logging Info
+
+collect request info as follows
+
+| Field Name | Meaning | Description | Remarks |
+|:----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------|:----|
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by Kafka
+
+#### 2.6.1.1 Plugin Configuration
+
+Open the plugin and configure kafka, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-kafka/logging-config-cn.png)
+
+#### 2.6.1.2 Selector Configuration
+
+For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+In addition, sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and sampling rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+![](/img/shenyu/plugin/logging/logging-kafka/logging-option-topic.png)
+
+#### 2.6.1.3 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-kafka/log-rule-en.png)
+
+#### 2.6.1.4 Request Service
+
+![](/img/shenyu/plugin/logging/logging-rocketmq/call-service.png)
+
+#### 2.6.1.5 Consumption and display of Logging
+
+As each logging platform has differences, such as storage available clickhouse, ElasticSearch, etc., visualization has self-developed or open source Grafana, Kibana, etc..
+Logging-Kafka plugin uses Kafka to decouple production and consumption, while outputting logs in json format,
+consumption and visualization require users to choose different technology stacks to achieve their own situation.=
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingKafka` set Status disable.
+
+
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-plugin.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-plugin.md
new file mode 100644
index 00000000000..3bf717aecff
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-plugin.md
@@ -0,0 +1,117 @@
+---
+title: Logging Plugin
+keywords: ["logging"]
+description: logging plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-Console Plugin
+
+## 1.2 Appropriate Scenario
+
+* Users may want to view the information about request(including request headers, request parameters, response headers, response body...etc) where in the side of gateway when debugging during development or troubleshooting problems online.
+
+## 1.3 Plugin functionality
+
+* Collect http request url, header, request body, response and response body by logback or log4j, the log file will be saved locally.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-pluign-logging-console`.
+
+* Core Class `org.apache.shenyu.plugin.logging.console.LoggingConsolePlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/logging/logging-console/loggingConsole-use-en.png)
+
+## 2.2 Import pom
+
+- import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-console
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> loggingConsole set Status enable.
+
+## 2.4 Config plugin
+
+* Selector and rule Config. Please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule.md).
+
+## 2.5 Examples
+
+## 2.5.1 Collect all http request log
+
+> you must open loggingConsole plugin before you use loggingConsole plugin.
+
+### 2.5.1.1 Selector Configuration
+
+![](/img/shenyu/plugin/logging/logging-console/log-selector-en.jpg)
+
+### 2.5.1.2 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-console/log-rule-en.jpg)
+
+### 2.5.1.3 Call Http Service
+
+![](/img/shenyu/plugin/logging/logging-console/call-service.png)
+
+### 2.5.1.4 Check Result
+
+if the request arrived successfully, you will see request information as follow.
+
+```
+Request Uri: http://localhost:9195/test/payment
+Request Method: POST
+
+[Request Headers Start]
+Content-Type: application/json
+Content-Length: 46
+Host: localhost:9195
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.13 (Java/11.0.11)
+Cookie: JSESSIONID=CD325CE813F61BB37783A1D0835959DD
+Accept-Encoding: gzip,deflate
+[Request Headers End]
+
+[Request Body Start]
+{
+ "userId": "11",
+ "userName": "xiaoming"
+}
+[Request Body End]
+
+Response Code: 200 OK
+
+[Response Headers Start]
+transfer-encoding: chunked
+Content-Length: 37
+Content-Type: application/json
+[Response Headers End]
+
+[Response Body Start]
+{"userId":"11","userName":"xiaoming"}
+[Response Body End]
+```
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingConsole` set Status disable.
+
+![](/img/shenyu/plugin/logging/logging-console/unenable-log-plugin-en.jpg)
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-pulsar.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-pulsar.md
new file mode 100644
index 00000000000..4f69a946a5f
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-pulsar.md
@@ -0,0 +1,162 @@
+---
+title: Logging-Pulsar Plugin
+keywords: ["Logging", "pulsar"]
+description: Logging-Pulsar Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-Pulsar Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request log to Pulsar, consume Pulsar message to another application and analysis.
+
+## 1.3 Plugin functionality
+
+>`Apache ShenYu` The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+> The list includes: request time, request parameters, request path, response result, response status code, time consumption, upstream IP, exception information waiting.
+> The Logging-Pulsar plugin is a plugin that records access logs and sends them to the Pulsar cluster.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-pulsar`.
+
+* Core Class `org.apache.shenyu.plugin.logging.pulsar.LoggingPulsarPlugin`
+* Core Claas `org.apache.shenyu.plugin.logging.pulsar.client.PulsarLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.5.1
+
+## 1.6 Technical Solutions
+
+* Architecture Diagram
+
+![](/img/shenyu/plugin/logging/logging-pulsar/logging-pulsar-arch.jpg)
+
+* Full asynchronous collection and delivery of `Logging` inside the `Apache ShenYu` gateway
+
+* Logging platform by consuming the logs in the `Pulsar` cluster for repository, and then using `Grafana`, `Kibana` or other visualization platform to display
+
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/logging/logging-console/loggingConsole-use-en.png)
+
+## 2.2 Import pom
+
+* Add the `Logging-Pulsar` dependency to the gateway's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-pulsar
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin` --> Basic Configuration --> Plugin Management --> `loggingPulsar`, configure the pulsar parameter and set it to on.
+
+## 2.4 Config plugin
+
+### 2.4.1 Open the plugin and configure pulsar, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-pulsar/logging-pulsar-config.jpg)
+
+* The individual configuration items are described as follows:
+
+| | | | |
+|:----------------------------------|:---------------------|:----------------------------------|:------------|
+| config-item | type | description | remarks |
+| topic | String | Message Queue Topics | must |
+| serviceUrl | String | Message queue service address | must |
+| sampleRate | String | Sampling rate, range 0~1, 0: off, 0.01: acquisition 1%, 1: acquisition 100% | Optional, default 1, all collection |
+| compressAlg | String | Compression algorithm, no compression by default, currently supports LZ4 compression | Optional, no compression by default |
+| maxResponseBody | Ingeter | Maximum response size, above the threshold no response will be collected | Optional, default 512KB |
+| maxRequestBody | Ingeter | Maximum request body size, above the threshold no request body will be collected | Optional, default 512KB |
+Except for topic, serviceUrl, all others are optional, in most cases only these 3 items need to be configured. The default group id is "shenyu-access-logging"
+
+### 2.4.2 Configuring Selectors and Rulers
+
+* For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+In addition, sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and sampling rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+![](/img/shenyu/plugin/logging/logging-config.png)
+
+## 2.5 Logging Info
+
+collect request info as follows
+
+| Field Name | Meaning | Description | Remarks |
+|:----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------|:----|
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by Pulsar
+
+#### 2.6.1.1 Plugin Configuration
+
+Open the plugin and configure pulsar, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-pulsar/logging-pulsar-config.jpg)
+
+#### 2.6.1.2 Selector Configuration
+
+For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+In addition, sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and samplingf rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+![](/img/shenyu/plugin/logging/logging-pulsar/logging-option-topic.jpg)
+
+#### 2.6.1.3 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-pulsar/log-rule.jpg)
+
+#### 2.6.1.4 Request Service
+
+![](/img/shenyu/plugin/logging/logging-rocketmq/call-service.png)
+
+#### 2.6.1.5 Consumption and display of Logging
+
+As each logging platform has differences, such as storage available clickhouse, ElasticSearch, etc., visualization has self-developed or open source Grafana, Kibana, etc..
+Logging-Pulsar plugin uses Pulsar to decouple production and consumption, while outputting logs in json format,
+consumption and visualization require users to choose different technology stacks to achieve their own situation.=
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingPulsar` set Status disable.
+
+
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-rocketmq.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-rocketmq.md
new file mode 100644
index 00000000000..d59c340d7a4
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-rocketmq.md
@@ -0,0 +1,173 @@
+---
+title: Logging-RocketMQ Plugin
+keywords: ["Logging", "RocketMQ"]
+description: Logging-RocketMQ Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-RocketMQ Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request log to rocketmq, consume rocketmq message to another application and analysis.
+
+## 1.3 Plugin functionality
+
+>`Apache ShenYu` The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+> The list includes: request time, request parameters, request path, response result, response status code, time consumption, upstream IP, exception information waiting.
+> The Logging-RocketMQ plugin is a plugin that records access logs and sends them to the RocketMQ cluster.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-rocketmq`.
+
+* Core Class `org.apache.shenyu.plugin.logging.rocketmq.LoggingRocketMQPlugin`
+* Core Claas `org.apache.shenyu.plugin.logging.rocketmq.client.RocketMQLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.5.0
+
+## 1.6 Technical Solutions
+
+* Architecture Diagram
+
+![](/img/shenyu/plugin/logging/shenyu-agent-logging-arch.png)
+
+* Full asynchronous collection and delivery of `Logging` inside the `Apache ShenYu` gateway
+
+* Logging platform by consuming the logs in the `RocketMQ` cluster for repository, and then using `Grafana`, `Kibana` or other visualization platform to display
+
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Add the `Logging-RocketMQ` dependency to the gateway's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-rocketmq
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin` --> Basic Configuration --> Plugin Management --> `loggingRocketMQ`, configure the rocketMQ parameter and set it to on.
+
+## 2.4 Config plugin
+
+### 2.4.1 Open the plugin and configure rocketmq, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-config-en.png)
+
+* The individual configuration items are described as follows:
+
+| | | | |
+|:----------------------------------|:---------------------|:----------------------------------|:------------|
+| config-item | type | description | remarks |
+| topic | String | Message Queue Topics | must |
+| namesrvAddr | String | Message queue nameserver address | must |
+| producerGroup | String | Log Message Producer Group | must |
+| sampleRate | String | Sampling rate, range 0~1, 0: off, 0.01: acquisition 1%, 1: acquisition 100% | Optional, default 1, all collection |
+| compressAlg | String | Compression algorithm, no compression by default, currently supports LZ4 compression | Optional, no compression by default |
+| maxResponseBody | Ingeter | Maximum response size, above the threshold no response will be collected | Optional, default 512KB |
+| maxRequestBody | Ingeter | Maximum request body size, above the threshold no request body will be collected | Optional, default 512KB |
+Except for topic, namesrvAddr, producerGroup, all others are optional, in most cases only these 3 items need to be configured.
+
+### 2.4.2 Configuring Selectors and Rulers
+
+* For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+In addition, sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and sampling rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+![](/img/shenyu/plugin/logging/logging-option-topic-en.png)
+
+## 2.5 Logging Info
+
+collect request info as follows
+
+| Field Name | Meaning | Description | Remarks |
+|:----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------|:----|
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by RocketMQ
+
+#### 2.6.1.1 Plugin Configuration
+
+Open the plugin and configure rocketmq, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-config-en.png)
+
+#### 2.6.1.2 Selector Configuration
+
+For detailed configuration of selectors and rules, please refer to: [Selector and rule management](../../user-guide/admin-usage/selector-and-rule)。
+
+In addition, sometimes a large gateway cluster corresponds to multiple applications (business), different applications (business) corresponds to different topics, related to isolation,
+then you can configure different topics (optional) and sampling rate (optional) by selector, the meaning of the configuration items as shown in the table above.
+The operation is shown below:
+![](/img/shenyu/plugin/logging/logging-option-topic-en.png)
+
+#### 2.6.1.3 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-rocketmq/log-rule-en.jpg)
+
+#### 2.6.1.4 Request Service
+
+![](/img/shenyu/plugin/logging/logging-rocketmq/call-service.png)
+
+#### 2.6.1.5 Consumption and display of Logging
+
+As each logging platform has differences, such as storage available clickhouse, ElasticSearch, etc., visualization has self-developed or open source Grafana, Kibana, etc..
+Logging-RocketMQ plugin uses RocketMQ to decouple production and consumption, while outputting logs in json format,
+consumption and visualization require users to choose different technology stacks to achieve their own situation.
+
+
+#### 2.6.1.6 Panel Display
+
+Users can choose to visualize the implementation according to their own situation.
+The following shows the effect of `Grafana`:
+[Grafana Sandbox Experience](https://play.grafana.org)
+
+![](/img/shenyu/plugin/logging/grafana-loki-gateway.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingRocketMQ` set Status disable.
+
+![](/img/shenyu/plugin/logging/logging-rocketmq/logging-rocket-disabled-en.jpg)
+
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/logging-tencent-cls.md b/versioned_docs/version-2.6.1/plugin-center/observability/logging-tencent-cls.md
new file mode 100644
index 00000000000..9ab9890d474
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/logging-tencent-cls.md
@@ -0,0 +1,143 @@
+---
+title: Logging-Tencent-Cls Plugin
+keywords: ["Logging"]
+description: logging plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Logging-TencentCls Plugin
+
+## 1.2 Appropriate Scenario
+
+* collect http request information to tencent cls, analysis request information by tencent cls platform.
+
+## 1.3 Plugin functionality
+
+* The gateway receives requests from the client, forwards them to the server, and returns the server results to the client. The gateway can record the details of each request,
+* the plugin records access logs and sends to tencent cls platform.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-logging-tencent-cls`
+
+* Core Class `org.apache.shenyu.plugin.tencent.cls.LoggingTencentClsPlugin`
+* Core Class `org.apache.shenyu.plugin.tencent.cls.client.TencentClsLogCollectClient`
+
+## 1.5 Added Since Which shenyu version
+
+ShenYu 2.5.1
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+- import maven config in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-logging-tencent-cls
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingTencentCls` set Status enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Plugin configuration
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/plugin-config-en.jpg)
+
+| config-item | type | remarks | description |
+|:--------------------|:--------|:-------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| secretId | String | must | secretId |
+| secretKey | String | must | secretKey |
+| endpoint | String | must | host name, example:ap-guangzhou.cls.tencentcs.com |
+| topic | String | optional, default shenyu-topic | topic |
+| sendThreadCount | String | optional, default 1 | Number of core threads for log consumption callback |
+| TotalSizeInBytes | Integer | optional, default 104857600 | The maximum log size that the instance can cache |
+| MaxSendThreadCount | Integer | optional, default 50 | The maximum number of "goroutines" that the client can concurrently |
+| MaxBlockSec | Integer | optional, default 60000 ms | The maximum amount of time the caller can block on the send method if the client is running out of free space. If the required space cannot be satisfied after this time, the send method will throw a TimeoutException. Set this value to a negative number if you want the send method to block until the required space is met |
+| MaxBatchSize | Integer | optional, default 512 * 1024 (512KB) | When the cached log size in a Batch is greater than or equal to batchSizeThresholdInBytes, the batch will be sent, and the maximum size can be set to 5MB |
+| MaxBatchCount | Integer | optional, default 4096 | When the number of logs cached in a batch is greater than or equal to batchCountThreshold, the batch will be sent and the maximum can be set to 40960 |
+| LingerMs | Integer | optional, default 2000 ms | The duration of the batch from the creation to the time it can be sent, the minimum can be set to 100 milliseconds |
+| Retries | Integer | optional, default 10 | If a Batch fails to be sent for the first time, the number of times it can be retried, if the retries is less than or equal to 0, the ProducerBatch will directly enter the failure queue after the first failure of sending |
+| MaxReservedAttempts | Integer | optional, default 11 | Each batch that is attempted to be sent corresponds to an Attemp. This parameter is used to control the number of attempts returned to the user. By default, only the latest 11 attempts are retained. A larger parameter allows you to trace more information, but also consumes more memory |
+| BaseRetryBackoffMs | Integer | optional, default 100 ms | Backoff time for the first retry The client samples the exponential backoff algorithm, and the planned waiting time for the Nth retry is baseRetryBackoffMs * 2^(N-1 |
+| MaxRetryBackoffMs | Integer | optional, default 50 s | Maximum backoff time for retries |
+
+- get `topic`
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/tencent-topic.png)
+
+### 2.4.2 Configuration Selectors and Rules
+
+* Selector and rule Config. Please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule.md).
+
+## 2.5 Logging Info
+
+collect request info as follows
+
+| Field Name | Meaning | Description | Remarks |
+|:----------------------|:---------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------|:--------|
+| clientIp | Client IP | | |
+| timeLocal | Request time string, format: yyyy-MM-dd HH:mm:ss.SSS | | |
+| method | request method (different rpc type is not the same, http class for: get, post wait, rpc class for the interface name) | | |
+| requestHeader | Request header (json format) | | |
+| responseHeader | Response header (json format) | | |
+| queryParams | Request query parameters | | |
+| requestBody | Request Body (body of binary type will not be captured) | | |
+| requestUri | Request uri | | |
+| responseBody | Response body | | |
+| responseContentLength | Response body size | | |
+| rpcType | rpc type | | |
+| status | response status | | |
+| upstreamIp | Upstream (program providing the service) IP | | |
+| upstreamResponseTime | Time taken by the upstream (program providing the service) to respond to the request (ms ms) | | |
+| userAgent | Requested user agent | | |
+| host | The requested host | | |
+| module | Requested modules | | |
+| path | The requested path | | |
+| traceId | Requested Link Tracking ID | Need to access link tracking plugins, such as skywalking,zipkin | |
+
+## 2.6 Examples
+
+### 2.6.1 Collect Http Log by tencent cls platform
+
+#### 2.6.1.1 Plugin Configuration
+
+* Open the plugin and configure tencent-cls, configure it as follows.
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/plugin-config-en.jpg)
+
+#### 2.6.1.2 Selector Configuration
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/tencent-cls-log-selector-en.png)
+
+#### 2.6.1.3 Rule Configuration
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/tencent-cls-log-rule-en.png)
+
+#### 2.6.1.4 Send Request
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/call-service.png)
+
+#### 2.6.1.5 Tencent cls Platform Display
+
+![](/img/shenyu/plugin/logging/logging-tencent-cls/tencent-cls-log.jpg)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `loggingTencentCls` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/observability/metrics-plugin.md b/versioned_docs/version-2.6.1/plugin-center/observability/metrics-plugin.md
new file mode 100644
index 00000000000..131a2344e8a
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/observability/metrics-plugin.md
@@ -0,0 +1,245 @@
+---
+title: Metrics Plugin
+keywords: ["Metrics"]
+description: Metrics plugin
+---
+
+## Description
+
+* Metrics plugin is used to monitor its own running status(JVM-related) by gateway, include request response delay, QPS, TPS, and other related metrics.
+
+## Technical Solutions
+
+* Flow Diagram
+ ![](/img/shenyu/plugin/monitor/shenyu-metrics.png)
+* Make even tracking in ShenYu Gateway by asynchronous or synchronous mode.
+
+* The `prometheus` server pulls metrics' through http request, and then displays it by `Grafana`.
+
+## Plugin Setting
+
+* Introduce `metrics` dependency in the pom.xml file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-metrics
+ ${project.version}
+
+
+```
+
+* modify this config in shenyu gateway yaml
+
+```yml
+shenyu:
+ metrics:
+ enabled: false #false is close, true is open
+ name : prometheus
+ host: 127.0.0.1
+ port: 8090
+ jmxConfig:
+ props:
+ jvm_enabled: true #enable jvm monitoring
+```
+
+## Metrics Detail
+
+* All JVM,thread,memory,and other related information will be made event tracking,you can add a JVM module in the Grafana' panel, and it will be fully displayed, please refer to: https://github.com/prometheus/jmx_exporter
+
+* There are also the following custom `metrics`
+
+### shenyu gateway custom metrics
+
+| Name |type |labels | description |
+|:----------------------------------- |:--------------------- |:------------- |:-------------------- |
+|shenyu_request_total |Counter | none |collecting all requests of Apache ShenYu Gateway |
+|shenyu_request_throw_total |Counter | none |collecting all exception requests of Apache ShenYu Gateway |
+|shenyu_request_type_total |Counter | path,type |collecting all matched requests of monitor|
+|shenyu_execute_latency_millis |histogram | none | ShenYu gateway execute time interval |
+
+
+### jmx metrics
+
+| name | type | labals | help |
+|:-------------------------------:|:-------:|:------:|:--------------------------------------------------------------:|
+| jmx_config_reload_success_total | counter | | Number of times configuration have successfully been reloaded. |
+| jmx_config_reload_failure_total | counter | | Number of times configuration have failed to be reloaded. |
+| jmx_scrape_duration_seconds | gauge | | Time this JMX scrape took, in seconds. |
+| jmx_scrape_error | gauge | | Non-zero if this scrape failed. |
+| jmx_scrape_cached_beans | gauge | | Number of beans with their matching rule cached |
+| jmx_scrape_duration_seconds | gauge | | Time this JMX scrape took, in seconds. |
+| jmx_scrape_error | gauge | | Non-zero if this scrape failed. |
+| jmx_scrape_cached_beans | gauge | | Number of beans with their matching rule cached |
+
+### jvm metrics
+
+#### StandardExports
+
+| name | type | labels | help |
+|:-----------------------------:|:-------:|:------:|:------------------------------------------------------:|
+| process_cpu_seconds_total | counter | | Total user and system CPU time spent in seconds. |
+| process_start_time_seconds | gauge | | Start time of the process since unix epoch in seconds. |
+| process_open_fds | gauge | | Number of open file descriptors. |
+| process_max_fds | gauge | | Maximum number of open file descriptors. |
+| process_virtual_memory_bytes | gauge | | Virtual memory size in bytes. |
+| process_resident_memory_bytes | gauge | | Resident memory size in bytes. |
+
+#### MemoryPoolsExports
+
+| name | type | labels | help |
+|:------------------------------------------:|:-----:|:----------------------:|:-----------------------------------------------------------------:|
+| jvm_memory_objects_pending_finalization | gauge | {area="heap\|nonheap"} | The number of objects waiting in the finalizer queue. |
+| jvm_memory_bytes_used | gauge | {area="heap\|nonheap"} | Used bytes of a given JVM memory area. |
+| jvm_memory_bytes_committed | gauge | {area="heap\|nonheap"} | Committed (bytes) of a given JVM memory area. |
+| jvm_memory_bytes_max | gauge | {area="heap\|nonheap"} | Max (bytes) of a given JVM memory area. |
+| jvm_memory_bytes_init | gauge | {area="heap\|nonheap"} | Initial bytes of a given JVM memory area. |
+| jvm_memory_pool_bytes_used | gauge | {pool} | Used bytes of a given JVM memory pool. |
+| jvm_memory_pool_bytes_committed | gauge | {pool} | Committed bytes of a given JVM memory pool. |
+| jvm_memory_pool_bytes_max | gauge | {pool} | Max bytes of a given JVM memory pool. |
+| jvm_memory_pool_bytes_init | gauge | {pool} | Initial bytes of a given JVM memory pool. |
+| jvm_memory_pool_collection_used_bytes | gauge | {pool} | Used bytes after last collection of a given JVM memory pool. |
+| jvm_memory_pool_collection_committed_bytes | gauge | {pool} | Committed after last collection bytes of a given JVM memory pool. |
+| jvm_memory_pool_collection_max_bytes | gauge | {pool} | Max bytes after last collection of a given JVM memory pool. |
+| jvm_memory_pool_collection_init_bytes | gauge | {pool} | Initial after last collection bytes of a given JVM memory pool. |
+
+#### MemoryAllocationExports
+
+| name | type | labels | help |
+|:-------------------------------------:|:-------:|:------:|:------------------------------------------------------------------------------------------:|
+| jvm_memory_pool_allocated_bytes_total | counter | {pool} | Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously. |
+| | | | |
+| | | | |
+
+#### BufferPoolsExports
+
+| name | type | labels | help |
+|:------------------------------:|:-----:|:------:|:------------------------------------------:|
+| jvm_buffer_pool_used_bytes | gauge | {pool} | Used bytes of a given JVM buffer pool. |
+| jvm_buffer_pool_capacity_bytes | gauge | {pool} | Bytes capacity of a given JVM buffer pool. |
+| jvm_buffer_pool_used_buffers | gauge | {pool} | Used buffers of a given JVM buffer pool. |
+
+#### GarbageCollectorExports
+
+| name | type | labels | help |
+|:-------------------------:|:-------:|:------:|:-------------------------------------------------------:|
+| jvm_gc_collection_seconds | summary | {gc} | Time spent in a given JVM garbage collector in seconds. |
+
+#### ThreadExports
+
+| name | type | labels | help |
+|:------------------------------:|:-------:|:-------:|:------------------------------------------------------------------------------------------------------:|
+| jvm_threads_current | gauge | | Current thread count of a JVM |
+| jvm_threads_daemon | gauge | | Daemon thread count of a JVM |
+| jvm_threads_peak | gauge | | Peak thread count of a JVM |
+| jvm_threads_started_total | counter | | Started thread count of a JVM |
+| jvm_threads_deadlocked | gauge | | Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers |
+| jvm_threads_deadlocked_monitor | gauge | | Cycles of JVM-threads that are in deadlock waiting to acquire object monitors |
+| jvm_threads_state | gauge | {state} | Current count of threads by state |
+
+#### ClassLoadingExports
+
+| name | type | labels | help |
+|:--------------------------:|:-------:|:------:|:---------------------------------------------------------------------------------------:|
+| jvm_classes_loaded | gauge | | The number of classes that are currently loaded in the JVM |
+| jvm_classes_loaded_total | counter | | The total number of classes that have been loaded since the JVM has started execution |
+| jvm_classes_unloaded_total | counter | | The total number of classes that have been unloaded since the JVM has started execution |
+
+#### VersionInfoExports
+
+| name | type | labels | help |
+|:----:|:----:|:---------------------------------------------------------------------------------:|:---------------:|
+| jvm | info | {version(java.runtime.version),vendor(java.vm.vendor),runtime(java.runtime.name)} | VM version info |
+
+
+## Collect metrics
+
+Users need to install `Prometheus` service to collect
+
+### Install Prometheus in windows
+
+* Choose the corresponding environment [download address](https://prometheus.io/download/) to install
+* Modify configuration file: `prometheus.yml`
+
+ ```yaml
+ scrape_configs:
+ - job_name: 'Apache ShenYu'
+ # metrics_path defaults to '/metrics'
+ # scheme defaults to 'http'.
+ static_configs:
+ - targets: ['localhost:8090'] # metrics of apache shenyu are exposed on port 8090 by default
+ ```
+
+* After the configuration is completed, you can directly double-click `prometheus.exe` in the window to start. The default boot port is `9090`,check `status`->`Targets` . Success can be verified at http://localhost:9090/
+
+![](/img/shenyu/monitor/request-metric-6.png)
+
+### Install Prometheus in the macOS
+
+* Install prometheus with brew,After installation `prometheus` is in the `Cellar` folder under `homebrew`。
+
+```
+brew install prometheus
+```
+
+* Execute the following command in the location of the prometheus.yml file to start prometheus。
+
+```
+prometheus --config.file=prometheus.yml &
+```
+
+Visit `http://localhost:9090/` to verify that it starts normally。
+
+
+## Panel Display
+
+It is recommended to use `Grafana`, Users can customize the query to personalize the display panel.
+
+Here's how to install and deploy `Grafana`
+
+### Install Grafana in windows
+
+* Install Grafana
+
+[download](https://dl.grafana.com/oss/release/grafana-7.4.2.windows-amd64.zip) Unzip it and enter the `bin` directory and `double-click` `grafana-server.exe` to run it. Go to http://localhost:3000/?orgId=1 `admin/admin` to verify the success
+
+### Install Grafana in macOS
+
+* Install grafana using brew.
+
+```
+brew install grafana
+```
+
+* Start grafana as a service
+
+```
+brew services start grafana
+```
+
+Visit `http://localhost:3000/` to verify that it starts normally.
+
+### View monitoring data with Grafana
+
+* Configure the data source, select prometheus, note that the data source name is prometheus.
+
+![](/img/shenyu/monitor/request-metric-7.png)
+
+![](/img/shenyu/monitor/request-metric-8.png)
+
+* Config Custom Metric Dashboard `request_total`、`http_request_total`
+
+Click `Create` - `Import` and enter the [panel config json](https://shenyu.apache.org/img/shenyu/monitor/request_metric_dashboard.json)
+
+The final custom HTTP request monitoring panel looks like this:
+
+![](/img/shenyu/monitor/request-metric-1.png)
+
+![](/img/shenyu/monitor/request-metric-2.png)
+
+![](/img/shenyu/monitor/request-metric-3.png)
+
+![](/img/shenyu/monitor/request-metric-4.png)
+
+![](/img/shenyu/monitor/request-metric-5.png)
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/_category_.json b/versioned_docs/version-2.6.1/plugin-center/proxy/_category_.json
new file mode 100644
index 00000000000..09c6722ca65
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Proxy",
+ "position": 2
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/divide-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/divide-plugin.md
new file mode 100644
index 00000000000..5afd38ac67c
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/divide-plugin.md
@@ -0,0 +1,145 @@
+---
+title: Divide Plugin
+keywords: ["divide"]
+description: divide plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* `divide` Plugin
+
+## 1.2 Appropriate Scenario
+
+* Handling `http protocol` requests.
+* Support traffic management, such as a/b test, grayscale test.
+* Service Load Balancing.
+* Set request timeout.
+
+## 1.3 Plugin functionality
+
+* Supports traffic management based on request information such as uri, header, and query.
+* Supports setting the load balancing strategy for requests, and supports service warm-up. Currently, three strategies are supported: ip hash (consistent hash with virtual nodes), round-robbin (weighted polling), random (weighted random).
+* Supports setting the maximum value of the request header, the maximum value of the request body, and the request level timeout.
+* Supports setting the timeout retry policy and the number of retries. Currently, the retry policy supports: current (retrying the server that failed before) and failover (retrying other servers).
+
+## 1.4 Plugin Code
+
+* Core module is ```shenyu-plugin-divide```.
+* Core class is ```org.apache.shenyu.plugin.divide.DividePlugin```.
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/divide/procedure-en.png)
+
+## 2.2 Import pom
+
+- Import maven in shenyu-bootstrap project's `pom.xml` file.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-gateway
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `divide` set Status enable.
+
+![](/img/shenyu/plugin/divide/enable-en.png)
+
+## 2.4 Config plugin
+
+### 2.4.1 Configure access parameters in the client project configuration file
+
+* Client access method and server address. The following example uses the http access method. Currently, the client supports the following access methods: http, zookeeper, etcd, nacos, consul. For detailed access configuration parameters, please refer to [Client Access Configuration](docs/user-guide/property-config/register-center-access.md).
+* Client configuration, including the protocol name and the routing address of the service, please use the http protocol here, and the value of contextPath must be configured as the routing address of each service.
+
+```yaml
+ shenyu:
+ register:
+ registerType: http
+ serverLists: http://localhost:9095
+ props:
+ username: admin
+ password: 123456
+ client:
+ http: # http protocol
+ props:
+ contextPath: /http # routing address for each service
+```
+
+### 2.4.2 Configure upstream validity detection parameters in the shenyu-admin configuration file
+
+The following example uses the http access method. Currently, the client supports the following access methods: http, zookeeper, etcd, nacos, consul. For detailed access configuration parameters, please refer to [Client Access Configuration](docs/user-guide/property-config/register-center-access.md).
+> Only http-type registries support upstream detection.
+
+```yaml
+ shenyu:
+ register:
+ registerType: http # Only http-type register center support upstream detection.
+ serverLists:
+ props:
+ checked: true # The default is true, set to false, do not detect.
+ zombieCheckTimes: 5 # The maximum number of zombie upstream detections. If it exceeds 5 times, its validity will no longer be detected. The default value is 5.
+ scheduledTime: 10 # Timing detection interval, the default is 10 seconds.
+ zombieRemovalTimes: 60 # How many seconds the upstream is offline to be considered as a zombie upstream, the default is 60 seconds.
+```
+
+### 2.4.3 Configure the selector and rule information of the divide plugin in shenyu-admin
+
+After the client is started, the [selector and rule](../../user-guide/admin-usage/selector-and-rule) information will be automatically registered in shenyu-admin -> Plugin List -> Proxy -> Divide.
+
+![](/img/shenyu/plugin/divide/select-and-rule-en.png)
+
+#### 2.4.3.1 Selector configuration
+
+Example of divide selector. For general selector configuration, please refer to [Selectors and Rules](../../user-guide/admin-usage/selector-and-rule).
+
+![](/img/shenyu/plugin/divide/selector-en.png)
+
+##### 2.4.3.1.1 Selector handling information configuration
+
+- `host`: fill in `localhost`, this field is not used currently.
+- `ip:port`: `ip` and port, fill in the `ip` + port of your real service here.
+- `protocol`: `http` protocol, fill in `http:` or `https:`, if not fill in, the default is: `http:`.
+- `startupTime`: Startup time in milliseconds.
+- `weight`: load balancing weight, the default value of service startup automatic registration is 50.
+- `warmupTime`: Warmup time, in milliseconds. The server during warmup will calculate the instantaneous weight, and the calculated value will be smaller than the actual configured weight to protect the server just started. The default value of service startup registration is 10. For example, the warm-up time is 100 milliseconds, the current startup is 50 milliseconds, the configured weight is 50, and the actual weight is 25.
+- `status`: On or off, this selector is valid only in the on state.
+
+#### 2.4.3.2 Processing information configuration of rules
+
+Example of divide rule. For general rule configuration, please refer to [selectors and rules](../../user-guide/admin-usage/selector-and-rule).
+
+![](/img/shenyu/plugin/divide/rule-en.png)
+
+##### 2.4.3.2.1 Rule processing information configuration
+
+- `loadStrategy`: If the `http` client is a cluster, which load balancing strategy is used when the `Apache ShenYu` gateway is called, currently supports `roundRobin`, `random` and `hash`.
+- `timeout`: The timeout for calling the `http` client.
+- `retry Count`: The number of retries that failed to call the `http` client timeout.
+- `headerMaxSize`: The maximum value of the requested `header`.
+- `requestMaxSize`: The maximum value of the request body.
+- `retryStrategy`: Supported since `2.4.3`, retry strategy after failure, default `current` to maintain compatibility with lower versions. For example, there are 3 downstream services `http:localhost:1111`, `http:localhost:1112` and `http:localhost:1113`, assuming the first load balancing to `http:localhost:1111` and `call failed`. Using the `current` strategy will continue to retry calling `http:localhost:1111`; using the `failover` strategy will retry calling other services such as `http:localhost:1112` through the `load balancing`, if it fails again at this time , call to `http:localhost:1113` until no service is available.
+
+## 2.5 Examples
+
+### 2.5.1 Example A/B Test
+
+To be added, welcome contribute.
+
+### 2.5.2 Example Grayscale Test
+
+To be added, welcome contribute.
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `divide` set Status disable.
+
+![](/img/shenyu/plugin/divide/disable-en.png)
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/dubbo-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/dubbo-plugin.md
new file mode 100644
index 00000000000..0789ee9690e
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/dubbo-plugin.md
@@ -0,0 +1,137 @@
+---
+title: Dubbo Plugin
+keywords: ["dubbo"]
+description: dubbo plugin
+---
+
+## Explanation
+
+* Dubbo is a plugin that converts `http protocol` into `Dubbo protocol` and it is also the key for gateway to realize dubbo generic service.
+* Dubbo plugin needs to cooperate with metadata to realize dubbo calls.
+* Apache Dubbo and Alibaba Dubbo users both use the same plugin.
+
+## Plugin Setting
+
+* Add related dependencies and enable plugin, please refer to: [Quick start with Dubbo](../../quick-start/quick-start-dubbo) .
+
+* `Dubbo` client access, please refer to: [Dubbo Proxy](../../user-guide/proxy/dubbo-proxy.md) .
+
+* Set selector and rule, please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) .
+
+* Since `version 2.4.3`, the new fields and meanings of the dubbo plugin:
+
+
+
+ * `corethreads`:The number of core threads in the business thread pool。
+
+ * `queues`:The length of the blocking queue of the business thread pool, 0 means `unbounded blocking queue`。
+
+ * `threadpool`:There are five types of business thread pools: `fixed`, `eager`, `cached`, `limited` and `shared`. The first 4 types correspond to the thread pools officially provided by dubbo. Let's talk about `shared`, as its name implies, `all proxy plugins` share a `shared` thread pool, the advantage of this is that it can reduce the number of thread pools, thereby reducing memory and improving resource utilization。
+
+ * `threads`:The maximum number of threads in the business thread pool。
+
+## Plugin Detail
+
+After the client accesses the `ShenYu` gateway, it will automatically register the selector and rule information. For details about the selector and rule configuration, see [Selector and Rule Config](../../user-guide/admin-usage/selector-and-rule) .
+
+#### Selector Handler
+
+
+
+Selector Handler, the `handle` field, is an operation that can be processed by the gateway after matching the traffic. For more information, please refer to [Plugin handle management](../plugin-handle-explanation) in Plugin Config.
+
+* details:
+
+ * `host`:host string.
+
+ * `ip:port`:ip+port string.
+
+ * `protocol`:protocol default is 'http'.
+
+ * `group`:the group of dubbo service.
+
+ * `version`:the version of dubbo service.
+
+ * `weight`:the server instance and participate in load balancing calculation.
+
+ * `warmupTime`:the server's warm up time and and participate in load balancing calculation.
+
+ * `startupTime`:the server's start time.
+
+ * `status`:true: the server is available,false: the server is unavailable.
+
+ * `gray`:enable gray routing.
+
+Gray routing
+
+if you want to user gray route in dubbo-plugin, you can click the `gray` button.
+
+* Gray level publishing can customize and control the traffic proportion of new version applications when publishing new version applications, gradually complete the full launch of new version applications, maximize the business risk caused by new version publishing, reduce the impact surface caused by faults, and support rapid roll back.
+
+when the gray is open,Gateway load balancing will select one node from the current node list for routing and you can modify node weights to change the weight of nodes in the load balancing algorithm.
+It should be noted that,if your business instance not use the client jar of 'shenyu-client-apache-dubbo' or 'shenyu-client-alibaba-dubbo', You should add gray node information manually on this selector page.
+
+#### Rule Handler
+
+
+
+Rule Handler, the `handle` field, can be performed by the gateway after the final matching of traffic. For more information, please refer to [Plugin handle management](../plugin-handle-explanation) in Plugin Config.
+
+* details:
+
+ * `loadbalance`:the loadbalance of dubbo service, if the gray node selection fails, the default load balancing method will be used.
+
+* Apache ShenYu will obtain the real IP of the corresponding service and initiate rpc proxy calls from registration center of dubbo.
+
+
+## Metadata
+
+* Every dubbo interface method corresponds to a piece of metadata, which can be found in `shenyu-admin` --> BasicConfig -> Metadata .
+
+
+
+* AppName: The name of the application to which this piece of metadata belongs.
+
+* MethodName: The name of the method that needs to be called.
+
+* Path: your http request path.
+
+* PathDescribe: Description of the path, for easy viewing.
+
+* ParamsType: List of parameter types of dubbo interface, there are two declaration methods here:
+ e.g. we have an interface `update(Integer id, String name, Integer age)`
+
+ * Type list
+
+ ```yaml
+ java.lang.Integer,java.lang.String,java.lang.Integer
+ ```
+
+ * According to the order of the parameter types of the interface, separated by `,`
+
+ * When requesting to pass parameters, **the parameters must be passed in strictly in accordance with the order of the parameter types**, if a parameter without value use `null` as a placeholder.
+
+ Request body example: `{"id":1,"name": null,"age":18}`
+
+ * Name mapping
+
+ ```yaml
+ {"id":"java.lang.Integer","name":"java.lang.String","age":"java.lang.Integer"}
+ ```
+
+ * Use `"parameter name":"parameter type"` to represent a parameter, set in order of interface parameter type, separated by `,`
+
+ * No need to pay attention to the order when requesting, and no need to use null placeholders.
+
+ Request body example: `{"name":"Mike","id":1}`
+
+* RpcExpand: corresponding to some configurations of dubbo interface; If you want to adjust, please modify here, which support json format like the following fields:
+
+```yaml
+{"timeout":10000,"group":"",version":"","loadbalance":"","retries":1}
+```
+
+* Interface: The fully-qualified name for dubbo interface .
+
+* RpcType: Choose `dubbo` .
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/grpc-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/grpc-plugin.md
new file mode 100644
index 00000000000..85a298e66c1
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/grpc-plugin.md
@@ -0,0 +1,81 @@
+---
+title: gRPC Plugin
+keywords: ["grpc-plugin"]
+description: grpc-plugin
+---
+
+
+## Description
+
+* The grpc plugin is a plugin that converts the Http protocol into the grpc protocol.
+
+
+## Plugin Setting
+
+* Add related dependencies and enable plugin, please refer to: [Quick start with gRPC](../../quick-start/quick-start-grpc) .
+
+* `gRPC` client access, please refer to: [gRPC Proxy](../../user-guide/proxy/grpc-proxy.md) .
+
+* New fields and meanings of grpc plugin since `2.4.3`:
+
+ * `threadpool`:There are two types of business thread pools, `cached` and `shared`.
+
+ `cached` is equivalent to the default thread pool officially provided by grpc;
+
+ `shared` thread pool, just as its name, `all proxy plugins` share a `shared` `Thread pool, the advantage of doing this is that it can reduce the number of thread pools, thereby reducing memory and improving resource utilization.
+
+
+## Plugin Detail
+
+
+After the client accesses the `Apache ShenYu` gateway, it will automatically register the selector and rule information. You can see it in PluginList -> rpc proxy -> grpc. For details about the selector and rule configuration, see [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) .
+
+
+#### Selector Handler
+
+
+
+
+Selector Handler, the `handle` field, is the processing operation that the gateway can perform after matching the traffic.
+
+
+* config details:
+
+ * `ip:port`:enter the ip:port of your real service .
+
+ * `protocol`:indicates the Http protocol. Generally, the value is `http://` or `https://`. If the value is not specified, the default value is `http://` .
+
+ * `weight`:service weight.
+
+ * `status`:open or close.
+
+
+## Metadata
+
+Each `grpc` interface method, will correspond to a metadata, when the `grpc` application client access to the `Apache ShenYu` gateway, will be automatically registered, can be viewed in the `shenyu-admin` background management system of the BasicConfig --> Metadata management.
+
+
+
+
+* AppName: specifies the name of the application to which the metadata belongs.
+
+* MethodName: the name of the method to call.
+
+* Path: http request path.
+
+* PathDescribe: the description of the path is easy to view.
+
+* ParamsType: the parameters are separated by commas (,) in the order of interface parameter types.
+
+* RpcExpand: other configurations of the `grpc` interface, which support the `JSON` format, are as follows:
+
+```json
+{
+ "timeout": 5000,
+ "methodType": "SERVER_STREAMING"
+}
+```
+
+* Interface: The fully qualified class name of the `grpc` interface.
+
+* RpcType:choose `grpc`.
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/motan-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/motan-plugin.md
new file mode 100644
index 00000000000..e94e497c266
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/motan-plugin.md
@@ -0,0 +1,68 @@
+---
+title: Motan Plugin
+keywords: ["motan-plugin"]
+description: motan-plugin
+---
+
+
+## Description
+
+* The motan plugin is a plugin that converts the Http protocol into the motan protocol.
+
+
+## Plugin Setting
+
+* Add related dependencies and enable plugin, please refer to: [Quick start with Motan](../../quick-start/quick-start-motan) .
+
+* `Motan` client access, please refer to: [Motan Proxy](../../user-guide/proxy/motan-proxy.md) .
+
+
+
+## Plugin Detail
+
+After the client accesses the `Apache ShenYu` gateway, it will automatically register the selector and rule information.
+
+You can see it in PluginList -> rpc proxy -> motan. For details about the selector and rule configuration, see [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) .
+
+## Metadata
+
+Each `motan` interface method, will correspond to a metadata, when the `motan` application client access to the `Apache ShenYu` gateway, will be automatically registered, can be viewed in the `shenyu-admin` background management system of the BasicConfig --> Metadata management.
+
+
+
+
+* AppName: specifies the name of the application to which the metadata belongs.
+
+* MethodName: the name of the method to call.
+
+* Path: http request path.
+
+* PathDescribe: the description of the path is easy to view.
+
+* ParamsType: the parameters are separated by commas (,) in the order of interface parameter types.
+
+* RpcExpand: description of each interface in a `motan` service. For example, here is the interface information for the `motan` service:
+
+
+
+```json
+{
+ "methodInfo": [
+ {
+ "methodName": "hello",
+ "params": [
+ {
+ "left": "java.lang.String",
+ "right": "name"
+ }
+ ]
+ }
+ ],
+ "group": "motan-shenyu-rpc"
+}
+```
+
+
+* Interface: The fully qualified class name of the `motan` interface.
+
+* RpcType:choose `motan`.
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/mqtt-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/mqtt-plugin.md
new file mode 100644
index 00000000000..07f49b2f40d
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/mqtt-plugin.md
@@ -0,0 +1,46 @@
+---
+title: Mqtt Plugin
+keywords: ["Mqtt"]
+description: Mqtt access shenyu gateway
+---
+
+## Description
+
+* After the plugin is used, it will give the ability of mqtt.
+
+## Introducing Plugin Support of Mqtt Gateway
+
+* Introducing those dependencies in the pom.xml file of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-mqtt
+ ${project.version}
+
+```
+
+## Plugin Setting
+
+* port: MQTT BS port designation.
+
+* bossGroupThreadCount: default 1.
+
+* maxPayloadSize: Maximum packet size.
+
+* workerGroupThreadCount: default 12.
+
+* username: default shenyu.
+
+* password: default shenyu.
+
+* isEncryptPassword: The default is false , whether to encrypt the password.
+
+* encryptMode: encryption mode, currently only MD5 is implemented, the encryption mode can be customized, `org.apache.shenyu.protocol.mqtt.utils.EncryptUtil` view the implementation of this encryption class.
+
+* leakDetectorLevel: default DISABLED, resource target detection or detection level.
+
+## Notice
+
+* Mqtt does not have selector and ruler configurations.
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/sofa-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/sofa-plugin.md
new file mode 100644
index 00000000000..b0b86cc58a8
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/sofa-plugin.md
@@ -0,0 +1,213 @@
+---
+title: Sofa Plugin
+keywords: ["sofa"]
+description: Sofa Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin name
+
+- Sofa plugin
+
+## 1.2 Appropriate scenario
+
+- Protocol conversion, a plugin that converts http protocol requests into the sofa framework protocol
+- Service Load Balancing.
+
+## 1.3 Plugin functionality
+
+- Converting http protocol requests to sofa framework protocol.
+
+## 1.4 Plugin code
+
+- Core Module `shenyu-plugin-sofa`
+- Core Class `org.apache.shenyu.plugin.sofa.SofaPlugin`
+
+## 1.5 Added since which shenyu version
+
+- 2.3.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![image-20220828222022336](/img/shenyu/plugin/sofa/procedure_chart_en.png)
+
+## 2.2 Import pom
+
+```xml
+
+ com.alipay.sofa
+ rpc-sofa-boot-starter
+ ${rpc-sofa-boot-starter.version}
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-sofa
+ ${project.version}
+
+
+ guava
+ com.google.guava
+
+
+
+```
+
+## 2.3 Configure in the client project
+
+1. Configure the sofa configuration in application.yml.
+
+```yaml
+com:
+ alipay:
+ sofa:
+ rpc:
+ registry-address: zookeeper://127.0.0.1:2181 # consul # nacos
+ bolt-port: 8888
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ sofa:
+ props:
+ contextPath: /sofa
+ ipAndPort: sofa
+ appName: sofa
+ port: 8888
+```
+
+2. Configure the service interface exposed by the sofa service in the xml file in the resources directory.
+
+```xml
+
+
+
+
+
+
+
+
+
+
+```
+
+3. Add the `@ShenyuSofaClient` annotation to the interface.
+
+```java
+@ShenyuSofaClient("/demo")
+@Service
+public class SofaClientMultiParamServiceImpl implements SofaClientMultiParamService {
+
+ @Override
+ @ShenyuSofaClient("/findByIdsAndName")
+ public SofaSimpleTypeBean findByIdsAndName(final List ids, final String name) {
+ return new SofaSimpleTypeBean(ids.toString(), "hello world shenyu sofa param findByIdsAndName :" + name);
+ }
+}
+```
+
+## 2.4 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `sofa` set Status enabled.
+
+ ![image-20220829193836286](/img/shenyu/plugin/sofa/enable_sofa_en.png)
+
+
+## 2.5 Config plugin
+
+### 2.5.1 Registry Config
+
+![image-20220829193913149](/img/shenyu/plugin/sofa/sofa_registry_en.png)
+
+- `protocol`: Register center protocol, currently supports zookeeper、consul、nacos.
+- `register`: The service IP and PORT of the registry.
+- `threadpool`:There are five types of business thread pools: `fixed`, `eager`, `cached`, `limited` and `shared`. The first 4 types correspond to the thread pools officially provided by dubbo. Let's talk about `shared`, as its name implies, `all proxy plugins` share a `shared` thread pool, the advantage of this is that it can reduce the number of thread pools, thereby reducing memory and improving resource utilization.
+- `corethreads`:The number of core threads in the business thread pool.
+- `threads`:The maximum number of threads in the business thread pool.
+- `queues`:The length of the blocking queue of the business thread pool, 0 means `unbounded blocking queue`.
+
+### 2.5.2 Selector config
+
+> Flow needs to be matched by selector.
+
+![image-20220829193948830](/img/shenyu/plugin/sofa/selector_config_en.png)
+
+- Automatically configure the selector with the `@ShenyuSofaClient` annotation.
+
+### 2.5.3 Rule Config
+
+> After the traffic has been successfully matched by the selector, it will enter the rules for the final traffic matching.
+
+![image-20220829194018202](/img/shenyu/plugin/sofa/rule_config_en.png)
+
+- Automatically configure the selector with the `@ShenyuSofaClient` annotation.
+
+### 2.5.4 Metadata config
+
+> When the `sofa` application client accesses the `Apache ShenYu` gateway, it will be automatically registered, and can be viewed in the `-shenyu-admin` backend management system's basic configuration `-->` metadata management, each `sofa` interface method, will correspond to a metadata.
+
+![image-20220829194058044](/img/shenyu/plugin/sofa/metadata_config_en.png)
+
+- AppName: specifies the name of the application to which the metadata belongs.
+
+- MethodName: the name of the method to call.
+
+- Path: http request path.
+
+- PathDescribe: the description of the path is easy to view.
+
+- ParamsType: the parameters are separated by commas (,) in the order of interface parameter types.
+
+- RpcExpand: other configurations of the `sofa` interface, which support the `JSON` format.
+
+ examples:`{"loadbalance":"hash","retries":3,"timeout":-1}`
+
+ - `loadbalance`:Load balancing policy, currently supports roundRobin, random and hash.
+ - `retries`:Number of retries to call client timeout failures.
+ - `timeout`:Calling the client's timeout time.
+
+- Interface: The fully qualified class name of the `sofa` interface.
+
+- RpcType:choose `sofa`.
+
+## 2.6 Examples
+
+### 2.6.1 Accessing the sofa service via Zookeeper using ShenYu
+
+#### 2.6.1.1 Preparation
+
+- Start `Zookeeper` service.
+- Start `ShenYu Admin`.
+- Start `Shenyu Bootstrap`.
+
+#### 2.6.1.2 Plugin Config
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `sofa` set Status enabled, And adjust the registry configuration as needed.
+- Adjust to the actual situation [shenyu-examples-sofa](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sofa) application.yml configuration in the project and start it.
+
+#### 2.6.2.6 Request service and check result
+
+![image-20220828012420068](/img/shenyu/plugin/sofa/check_request_zh.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `sofa` set Status disable.
+
+![image-20220829194151368](/img/shenyu/plugin/sofa/close_sofa_en.png)
+
+
+
+
+
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/spring-cloud-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/spring-cloud-plugin.md
new file mode 100644
index 00000000000..82412c203c3
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/spring-cloud-plugin.md
@@ -0,0 +1,317 @@
+---
+title: Spring Cloud Plugin
+keywords: ["SpringCloud"]
+description: SpringCloud Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* SpringCloud Plugin
+
+## 1.2 Appropriate Scenario
+
+* transform http to springcloud
+* springcloud gray flow control
+
+## 1.3 Plugin functionality
+
+* transform http protocol into springCloud protocol.
+
+## 1.4 Plugin code
+
+* Core Module `shenyu-plugin-springcloud`
+
+* Core Class `org.apache.shenyu.plugin.springcloud.SpringCloudPlugin`
+
+## 1.5 Added Since Which shenyu version
+
+Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+* Add related dependencies and enable plugin, please refer to: [Quick start with Spring Cloud](../../quick-start/quick-start-springcloud) .
+
+* `Spring Cloud` client access, please refer to: [Spring Cloud Proxy](../../user-guide/proxy/spring-cloud-proxy.md) .
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Eureka Registry
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-springcloud
+ ${project.version}
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+ ${eureka-client.version}
+
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+ ${spring-cloud-commons.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-httpclient
+ ${project.version}
+
+```
+
+* Nacos Registry
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-springcloud
+ ${project.version}
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+ ${nacos-discovery.version}
+
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+ ${spring-cloud-commons.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-httpclient
+ ${project.version}
+
+```
+
+## 2.3 Config SpringCloud in ShenYu-Boostrap
+
+### 2.3.1 Config SpringCloud Registry With Eureka
+
+```yaml
+spring:
+ cloud:
+ discovery:
+ enabled: true
+
+eureka:
+ client:
+ enabled: true
+ serviceUrl:
+ defaultZone: http://localhost:8761/eureka/
+ instance:
+ prefer-ip-address: true
+```
+
+### 2.3.2 Config SpringCloud Registry With Nacos
+
+```yaml
+spring:
+ cloud:
+ discovery:
+ enabled: true
+ nacos:
+ discovery:
+ server-addr: 127.0.0.1:8848 # Spring Cloud Alibaba Dubbo use this.
+ enabled: true
+ namespace: ShenyuRegisterCenter
+```
+
+### 2.3.3 Config SpringCloud LoadBalancer
+
+> *Notice*
+>
+> After ShenYu 2.5.0(include), ShenYu use `shenyu-loadbalancer` as loadbalancer client, you just config loadbalance in springcloud plugin rule.
+> if you don't config loadbalance, springcloud plugin will use `roundRobin` algorithm.
+>
+> Before ShenYu 2.4.3(include), ShenYu use `Ribbon` as loadbalancer client, you must config loadbalancer as follows.
+
+```yaml
+spring:
+ cloud:
+ loadbalancer:
+ ribbon:
+ enabled: true
+```
+
+## 2.4 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `springCloud` set Status enabled.
+
+
+
+## 2.5 Config plugin
+
+### 2.5.1 Plugin config
+
+* you must config springcloud registry and set springcloud plugin enabled.
+
+### 2.5.2 Selector And Gray Config
+
+![](/img/shenyu/plugin/springcloud/selector_en_2.png)
+
+* Gray routing
+
+if you want to user gray route in springCloud-plugin, you can click the `gray` button.
+
+![](/img/shenyu/plugin/springcloud/gray_en_2.png)
+
+* Gray level publishing can customize and control the traffic proportion of new version applications when publishing new version applications, gradually complete the full launch of new version applications, maximize the business risk caused by new version publishing, reduce the impact surface caused by faults, and support rapid roll back.
+
+when the gray is open,Gateway load balancing will select one node from the current node list for routing and you can modify node weights to change the weight of nodes in the load balancing algorithm.
+
+
+
+It should be noted that,if your business instance not use the client jar of `shenyu-client-springcloud`, You should add gray node information manually on this selector page.
+
+* `serviceId`: your springcloud service id
+
+* `gray`:enable gray routing.
+
+ * `protocol`: protocol default is 'http://'.
+
+ * `upstreamUrl`: the server instance host, ip:port.
+
+ * `weight`: the server instance and participate in load balancing calculation.
+
+ * `status`: true: the server is available,false: the server is unavailable.
+
+ * `timestamp`: the server's start time.
+
+ * `warmup`: the server's warm up time and and participate in load balancing calculation.
+
+### 2.5.3 Rule Config
+
+Rule Handler, the `handle` field, can be performed by the gateway after the final matching of traffic. For more information, please refer to [Plugin handle management](../plugin-handle-explanation) in Plugin Config.
+
+* use `shenyu-client-springcloud` rule config
+
+![](/img/shenyu/plugin/springcloud/rule_en_2.png)
+
+* details:
+
+ * `timeout`:set time out.
+ * `loadbalance`:loadbalance algorithm,there are three options: `roundRobin`,`random`,`hash`
+
+* not use `shenyu-client-springcloud` rule config
+
+![](/img/shenyu/plugin/springcloud/rule_en.png)
+
+* details:
+
+ * `path`:request path.
+ * `timeout`:set time out.
+
+### 2.5.4 SpringCloud ServiceInstance Cache Config
+
+you can config springcloud serviceInstance cache in `shenyu-bootstrap.yml` as follows.
+
+```yaml
+shenyu:
+ springCloudCache:
+ enabled: false
+```
+
+this config will help you get serviceInstance from springcloud registry every heartbeat time(listen to spring cloud heartbeat event)
+
+* when you use nacos or eureka as registry, you can config springcloud serviceInstance cache to `false`.
+* when you use zookeeper or consul as registry, you can config springcloud serviceInstance cache to `true`.
+
+## 2.6 Examples
+
+### 2.6.1 Use ShenYu Request SpringCloud Service
+
+#### 2.6.1.1 Preparation
+
+- Start `Eureka` or `Nacos` Registry, if you use eureka, start `shenyu-examples-eureka` in `shenyu-example`
+- Start `ShenYu Admin` application
+- Start `shenyu-examples-springcloud`
+
+#### 2.6.1.2 Plugin Config
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `springCloud` set Status enabled.
+
+- Config SpringCloud Registry in `ShenYu Bootstrap`, please read [2.3 Config SpringCloud in ShenYu-Boostrap](#2.3 Config SpringCloud in ShenYu-Boostrap)
+
+#### 2.6.1.3 Selector Config
+
+![](/img/shenyu/plugin/springcloud/selector_en_2.png)
+
+if your want to use gray flow and the gray flow have registered to `ShenyYu`, you must config gray upstream as follows.
+
+![](/img/shenyu/plugin/springcloud/gray_en_2.png)
+
+#### 2.6.1.4 Rule Config
+
+if you use `shenyu-client-springcloud` register service to `ShenYu`, you don't config rule, if you want to change rule config,
+please read [2.5.3 Rule Config](#2.5.3 Rule Config)
+
+#### 2.6.1.5 Request SpringCloud Service and Check Result
+
+![](/img/shenyu/plugin/springcloud/springcloud-request.png)
+
+### 2.6.2 Use ShenYu Request Unregistered SpringCloud Service
+
+#### 2.6.2.1 Preparation
+
+- Start `Eureka` or `Nacos` Registry, if you use eureka, start `shenyu-examples-eureka` in `shenyu-example`
+- Start `ShenYu Admin` application
+- Start `shenyu-examples-springcloud`
+
+#### 2.6.2.2 Plugin Config
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `springCloud` set Status enabled.
+
+- Config SpringCloud Registry in `ShenYu Bootstrap`, please read [2.3 Config SpringCloud in ShenYu-Boostrap](#2.3 Config SpringCloud in ShenYu-Boostrap)
+
+#### 2.6.2.3 Selector Config
+
+![](/img/shenyu/plugin/springcloud/selector_en_2.png)
+
+if your want to use gray flow and the gray flow unregister to `ShenyYu`, you must config gray upstream as follows.
+
+![](/img/shenyu/plugin/springcloud/gray_en_2.png)
+
+#### 2.6.2.4 Rule Config
+
+![](/img/shenyu/plugin/springcloud/rule_en.png)
+
+you must config `path` in rule config, `path` is your service uri, for example: `/springcloud/new/feature/gateway/not`,
+`timeout` is your service allow timeout.
+
+#### 2.6.2.5 Access Unregistered Services Through Configuration
+
+##### 2.6.2.5.1 use the field `rpc_type` in http request header
+
+```
+### shengyu getway proxy not support
+POST http://localhost:9195/springcloud/new/feature/gateway/not
+Accept: application/json
+Content-Type: application/json
+rpc_type: springCloud
+```
+
+##### 2.6.2.5.2 add meta_data in ShenYu Admin
+
+![](/img/shenyu/plugin/springcloud/springcloud_metadata_en.png)
+
+#### 2.6.2.6 Request SpringCloud Service and Check Result
+
+![](/img/shenyu/plugin/springcloud/springcloud-request-unregistered.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `springCloud` set Status disable.
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/tars-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/tars-plugin.md
new file mode 100644
index 00000000000..fd9c3628b02
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/tars-plugin.md
@@ -0,0 +1,170 @@
+---
+title: Tars Plugin
+keywords: ["Tars"]
+description: Tars Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin name
+
+- Tars plugin
+
+## 1.2 Appropriate scenario
+
+- Protocol conversion, a plugin that converts http protocol requests into the Tars framework protocol
+- Service Load Balancing.
+
+## 1.3 Plugin functionality
+
+- Converting http protocol requests to Tars framework protocol.
+
+## 1.4 Plugin code
+
+- Core Module `shenyu-plugin-tars`
+- Core Class `org.apache.shenyu.plugin.tars.TarsPlugin`
+
+## 1.5 Added since which shenyu version
+
+- 2.3.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![image-20221206221707914](/img/shenyu/plugin/tars/produce_chart_en.png)
+
+## 2.2 Import pom
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-tars
+ ${shenyu.version}
+
+```
+
+## 2.3 Configure in the client project
+
+1. Configure the Tars configuration in application.yml.
+
+```yaml
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ tars:
+ props:
+ contextPath: /tars
+ appName: tars
+ port: 21715
+ host: 192.168.41.103 # client IP
+```
+
+2. Add the `@ShenyuTarsService` and `@ShenyuTarsClient` and annotation to the interface.
+
+```java
+@TarsServant("HelloObj")
+@ShenyuTarsService(serviceName = "ShenyuExampleServer.ShenyuExampleApp.HelloObj")
+public class HelloServantImpl implements HelloServant {
+
+ @Override
+ @ShenyuTarsClient("/hello")
+ public String hello(final int no, final String name) {
+ return String.format("hello no=%s, name=%s, time=%s", no, name, System.currentTimeMillis());
+ }
+}
+```
+
+
+## 2.4 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `tars` set Status enabled.
+
+![enable_tars_en](/img/shenyu/plugin/tars/enable_tars_en.png)
+
+
+## 2.5 Config plugin
+
+### 2.5.1 Config plugin
+
+![plugin_config_en](/img/shenyu/plugin/tars/plugin_config_en.png)
+
+- `multiSelectorHandle`:Set to enable multiple selector processing, multiple selector processing services can be configured in the selector list.
+- `multiRuleHandle`:Set to multiple rules processing, configure multiple processing rules in the rule list, it is recommended to configure as single rule.
+- `threadpool`:There are five types of business thread pools: `fixed`, `eager`, `cached`, `limited` and `shared`. The first 4 types correspond to the thread pools officially provided by dubbo. Let's talk about `shared`, as its name implies, `all proxy plugins` share a `shared` thread pool, the advantage of this is that it can reduce the number of thread pools, thereby reducing memory and improving resource utilization.
+- `corethreads`:The number of core threads in the business thread pool.
+- `threads`:The maximum number of threads in the business thread pool.
+- `queues`:The length of the blocking queue of the business thread pool, 0 means `unbounded blocking queue`.
+
+### 2.5.2 Selector config
+
+> Flow needs to be matched by selector.
+
+![selector_config_en](/img/shenyu/plugin/tars/selector_config_en.png)
+
+Automatically configure the selectors with the `@ShenyuTarsClient` annotation.
+
+### 2.5.3 Rule Config
+
+> After the traffic has been successfully matched by the selector, it will enter the rules for the final traffic matching.
+
+![rule_config_en](/img/shenyu/plugin/tars/rule_config_en.png)
+
+Automatically configure the rules with the `@ShenyuTarsClient` annotation.
+
+### 2.5.4 Metadata config
+
+> When the `Tars` application client accesses the `Apache ShenYu` gateway, it will be automatically registered, and can be viewed in the `shenyu-admin` backend management system's basic configuration `-->` metadata management, each `Tars` interface method, will correspond to a metadata.
+
+![metadata_config_en](/img/shenyu/plugin/tars/metadata_config_en.png)
+
+- AppName: specifies the name of the application to which the metadata belongs.
+
+- MethodName: the name of the method to call.
+
+- Path: http request path.
+
+- PathDescribe: the description of the path is easy to view.
+
+- ParamsType: the parameters are separated by commas (,) in the order of interface parameter types.
+
+- RpcExpand: other configurations of the `Tars` interface, which support the `JSON` format.
+
+ examples:`{"loadbalance":"hash","retries":3,"timeout":-1}`
+
+ - `loadbalance`:Load balancing policy, currently supports roundRobin, random and hash.
+ - `retries`:Number of retries to call client timeout failures.
+ - `timeout`:Calling the client's timeout time.
+
+- Interface: The fully qualified class name of the `Tars` interface.
+
+- RpcType:Auto-registration defaults to `Tars`.
+
+## 2.6 Examples
+
+### 2.6.1 Using ShenYu to access the Tars service
+
+#### 2.6.1.1 Preparation
+
+- Start `ShenYu Admin`.
+- Start `Shenyu Bootstrap`.
+
+#### 2.6.1.2 Plugin Config
+
+- In shenyu-admin --> BasicConfig --> Plugin --> `tars` set Status enabled, And adjust the registry configuration as needed.
+- Adjust to the actual situation [shenyu-examples-tars](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-tars) application.yml configuration in the project and start it.
+
+#### 2.6.2.6 Request service and check result
+
+![check_request_zh](/img/shenyu/plugin/tars/check_request_zh.png)
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `tars` set Status disable.
+
+![close_tars_en](/img/shenyu/plugin/tars/close_tars_en.png)
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/tcp-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/tcp-plugin.md
new file mode 100644
index 00000000000..a7b3724e3c5
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/tcp-plugin.md
@@ -0,0 +1,156 @@
+---
+title: Tcp Plugin
+keywords: [ "Tcp" ]
+description: TcpPlugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin name
+
+- TCP Plugin
+
+## 1.2 Appropriate Scenario
+
+- Process TCP protocol requests and forward them to backend services of other TCP protocols
+- Service load balancing
+
+## 1.3 Plugin functionality
+
+* Supports TCP proxy based on configured upstream list
+* The upstream list can be hot-synchronized to the gateway by the admin module
+* Support setting load balancing policy for requests, currently support shenyu load balancing module policy
+* Configurable open port for listening, configurable reactor-netty parameter
+* Enable multiple proxy selectors
+
+> __Note__: When a connection is established with the gateway, after the connection is established, the traffic continues to stay in the upstream that has been selected by the load balancing module
+
+## 1.4 Plugin code
+
+- Core Module: `shenyu-plugin-tcp` `shenyu-protocol-tcp`
+
+## 1.5 Added since which shenyu version
+
+- 2.6.0
+
+# 2. How to use plugin
+
+## 2.1 Enable plugin
+
+- When using it for the first time, start the admin server,
+in `shenyu-admin` --> BasicConfig --> Plugin, search for the tcp plugin and click "Resource" to activate the TCP plugin module.
+
+![init-tcp-en](/img/shenyu/plugin/tcp/init_tcp_en.png)
+
+- In `shenyu-admin` --> BasicConfig--> Plugin --> `tcp`, set status enabled.
+
+![start-tcp-en](/img/shenyu/plugin/tcp/start_tcp_en.png)
+
+## 2.2 Configure plugin
+
+- The TCP plugin is created in units of proxy-selectors, so configuring the plugin is to configure the properties of the proxy-selector.
+When creating a proxy-selector, click the "Add" button on the page, and in the pop-up selector form, you can configure the selector properties:
+
+![selector_props_en](/img/shenyu/plugin/tcp/selector_props_en.png)
+
+The default configuration is as follows:
+
+```json
+{
+ "loadBalanceAlgorithm": "random",
+ "bossGroupThreadCount": "1",
+ "workerGroupThreadCount": "12",
+ "clientMaxConnections": "20",
+ "clientMaxIdleTimeMs": "30000",
+ "clientMaxLifeTimeMs": "60000",
+ "clientPendingAcquireTimeout": "5",
+ "clientPendingAcquireMaxCount": "5"
+}
+```
+
+- `loadBalanceAlgorithm` : shenyu load balancing algorithm, random by default
+- `bossGroupThreadCount` , `workerGroupThreadCount`:
+ReactorNetty TcpServer For configuration details, see `shenyu-protocol-tcp#TcpBootstrapServer#start` for details
+- `clientMaxConnections` , `clientMaxIdleTimeMs` , `clientMaxLifeTimeMs` , `clientPendingAcquireTimeout` ,
+ `clientPendingAcquireMaxCount`
+ReactorNetty `ConnectionProvider` , see `shenyu-protocol-tcp#ConnectionContext` for details
+
+You can search for the tcp plugin in `shenyu-admin` --> BasicConfig --> PluginHandle, and modify the default configuration:
+
+![plugin_handle_en](/img/shenyu/plugin/tcp/plugin_handle_en.png)
+
+## 2.3 Configure service discovery
+
+`discovery` see [discovery-mode](../discovery/discovery-mode.md)
+
+The TCP plugin supports two levels of discovery configuration: plugin-level and selector-level:
+
+① You can click the "Discovery Configuration" button on the page to configure plugin-level discovery in the pop-up form.
+After the configuration is complete, you can open the form again to modify or delete the previous configuration.
+After the plug-in level discovery is configured, the discovery settings of the selectors are consistent with the plugin-level config by default:
+
+![discovery_config_en](/img/shenyu/plugin/tcp/discovery_config_en.png)
+
+② If you have not configured plugin-level discovery,
+you can configure the selector-level discovery every time you create a proxy-selector:
+
+![selector_discovery_en](/img/shenyu/plugin/tcp/selector_discovery_en.png)
+
+Discovery `Zookeeper` and `Local` modes are currently supported.
+
+### 2.3.1 Zookeeper Mode
+
+
+- When the type of service Discovery is Zookeeper, you need to fill out the Discovery-ZooKeeper configuration training for details [discovery-mode](../discovery/discovery-mode.md)
+
+- In zookeeper mode, the discovery module will automatically monitor the user's zookeeper registration center
+and automatically maintain discovery upstreams:
+
+![zookeeper.png](/img/shenyu/plugin/tcp/zookeeper.png)
+
+### 2.3.2 Local Mode
+
+- When "local" is selected as the discovery type,
+you need to manually fill in the discovery upstream list.
+As shown in the figure below, the discovery upstream list is an editable table.
+ Double-click each cell to modify the table content:
+
+![local_selector_en.png](/img/shenyu/plugin/tcp/local_selector_en.png)
+
+## 2.4 Configure selectors
+
+- In addition to the discovery configuration above, when creating a selector,
+you also need to fill in the "basic config" part of the selector,
+including name and forward port, etc. In order to improve the convenience of filling in,
+you can click "Copy Selector" to copy part of the information of the created selector.
+
+> __Note__: The name of the selector uniquely identifies the selector and cannot be repeated
+
+![selector_basic_en.png](/img/shenyu/plugin/tcp/selector_basic_en.png)
+
+- After the selectors are created,
+the selectors are displayed in the form of cards.
+When the mouse hovers over the cards, the creation time, update time and properties of the selectors will be displayed.
+ At the bottom of the card there are three clickable icons, from left to right the Sync, Edit, and Delete selector icons:
+
+![card_list_en.png](/img/shenyu/plugin/tcp/card_list_en.png)
+
+
+- If there is difference between the discovery upstream list of the current admin and the gateway,
+you can click the "Sync" icon to force synchronization to the gateway.
+
+
+## 2.5 Shenyu log
+
+- shenyu-gateway port start log
+![gateway_start_port_log.png](/img/shenyu/plugin/tcp/gateway_start_port_log.png)
+
+- shenyu-gateway proxy upstreamList‘s success log
+![gateway_upstream_list.png](/img/shenyu/plugin/tcp/gateway_upstream_list.png)
+
+## 2.6 Example
+
+Take proxying redis as an example, use `redis-cli -p {forwardPort}` to access.
+
+![connection.png](/img/shenyu/plugin/tcp/redis_connection.png)
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/proxy/websocket-plugin.md b/versioned_docs/version-2.6.1/plugin-center/proxy/websocket-plugin.md
new file mode 100644
index 00000000000..5fd8651b671
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/proxy/websocket-plugin.md
@@ -0,0 +1,277 @@
+---
+title: Websocket Plugin
+keywords: ["Websocket"]
+description: Websocket Plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Websocket Plugin.
+
+## 1.2 Appropriate Scenario
+
+* Forwarding scenarios, processing websocket protocol requests and forwarding them to other websocket protocol services on the backend.
+* Service Load Balancing.
+
+## 1.3 Plugin functionality
+
+* Support traffic management based on host, uri, query and other request information.
+* Supports setting load balancing policies for requests and also supports service warm-up, currently supports three policies: ip hash (consistent hashing with virtual nodes), round-robbin (weighted polling), random (weighted random).
+* Support setting interface level request timeout time.
+* Support setting the number of timeout retries.
+
+## 1.4 Plugin code
+
+* Core Module ```shenyu-plugin-websocket```.
+* Core Class ```org.apache.shenyu.plugin.websocket.WebSocketPlugin```.
+
+## 1.5 Added Since Which shenyu version
+
+- 2.4.3
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![image-20220726223545558](/img/shenyu/plugin/websocket/procedure_chart_en.png)
+
+**Explanation of terms**
+- Shenyu gateway service:Include shenyu-admin and shenyu-bootstrap services.
+- Client services:Real backend websocket service.
+
+**Explanation of the process**
+1. Start shenyu gateway service: Refer to the deployment, start shenyu-admin and shenyu-bootstrap to make sure shenyu gateway service is normal.
+2. Enable the websocket plugin in shenyu-admin: Turn on the websocket plugin in the shenyu-admin plugin management page.
+3. Configure and start the client service: start the client project (real websocket service on the back end) and configure the service information into the shenyu gateway, in two ways: manual configuration and automatic configuration.
+4. Check if forwarding is normal: Check if forwarding is successful.
+
+## 2.2 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> websocket is set to on.
+
+![image-20220726224444058](/img/shenyu/plugin/websocket/enable_websocket_en.png)
+
+
+## 2.3 Client Services configuration
+
+### 2.3.1 Manual configuration
+
+> Manually configure the client service on the shenyu-admin page, and the backend service will implement the websocket protocol forwarding without any changes.
+
+1. Adding selectors to the websocket plugin.
+
+![image-20220726225217950](/img/shenyu/plugin/websocket/add_selector_en.png)
+
+2. Add rules to the websocket plugin.
+
+![image-20220726225315550](/img/shenyu/plugin/websocket/add_rule_en.png)
+
+3. Start the client service (backend websocket service).
+
+4. Test the success of service forwarding.
+
+- See Annex 5.1 for the test code.
+
+![image-20220726222003131](/img/shenyu/plugin/websocket/test_result_en.png)
+
+### 2.3.2 Automatic configuration
+
+> If there are scenarios where you need to automate configuration to reduce workload, you can add annotations to the backend service to automate the configuration of the service to the shenyu gateway.
+
+1. Add the plugin maven configuration to the pom.xml file in the backend service project.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-websocket
+ ${project.version}
+
+```
+
+2. Use the `@ShenyuSpringWebSocketClient` annotation, which will automatically register the websocket service to the shenyu gateway.
+3. Adjust the plugin configuration, see 2.4.1 for details of the configuration parameters.
+4. Start the client project (the backend `websocket service), see 2.5 for sample code.
+5. Check whether the PluginList service registration information in the shenyu-admin page is registered successfully.
+6. Test the success of service forwarding.
+
+- See Annex 5.1 for the test code.
+
+![image-20220726221945414](/img/shenyu/plugin/websocket/test_result_en.png)
+
+## 2.4 Config plugin
+
+### 2.4.1 Configure access parameters in the configuration file in the client service
+
+* Client access method and server address, the parameters are: `shenyu.register.*`, the following example uses the http access method, currently the client supports the following access methods: http, zookeeper, etcd, nacos, consul, please refer to [client access configuration](../../user-guide/property-config/register-center-access) for detailed access configuration parameters.
+* Client configuration with the parameter: `shenyu.client.websocket.*`, containing the service name, routing address and port, and the contextPath value must be configured as the routing address for each service.
+
+```yaml
+shenyu:
+ register:
+ registerType: http
+ serverLists: http://localhost:9095
+ props:
+ username: admin
+ password: 123456
+ client:
+ websocket:
+ props:
+ contextPath: /ws-annotation
+ appName: ws-annotation
+ port: 8001 # Need to be consistent with the service port
+```
+
+### 2.4.2 Configure the websocket plugin's selector and rule information in shenyu-admin
+
+Using auto-configuration, after the client starts it will automatically register [selectors and rules](../../user-guide/admin-usage/selector-and-rule.md) in shenyu-admin -> Plugin List -> Proxy -> Websocket information.
+![image-20220725222628106](/img/shenyu/plugin/websocket/auto_register_en.png)
+
+#### 2.4.2.1 Configuration of selectors
+
+The example of websocket selector configuration, please refer to [selectors and rules](../../user-guide/admin-usage/selector-and-rule.md) for general selector configuration.
+
+![image-20220725222913298](/img/shenyu/plugin/websocket/config_selectors_en.png)
+
+##### 2.4.2.1.1 Selector handler configuration
+
+- `host`:Fill in `localhost`, this field is not used for now.
+- `ip:port`:`ip` and port, here fill in the `ip` + port of your real service.
+- `protocol`:`ws` protocol, do not fill in the default: `ws://`.
+- `startupTime`:Start-up time in milliseconds.
+- `weight`:The default value for load balancing weight, which is automatically registered for service startup, is 50.
+- `warmupTime`:Warm-up time, in milliseconds, the server in warm-up will calculate the instantaneous weight, the calculated value will be less than the actual weight configured to protect the server just started, the default value of service start registration is 10. For example, the warm-up time is 100 milliseconds, currently started 50 milliseconds, the configured weight is 50, the actual weight is 25.
+- `status`:open or close, the start state of this processor is only valid.
+
+#### 2.4.2.2 Configuration of rules
+
+The example of websocket rule configuration, please refer to [selectors and rules](../../user-guide/admin-usage/selector-and-rule.md) for general rule configuration .
+
+![image-20220725223225388](/img/shenyu/plugin/websocket/config_rules_en.png)
+
+##### 2.4.2.2.1 Rule handler configuration
+
+- `loadStrategy`: if the websocket client is a cluster, which load balancing strategy to take when the Apache ShenYu gateway is invoked, currently supports roundRobin, random and hash.
+- `timeout`: The timeout period for calling the client.
+- `retryCount`: The number of retries to call client timeout failures.
+
+## 2.5 示例
+
+### 2.5.1 Spring Annotation Websocket Example
+
+[shenyu-example-spring-annotation-websocket](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-websocket/shenyu-example-spring-annotation-websocket)
+
+### 2.5.2 Spring Native Websocket Example
+
+[shenyu-example-spring-native-websocket](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-websocket/shenyu-example-spring-native-websocket)
+
+### 2.5.3 Spring Reactive Websocket Example
+
+[shenyu-example-spring-reactive-websocket](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-websocket/shenyu-example-spring-reactive-websocket)
+
+# 3. How to disable plugin
+
+- shenyu-admin --> BasicConfig --> Plugin --> Close websocket plugin status.
+
+![image-20220726231206572](/img/shenyu/plugin/websocket/close_websocket_en.png)
+
+# 4. Frequently Asked Questions
+
+**4.1 Websocket connection establishment error 1002**
+
+Possible causes: client service is not normal, shenyu gateway and client project can not establish a normal connection, please check the gateway to the client network, client service is normal.
+
+**4.2 Multiple client services are displayed as empty in the websocket selector**
+
+Possible cause: BasicConfig -> Plugin -> websocket -> multiSelectorHandle option select multiple handle.
+
+![image-20220726222250136](/img/shenyu/plugin/websocket/questions_multiSelectorHandle_en.png)
+
+# 5. Annexes
+
+## 5.1 websocket debugging code
+
+- Create a file called websocket.html and copy the following code into the file.
+- Open websocket.html with Chrome.
+
+```html
+
+
+
+
+ Shenyu WebSocket Test
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/_category_.json b/versioned_docs/version-2.6.1/plugin-center/security/_category_.json
new file mode 100644
index 00000000000..45fba4709cc
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Security",
+ "position": 4
+}
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/casdoor.md b/versioned_docs/version-2.6.1/plugin-center/security/casdoor.md
new file mode 100644
index 00000000000..3fecb12048d
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/casdoor.md
@@ -0,0 +1,70 @@
+---
+title: Casdoor Plugin
+keywords: [Casdoor]
+description: Casdoor plugin
+---
+
+ShenYu has Casdoor plugin to use Casdoor
+
+## Step1. Deploy Casdoor
+
+Firstly, the Casdoor should be deployed.
+
+You can refer to the Casdoor official documentation
+
+After a successful deployment, you need to ensure:
+
+- The Casdoor server is successfully running on **http://localhost:8000**.
+- Open your favorite browser and visit **http://localhost:7001**, you will see the login page of Casdoor.
+- Input `admin` and `123` to test login functionality is working fine.
+
+Then you can quickly implement a Casdoor based login page in your own app with the following steps.
+
+## Step2. Configure Casdoor application
+
+### 1. Create or use an existing Casdoor application
+
+### 2. Add Your redirect url
+
+ ![casdoor_config](/img/shenyu/plugin/casdoor/casdoor_config.png)
+
+### 3. On the certificate editing page, you can see your `certificate`
+
+ ![casdoor_cert](/img/shenyu/plugin/casdoor/casdoor_cert.png)
+
+## Step3. Use Casdoor plugin in Shenyu
+
+### 1. Config Casdoor plugin in Shenyu
+
+ ![casdoor_configPlugin](/img/shenyu/plugin/casdoor/casdoor_configPlugin.png)
+
+note: because the shenyu only have Single line input box so we need add \n in every line of cert.
+
+ ![casdoor_cert2](/img/shenyu/plugin/casdoor/casdoor_cert2.png)
+
+You can copy it and paste it on the certificate of shenyu casdoor config.
+
+**You don't need save it in Casdoor certificate editing page**,because it just for copying.
+
+### 2. Confing Shenyu Casdoor's plugin
+
+ ![casdoor_casdoor](/img/shenyu/plugin/casdoor/casdoor_casdoor.png)
+
+ You can config what you need to use Casdoor config
+
+### 3. Get the service and use
+
+#### 3.1 Visit the Web directly like
+
+ ![casdoor_faillogin](/img/shenyu/plugin/casdoor/casdoor_faillogin.png)
+
+#### 3.2 Use Casdoor login like this
+
+ ![casdoor_login](/img/shenyu/plugin/casdoor/casdoor_login.png)
+ ![casdoor_successlogin](/img/shenyu/plugin/casdoor/casdoor_successlogin.png)
+
+#### 3.3 Carry token in Headers,you also can visit it
+
+ ![casdoor_token](/img/shenyu/plugin/casdoor/casdoor_token.png)
+
+#### 3.4 It also can save name,id and organization in Headers so that you can use them in next time
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/cryptor-request-plugin.md b/versioned_docs/version-2.6.1/plugin-center/security/cryptor-request-plugin.md
new file mode 100644
index 00000000000..5cbd4acbabf
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/cryptor-request-plugin.md
@@ -0,0 +1,62 @@
+---
+title: CryptorRequest plugin
+keywords: ["CryptorRequest"]
+description: CryptorRequest plugin
+---
+
+## Description
+
+* The `cryptorRequest` plugin uses `fieldNames` to match the parameters in `requestBody` for `decryption` processing, replacing the current `requestBody` content.
+
+## Plugin Setting
+
+1. In `shenyu-admin` BasicConfig --> plugin -> `cryptor_request` set to enable.
+
+
+
+2. Open `selector` to configure the traffic that needs to be matched.
+
+3. Open the `Rules` configuration corresponding to the `selector`.
+
+
+
+* strategyName: Algorithm name. Currently, based on shenyu's SPI mechanism, the encryption and decryption algorithms can be customized,
+ Need to implement the `org.apache.shenyu.plugin.cryptor.strategy.CryptorStrategy` interface.
+
+ At the same time find the `org.apache.shenyu.plugin.cryptor.strategy.CryptorStrategy` file under `resources/META-INF/shenyu/`,
+ Write the name of the algorithm, and the package name of the class that implements the `CryptorStrategy` interface.
+
+* fieldNames: Matching parameter name. Support parsing multi-level json format matching, using `.` segmentation, such as data.id.
+
+```json5
+ {
+ data: {
+ "id": ""
+ }
+ }
+```
+
+* decryptKey: Secret key. Used to decrypt data.
+
+* encryptKey: Secret key. Used to encrypt data.
+
+* way: Select encrypt or decrypt.
+
+## Plugin Use
+
+* Add support for `cryptorRequest` in the `pom.xml` file of shenyu-bootstrap.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-cryptor
+ ${project.version}
+
+
+```
+
+## Situation
+
+Prevent Internet hacking and obtain data maliciously. Improve data security.
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/cryptor-response-plugin.md b/versioned_docs/version-2.6.1/plugin-center/security/cryptor-response-plugin.md
new file mode 100644
index 00000000000..185ded13879
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/cryptor-response-plugin.md
@@ -0,0 +1,65 @@
+---
+title: CryptorResponse plugin
+keywords: ["CryptorResponse"]
+description: CryptorResponse plugin
+---
+
+## Description
+
+* The `CryptorResponse` plug-in uses `fieldNames` to match the parameters in `responseBody` for `encryption` processing, replacing the corresponding content of the current `fieldNames`.
+
+## Plugin Setting
+
+1. In `shenyu-admin` BasicConfig --> plugin -> `cryptor_response` set to enable.
+
+
+
+2. Open `selector` to configure the traffic that needs to be matched.
+
+3. Open the `Rules` configuration corresponding to the `selector`.
+
+
+
+* strategyName: Algorithm name. Currently, based on shenyu's SPI mechanism, the encryption and decryption algorithms can be customized,
+ Need to implement the `org.apache.shenyu.plugin.cryptor.strategy.CryptorStrategy` interface.
+
+ At the same time find the `org.apache.shenyu.plugin.cryptor.strategy.CryptorStrategy` file under `resources/META-INF/shenyu/`,
+ Write the name of the algorithm, and the package name of the class that implements the `CryptorStrategy` interface.
+
+
+* fieldNames: Matching parameter name. Support parsing multi-level json format matching, using `.` segmentation, such as data.id.
+
+```json5
+ {
+ data: {
+ "id": ""
+ }
+ }
+```
+
+* decryptKey: Secret key. Used to decrypt data.
+
+* encryptKey: Secret key. Used to encrypt data.
+
+* way: Select encrypt or decrypt.
+
+## Plugin Use
+
+* Add support for `cryptorResponse` in the `pom.xml` file of shenyu-bootstrap.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-cryptor
+ ${project.version}
+
+
+```
+
+## Situation
+
+Prevent Internet hacking and obtain data maliciously. Improve data security.
+
+
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/jwt-plugin.md b/versioned_docs/version-2.6.1/plugin-center/security/jwt-plugin.md
new file mode 100644
index 00000000000..c58d2fa446d
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/jwt-plugin.md
@@ -0,0 +1,156 @@
+---
+title: JWT plugin
+keywords: ["JWT"]
+description: JWT plugin
+---
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* `jwt` plugin
+
+## 1.2 Appropriate Scenario
+
+* Requires unified authentication by jwt at the gateway.
+
+
+## 1.3 Plugin functionality
+
+* The `jwt` plug-in is for the `token` attribute or `authorization` of the http request header to carry the attribute value for authentication judgment and judge `OAuth2.0` .
+
+## 1.4 Plugin code
+
+* Core module is `shenyu-plugin-jwt`.
+* Core class is `org.apache.shenyu.plugin.jwt.JwtPlugin`.
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2.How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-jwt
+ ${project.version}
+
+```
+
+## 2.3 Enable plugin
+
+- In shenyu-admin --> BasicConfig --> Plugin --> jwt set Status enable.
+
+## 2.4 Config plugin
+
+### 2.4.1 Config plugin in ShenYu-Admin
+
+* Config secretKey of jwt-plugin in shenyu-admin, the secretKey must more than 256 bit.
+* `secretKey`: The private key when using `jwt` to generate `token`, it is required.
+
+![](/img/shenyu/plugin/jwt/jwt-plugin-config-en.jpg)
+
+### 2.4.2 Selector config
+
+* Selector and rule Config. Please refer: [Selector and rule config](../../user-guide/admin-usage/selector-and-rule.md).
+
+### 2.4.3 Rule Config
+
+![](/img/shenyu/plugin/jwt/jwt-plugin-rule-handle-en.jpg)
+
+* convert means jwt converter
+* jwtVal: jwt of body name
+* headerVal: jwt header name
+
+custom covert algorithm:[custom-jwt-covert-algorithm](../../developer/custom-jwt-covert-algorithm.md)
+
+## 2.5 Examples
+
+### 2.5.1 Use jwt token for authentication judgment
+
+#### 2.5.1.1 Config jwt-plugin
+
+![](/img/shenyu/plugin/jwt/jwt-plugin-config-en.jpg)
+
+#### 2.5.1.2 Config selector match service
+
+![](/img/shenyu/plugin/jwt/jwt-plugin-selector-config-en.jpg)
+
+#### 2.5.1.3 Config rule match service
+
+![](/img/shenyu/plugin/jwt/jwt-plugin-rule-handle-en.jpg)
+
+#### 2.5.1.4 Generate json web token(jwt) with website
+
+* You can open `https://jwt.io/` in your browser and fill in the corresponding parameters.
+* Config jwt header `HEADER` in `https://jwt.io/`
+* Config jwt body `PAYLOAD` in `https://jwt.io/`
+* Config jwt signature `VERIFY SIGNATURE` in `https://jwt.io/`
+
+![](/img/shenyu/plugin/jwt/jwt-web.jpg)
+
+#### 2.5.1.5 Generate json web token(jwt) with java code
+
+```java
+public final class JwtPluginTest {
+
+ public void generateJwtCode() {
+ final String secreteKey = "shenyu-test-shenyu-test-shenyu-test";
+ Map map = new HashMap<>();
+ map.put("id", "1");
+ map.put("name", "xiaoming");
+ Date date = new Date();
+ date.setTime(1655524800000L);
+ String token = Jwts.builder()
+ .setIssuedAt(date)
+ .setExpiration(new Date())
+ .setClaims(map)
+ .signWith(Keys.hmacShaKeyFor(secreteKey.getBytes(StandardCharsets.UTF_8)), SignatureAlgorithm.HS256)
+ .compact();
+ System.out.println(token);
+ }
+}
+```
+
+#### 2.5.1.6 Request Service
+
+##### 2.5.1.6.1 Request service with token
+
+* request your service with jwt token `token: eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoieGlhb21pbmciLCJpZCI6IjEifQ.LdRzGlB49alhq204chwF7pf3C0z8ZpuowPvoQdJmSRw` in your request header.
+
+##### 2.5.1.6.2 Request service Authorization
+
+* request your service with Authorization `Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoieGlhb21pbmciLCJpZCI6IjEifQ.LdRzGlB49alhq204chwF7pf3C0z8ZpuowPvoQdJmSRw` in your request header.
+
+#### 2.5.1.7 Validate request result
+
+* error token request result
+
+```
+{
+ "code": 401,
+ "message": "Illegal authorization"
+}
+```
+
+* normal token request result
+
+```
+{
+ "id": "123",
+ "name": "hello world save order"
+}
+```
+
+# 3. How to disable plugin
+
+- In `shenyu-admin` --> BasicConfig --> Plugin --> `jwt` set Status disable.
+
+![](/img/shenyu/plugin/jwt/jwt-plugin-close_en.jpg)
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/oauth2-plugin.md b/versioned_docs/version-2.6.1/plugin-center/security/oauth2-plugin.md
new file mode 100644
index 00000000000..39525e12760
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/oauth2-plugin.md
@@ -0,0 +1,54 @@
+---
+title: OAuth2 Plugin
+keywords: ["OAuth2"]
+description: OAuth2 plugin
+---
+
+## Description
+
+The `OAuth2` plugin in Apache Shenyu is implemented using the OAuth2 standard. It allows for secure and authorized access to protected resources on a web server by using a token-based authentication method.
+
+## How Does It Works?
+
+In Apache Shenyu, the OAuth2 plugin acts as the client application, while the authorization server and resource server are typically provided by external services like GitHub, Google, or Facebook. When a user attempts to access a protected resource on the Apache Shenyu server, the OAuth2 plugin redirects the user to the authorization server to request permission to access the resource. The user then logs in to the authorization server and grants permission for the client application (OAuth2 plugin) to access the requested resource on their behalf. The authorization server then sends a token to the client application, which it can use to access the resource server and retrieve the protected resource.
+
+## Plugin Setting
+
+Setting up the OAuth2 Plugin in Apache Shenyu
+
+To configure the OAuth2 plugin in Apache Shenyu, you will need to follow these steps:
+
+* Step 1: Install the OAuth2 Plugin
+
+ First, you need to ensure that the OAuth2 plugin is installed and enabled in Apache Shenyu. If it is not already installed, you can download it from the Shenyu GitHub repository and follow the installation instructions.
+
+* Step 2: Register an OAuth2 Application with the Authorization Server
+
+ Before you can use the OAuth2 plugin in Apache Shenyu, you need to register an OAuth2 application with the authorization server you plan to use (e.g., GitHub, Google, etc.). The registration process typically involves providing basic information about your application, such as the application name, website URL, and redirect URI.
+
+ Once you have registered your OAuth2 application with the authorization server, you will receive a client ID and client secret, which you will need to use in the next step.
+
+* Step 3: Configure the OAuth2 Plugin
+
+ To configure the OAuth2 plugin in Apache Shenyu, you will need to modify the shenyu-server.yaml configuration file. Here's an example of what the configuration might look like:
+
+ ```
+ plugins:
+ oauth2:
+ enabled: true
+ client_id:
+ client_secret:
+ authorization_url:
+ token_url:
+ user_info_url:
+ ```
+
+ * `enabled`: Set this to `true` to enable the OAuth2 plugin in Shenyu.
+ * `client_id` and `client_secret`: These are the client credentials you received when you registered your OAuth2 application with the authorization server.
+ * `authorization_url`: This is the URL of the authorization server's authorization endpoint.
+ * `token_url`: This is the URL of the authorization server's token endpoint.
+ * `user_info_url`: This is the URL of the authorization server's user info endpoint, which is used to retrieve information about the authenticated user.
+
+* Step 4: Test the OAuth2 Plugin
+
+ To test the OAuth2 plugin in Apache Shenyu, you can try to access a protected resource on the Shenyu server that requires authentication. When you attempt to access the resource, the OAuth2 plugin should redirect you to the authorization server's login page. After you log in and grant permission to the client application (OAuth2 plugin), the plugin should be able to retrieve an access token and use it to access the protected resource on your behalf.
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/sign-plugin.md b/versioned_docs/version-2.6.1/plugin-center/security/sign-plugin.md
new file mode 100644
index 00000000000..ed940f4960b
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/sign-plugin.md
@@ -0,0 +1,501 @@
+---
+title: Sign Plugin
+keywords: ["sign"]
+description: sign plugin
+---
+
+
+# 1. Overview
+
+## 1.1 Plugin Name
+
+* Sign Plugin
+
+## 1.2 Appropriate Scenario
+
+* Support http header to authorize
+* Support http header and request body to authorize
+
+## 1.3 Plugin functionality
+
+* Process signature authentication of requests.
+
+## 1.4 Plugin code
+
+* Core Module: `shenyu-plugin-sign`
+
+* Core Class: `org.apache.shenyu.plugin.sign.SignPlugin`
+
+## 1.5 Added Since Which shenyu version
+
+* Since ShenYu 2.4.0
+
+# 2. How to use plugin
+
+## 2.1 Plugin-use procedure chart
+
+![](/img/shenyu/plugin/plugin_use_en.jpg)
+
+## 2.2 Import pom
+
+* Introducing `sign` dependency in the `pom.xml` file of the gateway
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-sign
+ ${project.version}
+
+
+```
+
+## 2.3 Enable plugin
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `sign` set to enable.
+
+## 2.4 Config Plugin With Authorize(1.0.0)
+
+### 2.4.1 AK/SK Config
+
+#### 2.4.1.1 Explanation
+
+- Manage and control the permissions of requests passing through the Apache ShenYu gateway.
+- Generate `AK/SK` and use it with the `Sign` plugin to achieve precise authority control based on URI level.
+
+#### 2.4.1.2 Tutorial
+
+First, we can add a piece of authentication information in `BasicConfig` - `Authentication`
+
+
+
+Then configure this authentication information
+
+
+
+- AppName:The application name associated with this account, it can can fill in or choose (data comes from the application name configured in the Metadata).
+- TelPhone:Telphone information.
+- AppParams:When the requested context path is the same as the AppName,add this value to the header, the key is `appParam`.
+- UserId:Give the user a name, just as an information record.
+- ExpandInfo:Description of the account.
+- PathAuth:After opening, the account only allows access to the resource path configured below.
+- ResourcePath:Allow access to the resource path, support path matching,e.g. `/order/**` .
+
+After submit, a piece of authentication information is generated, which contains `AppKey` and `AppSecret`, which is the `AK/SK` in the `Sign` plugin.
+
+Please refer to the detailed instructions of the `Sign` plugin: [Sign Plugin](../../plugin-center/authority-and-certification/sign-plugin).
+
+#### 2.4.1.3 PathOperation
+
+For the created authentication information, you can click `PathOperation` at the end of a piece of authentication information.
+
+
+
+- On the left is a list of configurable paths, and on the right is a list of paths that allow the account to access.
+- Check the resource path, click the `>` or `<` in the middle to move the checked data to the corresponding list.
+- In the list of configurable paths on the left, click "Editor" at the end of the account information line, and add them in the "Resource Path" in the pop-up box.
+
+### 2.4.2 Implementation of Gateway Technology
+
+* Adopt `AK/SK` authentication technical scheme.
+* Adopt authentication plug-in and Chain of Responsibility Pattern to realize.
+* Take effect when the authentication plugin is enabled and all interfaces are configured for authentication.
+
+### 2.4.3 Authentication Guide
+
+* Step 1: `AK/SK` is assigned by the gateway. For example, the `AK` assigned to you is: `1TEST123456781` SK is: ` 506eeb535cf740d7a755cb49f4a1536'
+
+* Step 2: Decide the gateway path you want to access, such as `/api/service/abc`
+
+* Step 3: Construct parameters (the following are general parameters)
+
+| Field | Value | Description |
+| -------- | -------- | :--------: |
+| timestamp | current timestamp(String) | The number of milliseconds of the current time(gateway will filter requests the before 5 minutes) |
+| path | /api/service/abc | The path that you want to request(Modify by yourself according to your configuration of gateway) |
+| version | 1.0.0 | `1.0.0` is a fixed string value |
+
+Sort the above three field natually according to the key, then splice fields and fields, finally splice SK. The following is a code example.
+
+#### 2.4.3.1 Generate sign with request header
+
+Step 1: First, construct a Map.
+
+```java
+
+ Map map = Maps.newHashMapWithExpectedSize(3);
+ //timestamp is string format of millisecond. String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli())
+ map.put("timestamp","1571711067186"); // Value should be string format of milliseconds
+ map.put("path", "/api/service/abc");
+ map.put("version", "1.0.0");
+```
+
+Step 2: Sort the `Keys` naturally, then splice the key and values, and finally splice the `SK` assigned to you.
+
+```java
+List storedKeys = Arrays.stream(map.keySet()
+ .toArray(new String[]{}))
+ .sorted(Comparator.naturalOrder())
+ .collect(Collectors.toList());
+final String sign = storedKeys.stream()
+ .map(key -> String.join("", key, map.get(key)))
+ .collect(Collectors.joining()).trim()
+ .concat("506EEB535CF740D7A755CB4B9F4A1536");
+```
+
+* The returned sign value should be:`path/api/service/abctimestamp1571711067186version1.0.0506EEB535CF740D7A755CB4B9F4A1536`
+
+Step 3: Md5 encryption and then capitalization.
+
+```java
+DigestUtils.md5DigestAsHex(sign.getBytes()).toUpperCase()
+```
+
+* The final returned value is: `A021BF82BE342668B78CD9ADE593D683`.
+
+#### 2.4.3.2 Generate sign with request header and request body
+
+Step 1: First, construct a Map, and the map must save every request body parameters
+
+```java
+
+ Map map = Maps.newHashMapWithExpectedSize(3);
+ //timestamp is string format of millisecond. String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli())
+ map.put("timestamp","1660659201000"); // Value should be string format of milliseconds
+ map.put("path", "/http/order/save");
+ map.put("version", "1.0.0");
+ // if your request body is:{"id":123,"name":"order"}
+ map.put("id", "1");
+ map.put("name", "order")
+```
+
+Step 2: Sort the `Keys` naturally, then splice the key and values, and finally splice the `SK` assigned to you.
+
+```java
+List storedKeys = Arrays.stream(map.keySet()
+ .toArray(new String[]{}))
+ .sorted(Comparator.naturalOrder())
+ .collect(Collectors.toList());
+final String sign = storedKeys.stream()
+ .map(key -> String.join("", key, map.get(key)))
+ .collect(Collectors.joining()).trim()
+ .concat("2D47C325AE5B4A4C926C23FD4395C719");
+```
+
+* The returned sign value should be:`id123nameorderpath/http/order/savetimestamp1660659201000version1.0.02D47C325AE5B4A4C926C23FD4395C719`
+
+Step 3: Md5 encryption and then capitalization.
+
+```java
+DigestUtils.md5DigestAsHex(sign.getBytes()).toUpperCase()
+```
+
+* The final returned value is: `35FE61C21F73E9AAFC46954C14F299D7`.
+
+### 2.4.4 Request GateWay
+
+* If your visited path is:`/api/service/abc`.
+
+* Address: http: domain name of gateway `/api/service/abc`.
+
+* Set `header`,`header` Parameter:
+
+| Field | Value | Description |
+| -------- | -----: | :----: |
+| timestamp | `1571711067186` | Timestamp when signing |
+| appKey | `1TEST123456781` | The AK value assigned to you |
+| sign | `A90E66763793BDBC817CF3B52AAAC041` | The signature obtained above |
+| version | `1.0.0` | `1.0.0` is a fixed value. |
+
+* The signature plugin will filter requests before `5` minutes by default
+
+* If the authentication fails, will return code `401`, message may change.
+
+```json
+{
+ "code": 401,
+ "message": "sign is not pass,Please check you sign algorithm!",
+ "data": null
+}
+```
+
+### 2.4.5 Plugin Config
+
+![](/img/shenyu/plugin/sign/sign_open_en.jpg)
+
+### 2.4.6 Selector Config
+
+![](/img/shenyu/plugin/sign/selector-en.png)
+
+* Only those matched requests can be authenticated by signature.
+
+* Selectors and rules, please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule)
+
+### 2.4.7 Rule Config
+
+![](/img/shenyu/plugin/sign/rule-en.png)
+
+* close(signRequestBody): generate signature with request header.
+* open(signRequestBody): generate signature with request header and request body.
+
+## 2.5 Config Plugin With Authorize(2.0.0)
+
+This authentication algorithm is the version 2.0.0 algorithm, which is same as version1's except **Authentication Guide** and **Request GateWay.**
+
+### 2.5.1 Authentication Guide
+
+Authentication algorithm of Version 2.0.0 generates a Token based on the signature algorithm, and puts the Token value into the request header `ShenYu-Authorization` parameter when sending a request. To distinguish it from version 1.0.0, the `version` parameter of the request header is left, which is 2.0.0.
+
+#### 2.5.1.1 prepare
+
+* Step 1: `AK/SK` is assigned by the gateway. For example, the `AK` assigned to you is: `1TEST123456781` SK is: ` 506eeb535cf740d7a755cb49f4a1536'
+
+* Step 2: Decide the gateway path you want to access, such as `/api/service/abc`
+
+#### 2.5.1.2 Generate Token
+
++ build parameter
+
+ build the `parameters` that is json string
+
+ ```json
+ {
+ "alg":"MD5",
+ "appKey":"506EEB535CF740D7A755CB4B9F4A1536",
+ "timestamp":"1571711067186"
+ }
+ ```
+
+ **alg**: signature algorithm(result is uppercase HEX string)
+
+ - MD5: MD5-HASH(data+key)
+ - HMD5:HMAC-MD5
+ - HS256:HMAC-SHA-256
+ - HS512:HMAC-SHA-512
+
+ **appKey**:appKey
+
+ **timestamp**: timestamp of the length is 13
+
++ Calculate signature value
+
+ ```tex
+ signature = sign(
+ base64Encoding(parameters) + Relative URL + Body*,
+ secret
+ );
+ * indicate Optional , it depends on handler config
+ Relative URL = path [ "?" query ] eg: /apache/shenyu/pulls?name=jack
+ ```
+
+ > note :`Relative URL` is not include fragment
+
++ Calculate Token
+
+ > token = base64Encoding(parameters) + '.' + base64Encoding(signature)
+
+ Put the Token into the request header `ShenYu-Authorization` parameter.
+
+### 2.5.2 Request GateWay
+
+| Field | 值 | 描述 |
+| :------------ | :------ |:------------------------------------------------------------|
+| ShenYu-Authorization | Token | Token |
+| version | `2.0.0` | Fixed value |
+
+>please change the Authorization field to ShenYu-Authorization as soon as possible to avoid conflicts with application Authorization.
+
+## 2.6 Examples
+
+### 2.6.1 Verify api with sign plugin(1.0.0)
+
+#### 2.6.1.1 Plugin Config
+
+![](/img/shenyu/plugin/sign/sign_open_en.jpg)
+
+#### 2.6.1.2 Selector Config
+
+![](/img/shenyu/plugin/sign/example-selector-en.png)
+
+#### 2.6.1.3 Rule Config
+
+![](/img/shenyu/plugin/sign/example-rule-en.png)
+
+#### 2.6.1.4 Add AppKey/SecretKey
+
+![](/img/shenyu/plugin/sign/example-sign-auth-en.png)
+
+#### 2.6.1.5 Request Service and check result
+
+* build request params with `Authentication Guide`,
+
+```java
+public class Test1 {
+ public static void main(String[] args) {
+ Map map = Maps.newHashMapWithExpectedSize(3);
+ //timestamp为毫秒数的字符串形式 String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli())
+ map.put("timestamp","1660658725000"); //值应该为毫秒数的字符串形式
+ map.put("path", "/http/order/save");
+ map.put("version", "1.0.0");
+ map.put("id", "123");
+ map.put("name", "order");
+ // map.put("body", "{\"id\":123,\"name\":\"order\"}");
+
+ List storedKeys = Arrays.stream(map.keySet()
+ .toArray(new String[]{}))
+ .sorted(Comparator.naturalOrder())
+ .collect(Collectors.toList());
+ final String sign = storedKeys.stream()
+ .map(key -> String.join("", key, map.get(key)))
+ .collect(Collectors.joining()).trim()
+ .concat("2D47C325AE5B4A4C926C23FD4395C719");
+ System.out.println(sign);
+
+ System.out.println(DigestUtils.md5DigestAsHex(sign.getBytes()).toUpperCase());
+ }
+}
+```
+
+* signature without body: `path/http/order/savetimestamp1571711067186version1.0.02D47C325AE5B4A4C926C23FD4395C719`
+* sign without body result is: `9696D3E549A6AEBE763CCC2C7952DDC1`
+
+![](/img/shenyu/plugin/sign/result.png)
+
+```java
+public class Test2 {
+ public static void main(String[] args) {
+ Map map = Maps.newHashMapWithExpectedSize(3);
+ //timestamp为毫秒数的字符串形式 String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli())
+ map.put("timestamp","1660659201000"); //值应该为毫秒数的字符串形式
+ map.put("path", "/http/order/save");
+ map.put("version", "1.0.0");
+
+ List storedKeys = Arrays.stream(map.keySet()
+ .toArray(new String[]{}))
+ .sorted(Comparator.naturalOrder())
+ .collect(Collectors.toList());
+ final String sign = storedKeys.stream()
+ .map(key -> String.join("", key, map.get(key)))
+ .collect(Collectors.joining()).trim()
+ .concat("2D47C325AE5B4A4C926C23FD4395C719");
+ System.out.println(sign);
+
+ System.out.println(DigestUtils.md5DigestAsHex(sign.getBytes()).toUpperCase());
+ }
+}
+```
+
+*signature with body:`id123nameorderpath/http/order/savetimestamp1660659201000version1.0.02D47C325AE5B4A4C926C23FD4395C719`
+*sign with body result is:`35FE61C21F73E9AAFC46954C14F299D7`
+
+![](/img/shenyu/plugin/sign/result-with-body.png)
+
+### 2.6.2 Verify api with sign plugin(2.0.0)
+
+All the configuration parts are the same, so let's look directly at the the calculation part of parameter of request header and the part of sending request.
+
+#### 2.6.2.1 Request Service and check result
+
+- implements the algorithm
+
+ Suppose we use a signature algorithm named MD5. According to the previous description, the signature value is to concatenate the data and key, and then hash.
+
+ ```java
+ private static String sign(final String signKey, final String base64Parameters, final URI uri, final String body) {
+
+ String data = base64Parameters
+ + getRelativeURL(uri)
+ + Optional.ofNullable(body).orElse("");
+
+ return DigestUtils.md5Hex(data+signKey).toUpperCase();
+ }
+
+ private static String getRelativeURL(final URI uri) {
+ if (Objects.isNull(uri.getQuery())) {
+ return uri.getPath();
+ }
+ return uri.getPath() + "?" + uri.getQuery();
+ }
+ ```
+
+- verify without the request body
+
+ ```java
+ public static void main(String[] args) {
+
+ String appSecret = "2D47C325AE5B4A4C926C23FD4395C719";
+
+ URI uri = URI.create("/http/order/save");
+
+ String parameters = JsonUtils.toJson(ImmutableMap.of(
+ "alg","MD5",
+ "appKey","BD7980F5688A4DE6BCF1B5327FE07F5C",
+ "timestamp","1673708353996"));
+
+ String base64Parameters = Base64.getEncoder()
+ .encodeToString(parameters.getBytes(StandardCharsets.UTF_8));
+
+ String signature = sign(appSecret,base64Parameters,uri,null);
+
+ String Token = base64Parameters+"."+signature;
+
+ System.out.println(Token);
+
+ }
+ ```
+
+ Token:
+
+ ```tex
+ eyJhbGciOiJNRDUiLCJhcHBLZXkiOiJCRDc5ODBGNTY4OEE0REU2QkNGMUI1MzI3RkUwN0Y1QyIsInRpbWVzdGFtcCI6IjE2NzM3MDgzNTM5OTYifQ==.33ED53DF79CA5B53C0BF2448B670AF35
+ ```
+
+ 发送请求:
+
+ ![image-20230114230500887](/img/shenyu/plugin/sign/version2_sign_request.png)
+
+- verify with the request body
+
+```java
+ public static void main(String[] args) {
+ String appSecret = "2D47C325AE5B4A4C926C23FD4395C719";
+
+ URI uri = URI.create("/http/order/save");
+
+ String parameters = JsonUtils.toJson(ImmutableMap.of(
+ "alg","MD5",
+ "appKey","BD7980F5688A4DE6BCF1B5327FE07F5C",
+ "timestamp","1673708905488"));
+
+ String base64Parameters = Base64.getEncoder()
+ .encodeToString(parameters.getBytes(StandardCharsets.UTF_8));
+
+ String requestBody = "{\"id\":123,\"name\":\"order\"}";
+
+ String signature = sign(appSecret,base64Parameters,uri,requestBody);
+
+ String Token = base64Parameters+"."+signature;
+
+ System.out.println(Token);
+
+ }
+```
+
+Token:
+
+```tex
+eyJhbGciOiJNRDUiLCJhcHBLZXkiOiJCRDc5ODBGNTY4OEE0REU2QkNGMUI1MzI3RkUwN0Y1QyIsInRpbWVzdGFtcCI6IjE2NzM3MDg5MDU0ODgifQ==.FBCEB6D816644A98378635050AB85EF1
+```
+
+![image-20230114231032837](/img/shenyu/plugin/sign/request_body.png)
+
+![image-20230114230922598](/img/shenyu/plugin/sign/version2_sign_request_with_body.png)
+
+# 3. How to disable plugin
+
+* In `shenyu-admin`--> BasicConfig --> Plugin --> `sign` set to disabled.
+
+# 4. Extension
+
+* Please refer to: [dev-sign](../../developer/custom-sign-algorithm).
+
diff --git a/versioned_docs/version-2.6.1/plugin-center/security/waf-plugin.md b/versioned_docs/version-2.6.1/plugin-center/security/waf-plugin.md
new file mode 100644
index 00000000000..802dd9865b8
--- /dev/null
+++ b/versioned_docs/version-2.6.1/plugin-center/security/waf-plugin.md
@@ -0,0 +1,76 @@
+---
+title: Waf Plugin
+keywords: ["waf"]
+description: waf plugin
+---
+
+## Description
+
+* `Waf` is the core implementation of gateway to realize firewall function for network traffic.
+
+## Plugin Setting
+
+Please refer to the `deployment` document, choose a way to start `shenyu-admin`. For example, through [Local Deployment](../../deployment/deployment-local) to start the `Apache ShenYu` management system.
+
+* In `shenyu-admin` BasicConfig --> plugin -> `waf` set to enable.If you don't want to use this function, please disable this plugin in the `shenyu-admin`.
+
+
+
+* Add configuration mode in plugin editing.
+
+```yaml
+{"model":"black"}
+# model can be 'black' or 'mixed'
+# The default mode is blacklist mode; If setting is mixed, it will be mixed mode. We will explain it specifically below.
+```
+
+## Add Dependency
+
+* Introducing `waf` dependency in the pom.xml of the gateway.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-waf
+ ${project.version}
+
+
+```
+
+## Waf Plugin Configuration
+
+For more instructions on selector and rule configuration, please refer to: [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule), here only some fields are introduced.
+
+`Waf` plugin rule configuration page:
+
+
+
+For requests that are denied access by `Waf` , the response header status code is: `403`.
+
+#### Black Model
+
+* When `model` is set to `black` mode, only the matched traffic will execute the rejection policy, and the unmatched traffic will be skipped directly.
+* The `Handler` feild in the rule configuration is invalid and can be configured to be empty.
+
+#### Mixed Model
+
+* When `model` is set to `mixed` mode, all traffic will pass through waf plugin. For different matching traffic, users can set whether to reject or pass.
+
+* The `Handler` feild in the rule configuration must be configured:
+
+ * `permission`: The handle logic that matches the rule. `reject`: deny access, `allow`: allow access.
+
+ * `statusCode`: When access is denied, the value of the code field in the response body. `Will not modify the status code of the response header`.
+
+ e.g.:`statusCode=10001`,The rejected response body is :
+
+ ```json
+ {"code":10001,"message":"You are forbidden to visit"}
+ ```
+
+## Situation
+
+* `Waf` is also the pre-plugin of `ShenYu`, which is mainly used to intercept illegal requests or exception requests and give relevant rejection policies.
+* When faced with replay attacks, you can intercept illegal `ip` and `host`, and set reject strategy according to matched `ip` or `host`.
+* How to determine `ip` and `host`, please refer to: [parsing-ip-and-host](../../developer/custom-parsing-ip-and-host)
diff --git a/versioned_docs/version-2.6.1/quick-start/_category_.json b/versioned_docs/version-2.6.1/quick-start/_category_.json
new file mode 100644
index 00000000000..6b00aae3947
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Quick Start",
+ "position": 4
+}
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-dubbo.md b/versioned_docs/version-2.6.1/quick-start/quick-start-dubbo.md
new file mode 100644
index 00000000000..8fd022ffbd2
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-dubbo.md
@@ -0,0 +1,180 @@
+---
+title: Quick start with Dubbo
+description: Quick start with Dubbo
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using Dubbo. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo).
+
+## Environment to prepare
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the Dubbo plugin on in the BasicConfig `->` Plugin, and set your registry address. Please make sure the registry center is open locally.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+
+
+If client is `apache dubbo`, registry center is `Zookeeper`, please refer to the following configuration:
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-apache-dubbo
+ ${project.version}
+
+
+ org.apache.dubbo
+ dubbo
+ 2.7.5
+
+
+
+ org.apache.curator
+ curator-client
+ 4.0.1
+
+
+ log4j
+ log4j
+
+
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.1
+
+
+ org.apache.curator
+ curator-recipes
+ 4.0.1
+
+
+
+```
+
+If client is `alibaba dubbo`, registry center is `Zookeeper`, please refer to the following configuration:
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-alibaba-dubbo
+ ${project.version}
+
+
+ com.alibaba
+ dubbo
+ ${alibaba.dubbo.version}
+
+
+ org.apache.curator
+ curator-client
+ ${curator.version}
+
+
+ log4j
+ log4j
+
+
+
+
+ org.apache.curator
+ curator-framework
+ ${curator.version}
+
+
+ org.apache.curator
+ curator-recipes
+ ${curator.version}
+
+
+```
+
+
+## Run the shenyu-examples-dubbo project
+
+Download [shenyu-examples-dubbo](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo) .
+
+replace the register address in `shenyu-examples-alibaba-dubbo-service/src/main/resources/spring-dubbo.xml` with your local zk address, such as:
+
+```xml
+
+```
+
+Execute the `org.apache.shenyu.examples.alibaba.dubbo.service.TestAlibabaDubboApplication` main method to start dubbo project.
+
+The following log appears when the startup is successful:
+
+```shell
+2021-02-06 20:58:01.807 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/insert","pathDesc":"Insert a row of data","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboTestService","methodName":"insert","ruleName":"/dubbo/insert","parameterTypes":"org.dromara.shenyu.examples.dubbo.api.entity.DubboTest","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.821 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/findAll","pathDesc":"Get all data","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboTestService","methodName":"findAll","ruleName":"/dubbo/findAll","parameterTypes":"","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.833 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/findById","pathDesc":"Query by Id","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboTestService","methodName":"findById","ruleName":"/dubbo/findById","parameterTypes":"java.lang.String","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.844 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/findByListId","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"findByListId","ruleName":"/dubbo/findByListId","parameterTypes":"java.util.List","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.855 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/findByIdsAndName","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"findByIdsAndName","ruleName":"/dubbo/findByIdsAndName","parameterTypes":"java.util.List,java.lang.String","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.866 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/batchSave","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"batchSave","ruleName":"/dubbo/batchSave","parameterTypes":"java.util.List","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.876 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/findByArrayIdsAndName","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"findByArrayIdsAndName","ruleName":"/dubbo/findByArrayIdsAndName","parameterTypes":"[Ljava.lang.Integer;,java.lang.String","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.889 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/saveComplexBeanTestAndName","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"saveComplexBeanTestAndName","ruleName":"/dubbo/saveComplexBeanTestAndName","parameterTypes":"org.dromara.shenyu.examples.dubbo.api.entity.ComplexBeanTest,java.lang.String","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.901 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/batchSaveAndNameAndId","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"batchSaveAndNameAndId","ruleName":"/dubbo/batchSaveAndNameAndId","parameterTypes":"java.util.List,java.lang.String,java.lang.String","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.911 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/saveComplexBeanTest","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"saveComplexBeanTest","ruleName":"/dubbo/saveComplexBeanTest","parameterTypes":"org.dromara.shenyu.examples.dubbo.api.entity.ComplexBeanTest","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+2021-02-06 20:58:01.922 INFO 3724 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {"appName":"dubbo","contextPath":"/dubbo","path":"/dubbo/findByStringArray","pathDesc":"","rpcType":"dubbo","serviceName":"org.dromara.shenyu.examples.dubbo.api.service.DubboMultiParamService","methodName":"findByStringArray","ruleName":"/dubbo/findByStringArray","parameterTypes":"[Ljava.lang.String;","rpcExt":"{\"group\":\"\",\"version\":\"\",\"loadbalance\":\"random\",\"retries\":2,\"timeout\":10000,\"url\":\"\"}","enabled":true}
+```
+
+Note: When you need to expose `multiple protocols` at the same time, please do not configure `shenyu.client.dubbo.props.port`.
+
+## Test
+
+The `shenyu-examples-dubbo` project will automatically register interface methods annotated with `@ShenyuDubboClient` in the Apache ShenYu gateway after successful startup.
+
+Open PluginList -> rpc proxy -> dubbo to see the list of plugin rule configurations:
+
+![](/img/shenyu/quick-start/dubbo/rule-list.jpg)
+
+Use `PostMan` to simulate `HTTP` to request your `Dubbo` service:
+
+![](/img/shenyu/quick-start/dubbo/postman-findbyid.jpg)
+
+Complex multi-parameter example: The related interface implementation class is `org.apache.shenyu.examples.alibaba.dubbo.service.impl.DubboMultiParamServiceImpl#batchSaveAndNameAndId`.
+
+```java
+@Override
+@ShenyuDubboClient(path = "/batchSaveAndNameAndId")
+public DubboTest batchSaveAndNameAndId(List dubboTestList, String id, String name) {
+ DubboTest test = new DubboTest();
+ test.setId(id);
+ test.setName("hello world shenyu alibaba dubbo param batchSaveAndNameAndId :" + name + ":" + dubboTestList.stream().map(DubboTest::getName).collect(Collectors.joining("-")));
+ return test;
+}
+```
+
+![](/img/shenyu/quick-start/dubbo/postman-multiparams.jpg)
+
+When your arguments do not match, the following exception will occur:
+
+```java
+2021-02-07 22:24:04.015 ERROR 14860 --- [:20888-thread-3] o.d.shenyu.web.handler.GlobalErrorHandler : [e47b2a2a] Resolved [ShenyuException: org.apache.dubbo.remoting.RemotingException: java.lang.IllegalArgumentException: args.length != types.length
+java.lang.IllegalArgumentException: args.length != types.length
+ at org.apache.dubbo.common.utils.PojoUtils.realize(PojoUtils.java:91)
+ at org.apache.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:82)
+ at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
+ at org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
+ at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
+ at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:41)
+ at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)
+ at org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:150)
+ at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:100)
+ at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:175)
+ at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:51)
+ at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:57)
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+ at java.lang.Thread.run(Thread.java:748)
+] for HTTP POST /dubbo/batchSaveAndNameAndId
+```
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-grpc.md b/versioned_docs/version-2.6.1/quick-start/quick-start-grpc.md
new file mode 100644
index 00000000000..36d1300ce9a
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-grpc.md
@@ -0,0 +1,169 @@
+---
+title: Quick start with gRPC
+description: Quick start with gRPC
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using gRPC. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-grpc) .
+
+## Prepare For Environment
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the gRPC plugin on in the BasicConfig `->` Plugin.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+
+
+Add the following dependencies to the gateway's `pom.xml` file:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-grpc
+ ${project.version}
+
+
+```
+
+## Run the shenyu-examples-grpc project
+
+Download [shenyu-examples-grpc](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-grpc)
+
+Run the following command under `shenyu-examples-grpc` to generate Java code:
+
+```shell
+mvn protobuf:compile
+mvn protobuf:compile-custom
+```
+
+Execute the `org.apache.shenyu.examples.grpc.ShenyuTestGrpcApplication` main method to start project.
+
+The following log appears when the startup is successful:
+
+```shell
+2021-06-18 19:33:32.866 INFO 11004 --- [or_consumer_-19] o.a.s.r.client.http.utils.RegisterUtils : grpc client register success: {"appName":"127.0.0.1:8080","contextPath":"/grpc","path":"/grpc/clientStreamingFun","pathDesc":"clientStreamingFun","rpcType":"grpc","serviceName":"stream.StreamService","methodName":"clientStreamingFun","ruleName":"/grpc/clientStreamingFun","parameterTypes":"io.grpc.stub.StreamObserver","rpcExt":"{\"timeout\":5000,\"methodType\":\"CLIENT_STREAMING\"}","enabled":true,"host":"172.20.10.6","port":8080,"registerMetaData":false}
+2021-06-18 19:33:32.866 INFO 11004 --- [or_consumer_-17] o.a.s.r.client.http.utils.RegisterUtils : grpc client register success: {"appName":"127.0.0.1:8080","contextPath":"/grpc","path":"/grpc/echo","pathDesc":"echo","rpcType":"grpc","serviceName":"echo.EchoService","methodName":"echo","ruleName":"/grpc/echo","parameterTypes":"echo.EchoRequest,io.grpc.stub.StreamObserver","rpcExt":"{\"timeout\":5000,\"methodType\":\"UNARY\"}","enabled":true,"host":"172.20.10.6","port":8080,"registerMetaData":false}
+2021-06-18 19:33:32.866 INFO 11004 --- [or_consumer_-20] o.a.s.r.client.http.utils.RegisterUtils : grpc client register success: {"appName":"127.0.0.1:8080","contextPath":"/grpc","path":"/grpc/bidiStreamingFun","pathDesc":"bidiStreamingFun","rpcType":"grpc","serviceName":"stream.StreamService","methodName":"bidiStreamingFun","ruleName":"/grpc/bidiStreamingFun","parameterTypes":"io.grpc.stub.StreamObserver","rpcExt":"{\"timeout\":5000,\"methodType\":\"BIDI_STREAMING\"}","enabled":true,"host":"172.20.10.6","port":8080,"registerMetaData":false}
+2021-06-18 19:33:32.866 INFO 11004 --- [or_consumer_-21] o.a.s.r.client.http.utils.RegisterUtils : grpc client register success: {"appName":"127.0.0.1:8080","contextPath":"/grpc","path":"/grpc/unaryFun","pathDesc":"unaryFun","rpcType":"grpc","serviceName":"stream.StreamService","methodName":"unaryFun","ruleName":"/grpc/unaryFun","parameterTypes":"stream.RequestData,io.grpc.stub.StreamObserver","rpcExt":"{\"timeout\":5000,\"methodType\":\"UNARY\"}","enabled":true,"host":"172.20.10.6","port":8080,"registerMetaData":false}
+2021-06-18 19:33:32.866 INFO 11004 --- [or_consumer_-18] o.a.s.r.client.http.utils.RegisterUtils : grpc client register success: {"appName":"127.0.0.1:8080","contextPath":"/grpc","path":"/grpc/serverStreamingFun","pathDesc":"serverStreamingFun","rpcType":"grpc","serviceName":"stream.StreamService","methodName":"serverStreamingFun","ruleName":"/grpc/serverStreamingFun","parameterTypes":"stream.RequestData,io.grpc.stub.StreamObserver","rpcExt":"{\"timeout\":5000,\"methodType\":\"SERVER_STREAMING\"}","enabled":true,"host":"172.20.10.6","port":8080,"registerMetaData":false}
+```
+
+
+## Test
+
+The `shenyu-examples-grpc` project will automatically register interface methods annotated with `@ShenyuGrpcClient` in the Apache ShenYu gateway after successful startup.
+
+Open PluginList -> rpc proxy -> gRPC to see the list of plugin rule configurations:
+
+![](/img/shenyu/quick-start/grpc/grpc-service-en.png)
+
+Use `postman` to simulate `http` to request your gRPC service. The following is the request body.
+
+```json
+{
+ "data": [
+ {
+ "message": "hello grpc"
+ }
+ ]
+}
+```
+
+![](/img/shenyu/quick-start/grpc/grpc-echo.png)
+
+The parameters are passed in json format. The name of the key is `data` by default, and you can reset it in `GrpcConstants.JSON_DESCRIPTOR_PROTO_FIELD_NAME`. The input of value is based on the proto file defined by you.
+
+## Streaming
+
+the Apache ShenYu can support streaming of gRPC. The following shows the calls of the four method types of gRPC. In streaming, you can pass multiple parameters in the form of an array.
+
+
+- `UNARY`
+
+The request body like this.
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+Then, call gRPC service by `UNARY` method type.
+
+![](/img/shenyu/quick-start/grpc/grpc-unary.png)
+
+- `CLIENT_STREAMING`
+
+The request body like this.
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+Then, call gRPC service by `CLIENT_STREAMING` method type.
+
+![](/img/shenyu/quick-start/grpc/grpc-client-stream.png)
+
+- `SERVER_STREAMING`
+
+The request body like this.
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+Then, call gRPC service by `SERVER_STREAMING` method type.
+
+![](/img/shenyu/quick-start/grpc/grpc-server-stream.png)
+
+- `BIDI_STREAMING`
+
+
+The request body like this.
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+Then, call gRPC service by `BIDI_STREAMING` method type.
+
+![](/img/shenyu/quick-start/grpc/grpc-bidi-stream.png)
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-http.md b/versioned_docs/version-2.6.1/quick-start/quick-start-http.md
new file mode 100644
index 00000000000..21d05c79d11
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-http.md
@@ -0,0 +1,80 @@
+---
+title: Quick start with Http
+description: Quick start with http
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using Http. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http).
+
+## Environment to prepare
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the Divide plugin on in the BasicConfig `->` Plugin. In the Apache ShenYu gateway, the HTTP request is handled by the Divide plugin.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+
+
+Add the following dependencies to the gateway's `pom.xml` file:
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-divide
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-httpclient
+ ${project.version}
+
+```
+
+
+## Run the shenyu-examples-http project
+
+Download [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http)
+
+Execute the `org.apache.shenyu.examples.http.ShenyuTestHttpApplication` main method to start project.
+
+Since `2.4.3`, `shenyu.client.http.props.port` can be non-configured if you like.
+
+The following log appears when the startup is successful:
+
+```shell
+2021-02-10 00:57:07.561 INFO 3700 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : http client register success: {"appName":"http","context":"/http","path":"/http/test/**","pathDesc":"","rpcType":"http","host":"192.168.50.13","port":8188,"ruleName":"/http/test/**","enabled":true,"registerMetaData":false}
+2021-02-10 00:57:07.577 INFO 3700 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : http client register success: {"appName":"http","context":"/http","path":"/http/order/save","pathDesc":"Save order","rpcType":"http","host":"192.168.50.13","port":8188,"ruleName":"/http/order/save","enabled":true,"registerMetaData":false}
+2021-02-10 00:57:07.587 INFO 3700 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : http client register success: {"appName":"http","context":"/http","path":"/http/order/path/**/name","pathDesc":"","rpcType":"http","host":"192.168.50.13","port":8188,"ruleName":"/http/order/path/**/name","enabled":true,"registerMetaData":false}
+2021-02-10 00:57:07.596 INFO 3700 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : http client register success: {"appName":"http","context":"/http","path":"/http/order/findById","pathDesc":"Find by id","rpcType":"http","host":"192.168.50.13","port":8188,"ruleName":"/http/order/findById","enabled":true,"registerMetaData":false}
+2021-02-10 00:57:07.606 INFO 3700 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : http client register success: {"appName":"http","context":"/http","path":"/http/order/path/**","pathDesc":"","rpcType":"http","host":"192.168.50.13","port":8188,"ruleName":"/http/order/path/**","enabled":true,"registerMetaData":false}
+2021-02-10 00:57:08.023 INFO 3700 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8188
+2021-02-10 00:57:08.026 INFO 3700 --- [ main] o.d.s.e.http.ShenyuTestHttpApplication : Started ShenyuTestHttpApplication in 2.555 seconds (JVM running for 3.411)
+```
+
+
+
+## Test
+
+The `shenyu-examples-http` project will automatically register interface methods annotated with `@ShenyuSpringMvcClient` in the Apache ShenYu gateway after successful startup.
+
+Open PluginList -> Proxy -> divide to see the list of plugin rule configurations:
+
+![](/img/shenyu/quick-start/http/rule-list.png)
+
+Use PostMan to simulate HTTP to request your http service:
+
+![](/img/shenyu/quick-start/http/postman-test.png)
+
+Use IDEA HTTP Client Plugin to simulate HTTP to request your http service[local:no Shenyu proxy]:
+
+![](/img/shenyu/quick-start/http/idea-http-test-local.png)
+
+Use IDEA HTTP Client Plugin to simulate HTTP to request your http service[Shenyu proxy]:
+
+![](/img/shenyu/quick-start/http/idea-http-test-proxy.png)
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-motan.md b/versioned_docs/version-2.6.1/quick-start/quick-start-motan.md
new file mode 100644
index 00000000000..536382c9c13
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-motan.md
@@ -0,0 +1,97 @@
+---
+title: Quick start with Motan
+description: Motan quick start
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using Motan RPC. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-motan).
+
+
+## Environment to prepare
+
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the Sofa plugin on in the BasicConfig `->` Plugin.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+> Start up zookeeper in local.
+
+Import the gateway proxy plugin for `Motan` and add the following dependencies to the gateway's `pom.xml` file:
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-motan
+ ${project.version}
+
+
+
+ com.weibo
+ motan-core
+ 1.1.9
+
+
+
+ com.weibo
+ motan-registry-zookeeper
+ 1.1.9
+
+
+
+ com.weibo
+ motan-transport-netty4
+ 1.1.9
+
+
+
+ com.weibo
+ motan-springsupport
+ 1.1.9
+
+```
+
+
+
+## Run the shenyu-examples-motan project
+
+Download [shenyu-examples-motan](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-motan) .
+
+Run main method of `org.apache.shenyu.examples.motan.service.TestMotanApplication` to start this project.
+
+log info as follows after starting:
+
+```shell
+2021-07-18 16:46:25.388 INFO 96 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
+2021-07-18 16:46:25.393 INFO 96 --- [ main] o.a.s.e.m.service.TestMotanApplication : Started TestMotanApplication in 3.89 seconds (JVM running for 4.514)
+2021-07-18 16:46:25.396 INFO 96 --- [ main] info : [ZookeeperRegistry] Url (null) will set to available to Registry [zookeeper://localhost:2181/default_rpc/com.weibo.api.motan.registry.RegistryService/1.0/service]
+2021-07-18 16:46:25.399 INFO 96 --- [ Thread-6] o.a.s.c.c.s.ShenyuClientShutdownHook : hook Thread-0 will sleep 3000ms when it start
+2021-07-18 16:46:25.399 INFO 96 --- [ Thread-6] o.a.s.c.c.s.ShenyuClientShutdownHook : hook SpringContextShutdownHook will sleep 3000ms when it start
+2021-07-18 16:46:25.445 INFO 96 --- [ntLoopGroup-3-2] info : NettyChannelHandler channelActive: remote=/192.168.1.8:49740 local=/192.168.1.8:8002
+2021-07-18 16:46:25.445 INFO 96 --- [ntLoopGroup-3-1] info : NettyChannelHandler channelActive: remote=/192.168.1.8:49739 local=/192.168.1.8:8002
+2021-07-18 16:46:25.925 INFO 96 --- [or_consumer_-17] o.a.s.r.client.http.utils.RegisterUtils : motan client register success: {"appName":"motan","contextPath":"/motan","path":"/motan/hello","pathDesc":"","rpcType":"motan","serviceName":"org.apache.shenyu.examples.motan.service.MotanDemoService","methodName":"hello","ruleName":"/motan/hello","parameterTypes":"java.lang.String","rpcExt":"{\"methodInfo\":[{\"methodName\":\"hello\",\"params\":[{\"left\":\"java.lang.String\",\"right\":\"name\"}]}],\"group\":\"motan-shenyu-rpc\"}","enabled":true,"host":"192.168.220.1","port":8081,"registerMetaData":false}
+
+```
+
+
+
+## Test
+
+The `shenyu-examples-motan` project will automatically register the `@ShenyuMotanClient` annotated interface methods with the gateway and add selectors and rules. If not, you can manually add them.
+
+
+Open PluginList -> rpc proxy -> motan to see the list of plugin rule configurations:
+
+
+
+
+Use PostMan to simulate HTTP to request your Motan service:
+
+
+
+
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-sofa.md b/versioned_docs/version-2.6.1/quick-start/quick-start-sofa.md
new file mode 100644
index 00000000000..713ed8c12fd
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-sofa.md
@@ -0,0 +1,138 @@
+---
+title: Quick start with Sofa
+description: Quick start with Sofa
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using Sofa RPC. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sofa).
+
+## Environment to prepare
+
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the Sofa plugin on in the BasicConfig `->` Plugin, and set your registry address. Please make sure the registry center is open locally.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+
+
+If client is `sofa`, registry center is `Zookeeper`, please refer to the following configuration:
+
+
+
+```xml
+
+
+ com.alipay.sofa
+ sofa-rpc-all
+ 5.7.6
+
+
+ org.apache.curator
+ curator-client
+ 4.0.1
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.1
+
+
+ org.apache.curator
+ curator-recipes
+ 4.0.1
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-sofa
+ ${project.version}
+
+
+
+```
+
+## Run the shenyu-examples-sofa project
+
+Download [shenyu-examples-sofa](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sofa), replace the register address in `spring-dubbo.xml` with your local zk address, such as:
+
+```yaml
+com:
+ alipay:
+ sofa:
+ rpc:
+ registry-address: zookeeper://127.0.0.1:2181
+```
+
+Execute the `org.apache.shenyu.examples.sofa.service.TestSofaApplication` main method to start sofa service.
+
+The following log appears when the startup is successful:
+
+```shell
+2021-02-10 02:31:45.599 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/insert","pathDesc":"Insert a row of data","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaSingleParamService","methodName":"insert","ruleName":"/sofa/insert","parameterTypes":"org.dromara.shenyu.examples.sofa.api.entity.SofaSimpleTypeBean","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.605 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findById","pathDesc":"Find by Id","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaSingleParamService","methodName":"findById","ruleName":"/sofa/findById","parameterTypes":"java.lang.String","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.611 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findAll","pathDesc":"Get all data","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaSingleParamService","methodName":"findAll","ruleName":"/sofa/findAll","parameterTypes":"","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.616 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/batchSaveNameAndId","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"batchSaveNameAndId","ruleName":"/sofa/batchSaveNameAndId","parameterTypes":"java.util.List,java.lang.String,java.lang.String#org.dromara.shenyu.examples.sofa.api.entity.SofaSimpleTypeBean","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.621 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/saveComplexBeanAndName","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"saveComplexBeanAndName","ruleName":"/sofa/saveComplexBeanAndName","parameterTypes":"org.dromara.shenyu.examples.sofa.api.entity.SofaComplexTypeBean,java.lang.String","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.627 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findByArrayIdsAndName","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"findByArrayIdsAndName","ruleName":"/sofa/findByArrayIdsAndName","parameterTypes":"[Ljava.lang.Integer;,java.lang.String","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.632 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findByStringArray","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"findByStringArray","ruleName":"/sofa/findByStringArray","parameterTypes":"[Ljava.lang.String;","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.637 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/saveTwoList","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"saveTwoList","ruleName":"/sofa/saveTwoList","parameterTypes":"java.util.List,java.util.Map#org.dromara.shenyu.examples.sofa.api.entity.SofaComplexTypeBean","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.642 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/batchSave","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"batchSave","ruleName":"/sofa/batchSave","parameterTypes":"java.util.List#org.dromara.shenyu.examples.sofa.api.entity.SofaSimpleTypeBean","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.647 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findByListId","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"findByListId","ruleName":"/sofa/findByListId","parameterTypes":"java.util.List","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.653 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/saveComplexBean","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"saveComplexBean","ruleName":"/sofa/saveComplexBean","parameterTypes":"org.dromara.shenyu.examples.sofa.api.entity.SofaComplexTypeBean","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:45.660 INFO 2156 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findByIdsAndName","pathDesc":"","rpcType":"sofa","serviceName":"org.dromara.shenyu.examples.sofa.api.service.SofaMultiParamService","methodName":"findByIdsAndName","ruleName":"/sofa/findByIdsAndName","parameterTypes":"java.util.List,java.lang.String","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true}
+2021-02-10 02:31:46.055 INFO 2156 --- [ main] o.a.c.f.imps.CuratorFrameworkImpl : Starting
+2021-02-10 02:31:46.059 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
+2021-02-10 02:31:46.059 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:host.name=host.docker.internal
+2021-02-10 02:31:46.059 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.version=1.8.0_211
+2021-02-10 02:31:46.059 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.vendor=Oracle Corporation
+2021-02-10 02:31:46.059 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.home=C:\Program Files\Java\jdk1.8.0_211\jre
+2021-02-10 02:31:46.059 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.class.path=C:\Program Files\Java\jdk1.8.0_211\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\rt.jar;D:\X\dlm_github\shenyu\shenyu-examples\shenyu-examples-sofa\shenyu-examples-sofa-service\target\classes;D:\SOFT\m2\repository\com\alipay\sofa\rpc-sofa-boot-starter\6.0.4\rpc-sofa-boot-starter-6.0.4.jar;D:\SOFT\m2\repository\com\alipay\sofa\rpc-sofa-boot-core\6.0.4\rpc-sofa-boot-core-6.0.4.jar;D:\SOFT\m2\repository\com\alipay\sofa\sofa-rpc-all\5.5.7\sofa-rpc-all-5.5.7.jar;D:\SOFT\m2\repository\com\alipay\sofa\bolt\1.4.6\bolt-1.4.6.jar;D:\SOFT\m2\repository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;D:\SOFT\m2\repository\io\netty\netty-all\4.1.43.Final\netty-all-4.1.43.Final.jar;D:\SOFT\m2\repository\com\alipay\sofa\hessian\3.3.6\hessian-3.3.6.jar;D:\SOFT\m2\repository\com\alipay\sofa\tracer-core\2.1.2\tracer-core-2.1.2.jar;D:\SOFT\m2\repository\io\opentracing\opentracing-api\0.22.0\opentracing-api-0.22.0.jar;D:\SOFT\m2\repository\io\opentracing\opentracing-noop\0.22.0\opentracing-noop-0.22.0.jar;D:\SOFT\m2\repository\io\opentracing\opentracing-mock\0.22.0\opentracing-mock-0.22.0.jar;D:\SOFT\m2\repository\io\opentracing\opentracing-util\0.22.0\opentracing-util-0.22.0.jar;D:\SOFT\m2\repository\com\alipay\sofa\lookout\lookout-api\1.4.1\lookout-api-1.4.1.jar;D:\SOFT\m2\repository\com\alipay\sofa\runtime-sofa-boot-starter\3.1.4\runtime-sofa-boot-starter-3.1.4.jar;D:\SOFT\m2\repository\org\apache\curator\curator-client\2.9.1\curator-client-2.9.1.jar;D:\SOFT\m2\repository\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;D:\SOFT\m2\repository\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\SOFT\m2\repository\jline\jline\0.9.94\jline-0.9.94.jar;D:\SOFT\m2\repository\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;D:\SOFT\m2\repository\com\google\guava\guava\16.0.1\guava-16.0.1.jar;D:\SOFT\m2\repository\org\apache\curator\curator-framework\2.9.1\curator-framework-2.9.1.jar;D:\SOFT\m2\repository\org\apache\curator\curator-recipes\2.9.1\curator-recipes-2.9.1.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-jaxrs\3.0.12.Final\resteasy-jaxrs-3.0.12.Final.jar;D:\SOFT\m2\repository\org\jboss\spec\javax\annotation\jboss-annotations-api_1.1_spec\1.0.1.Final\jboss-annotations-api_1.1_spec-1.0.1.Final.jar;D:\SOFT\m2\repository\javax\activation\activation\1.1.1\activation-1.1.1.jar;D:\SOFT\m2\repository\org\apache\httpcomponents\httpclient\4.5.10\httpclient-4.5.10.jar;D:\SOFT\m2\repository\org\apache\httpcomponents\httpcore\4.4.12\httpcore-4.4.12.jar;D:\SOFT\m2\repository\commons-io\commons-io\2.1\commons-io-2.1.jar;D:\SOFT\m2\repository\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-client\3.0.12.Final\resteasy-client-3.0.12.Final.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-jackson-provider\3.0.12.Final\resteasy-jackson-provider-3.0.12.Final.jar;D:\SOFT\m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.12\jackson-core-asl-1.9.12.jar;D:\SOFT\m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.12\jackson-mapper-asl-1.9.12.jar;D:\SOFT\m2\repository\org\codehaus\jackson\jackson-jaxrs\1.9.12\jackson-jaxrs-1.9.12.jar;D:\SOFT\m2\repository\org\codehaus\jackson\jackson-xc\1.9.12\jackson-xc-1.9.12.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-netty4\3.0.12.Final\resteasy-netty4-3.0.12.Final.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-validator-provider-11\3.0.12.Final\resteasy-validator-provider-11-3.0.12.Final.jar;D:\SOFT\m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\SOFT\m2\repository\org\jboss\resteasy\jaxrs-api\3.0.12.Final\jaxrs-api-3.0.12.Final.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-multipart-provider\3.0.12.Final\resteasy-multipart-provider-3.0.12.Final.jar;D:\SOFT\m2\repository\org\jboss\resteasy\resteasy-jaxb-provider\3.0.12.Final\resteasy-jaxb-provider-3.0.12.Final.jar;D:\SOFT\m2\repository\com\sun\xml\bind\jaxb-impl\2.2.7\jaxb-impl-2.2.7.jar;D:\SOFT\m2\repository\com\sun\xml\bind\jaxb-core\2.2.7\jaxb-core-2.2.7.jar;D:\SOFT\m2\repository\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;D:\SOFT\m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;D:\SOFT\m2\repository\com\sun\istack\istack-commons-runtime\2.16\istack-commons-runtime-2.16.jar;D:\SOFT\m2\repository\com\sun\xml\fastinfoset\FastInfoset\1.2.12\FastInfoset-1.2.12.jar;D:\SOFT\m2\repository\javax\xml\bind\jsr173_api\1.0\jsr173_api-1.0.jar;D:\SOFT\m2\repository\javax\mail\mail\1.5.0-b01\mail-1.5.0-b01.jar;D:\SOFT\m2\repository\org\apache\james\apache-mime4j\0.6\apache-mime4j-0.6.jar;D:\SOFT\m2\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\SOFT\m2\repository\com\alibaba\dubbo\2.4.10\dubbo-2.4.10.jar;D:\SOFT\m2\repository\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\SOFT\m2\repository\com\101tec\zkclient\0.10\zkclient-0.10.jar;D:\SOFT\m2\repository\com\alibaba\nacos\nacos-api\1.0.0\nacos-api-1.0.0.jar;D:\SOFT\m2\repository\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar;D:\SOFT\m2\repository\org\apache\commons\commons-lang3\3.9\commons-lang3-3.9.jar;D:\SOFT\m2\repository\com\alibaba\nacos\nacos-client\1.0.0\nacos-client-1.0.0.jar;D:\SOFT\m2\repository\com\alibaba\nacos\nacos-common\1.0.0\nacos-common-1.0.0.jar;D:\SOFT\m2\repository\commons-codec\commons-codec\1.13\commons-codec-1.13.jar;D:\SOFT\m2\repository\com\fasterxml\jackson\core\jackson-core\2.10.1\jackson-core-2.10.1.jar;D:\SOFT\m2\repository\com\fasterxml\jackson\core\jackson-databind\2.10.1\jackson-databind-2.10.1.jar;D:\SOFT\m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.1\jackson-annotations-2.10.1.jar;D:\SOFT\m2\repository\io\prometheus\simpleclient\0.5.0\simpleclient-0.5.0.jar;D:\SOFT\m2\repository\org\springframework\spring-beans\5.2.2.RELEASE\spring-beans-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\spring-core\5.2.2.RELEASE\spring-core-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\spring-jcl\5.2.2.RELEASE\spring-jcl-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\com\alipay\sofa\infra-sofa-boot-starter\3.1.4\infra-sofa-boot-starter-3.1.4.jar;D:\SOFT\m2\repository\com\alipay\sofa\common\log-sofa-boot-starter\1.0.18\log-sofa-boot-starter-1.0.18.jar;D:\SOFT\m2\repository\org\springframework\spring-context\5.2.2.RELEASE\spring-context-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\spring-aop\5.2.2.RELEASE\spring-aop-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\spring-expression\5.2.2.RELEASE\spring-expression-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\com\alipay\sofa\common\sofa-common-tools\1.0.18\sofa-common-tools-1.0.18.jar;D:\SOFT\m2\repository\org\springframework\boot\spring-boot-starter-validation\2.2.2.RELEASE\spring-boot-starter-validation-2.2.2.RELEASE.jar;D:\SOFT\m2\repository\jakarta\validation\jakarta.validation-api\2.0.1\jakarta.validation-api-2.0.1.jar;D:\SOFT\m2\repository\org\hibernate\validator\hibernate-validator\6.0.18.Final\hibernate-validator-6.0.18.Final.jar;D:\SOFT\m2\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\SOFT\m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.29\tomcat-embed-el-9.0.29.jar;D:\SOFT\m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.2.2.RELEASE\spring-boot-autoconfigure-2.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\boot\spring-boot\2.2.2.RELEASE\spring-boot-2.2.2.RELEASE.jar;D:\X\dlm_github\shenyu\shenyu-examples\shenyu-examples-sofa\shenyu-examples-sofa-api\target\classes;D:\SOFT\m2\repository\org\projectlombok\lombok\1.18.10\lombok-1.18.10.jar;D:\X\dlm_github\shenyu\shenyu-spring-boot-starter\shenyu-spring-boot-starter-client\shenyu-spring-boot-starter-client-sofa\target\classes;D:\SOFT\m2\repository\org\springframework\boot\spring-boot-starter\2.2.2.RELEASE\spring-boot-starter-2.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\boot\spring-boot-starter-logging\2.2.2.RELEASE\spring-boot-starter-logging-2.2.2.RELEASE.jar;D:\SOFT\m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\SOFT\m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\SOFT\m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;D:\SOFT\m2\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;D:\SOFT\m2\repository\org\slf4j\jul-to-slf4j\1.7.29\jul-to-slf4j-1.7.29.jar;D:\SOFT\m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\SOFT\m2\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;D:\X\dlm_github\shenyu\shenyu-client\shenyu-client-sofa\target\classes;D:\X\dlm_github\shenyu\shenyu-client\shenyu-client-common\target\classes;D:\X\dlm_github\shenyu\shenyu-common\target\classes;D:\SOFT\m2\repository\org\springframework\boot\spring-boot-starter-json\2.2.2.RELEASE\spring-boot-starter-json-2.2.2.RELEASE.jar;D:\SOFT\m2\repository\org\springframework\spring-web\5.2.2.RELEASE\spring-web-5.2.2.RELEASE.jar;D:\SOFT\m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.1\jackson-datatype-jdk8-2.10.1.jar;D:\SOFT\m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.10.1\jackson-datatype-jsr310-2.10.1.jar;D:\SOFT\m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.1\jackson-module-parameter-names-2.10.1.jar;D:\SOFT\m2\repository\com\squareup\okhttp3\okhttp\3.14.4\okhttp-3.14.4.jar;D:\SOFT\m2\repository\com\squareup\okio\okio\1.17.2\okio-1.17.2.jar;D:\SOFT\m2\repository\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;D:\SOFT\m2\repository\org\slf4j\slf4j-api\1.7.29\slf4j-api-1.7.29.jar;D:\SOFT\m2\repository\org\slf4j\jcl-over-slf4j\1.7.29\jcl-over-slf4j-1.7.29.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.library.path=C:\Program Files\Java\jdk1.8.0_211\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_211\bin;C:\Program Files\Java\jdk1.8.0_211\jre\bin;D:\SOFT\apache-maven-3.5.0\bin;C:\Program Files\Go\bin;C:\Program Files\nodejs\;C:\Program Files\Python\Python38\;C:\Program Files\OpenSSL-Win64\bin;C:\Program Files\Git\bin;D:\SOFT\protobuf-2.5.0\src;D:\SOFT\zlib-1.2.8;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;D:\SOFT\gradle-6.0-all\gradle-6.0\bin;C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;D:\SOFT\hugo_extended_0.55.5_Windows-64bit;C:\Users\DLM\AppData\Local\Microsoft\WindowsApps;C:\Users\DLM\go\bin;C:\Users\DLM\AppData\Roaming\npm;;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nimbella-cli\bin;.
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.io.tmpdir=C:\Users\DLM\AppData\Local\Temp\
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.compiler=
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.name=Windows 10
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.arch=amd64
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.version=10.0
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.name=DLM
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.home=C:\Users\DLM
+2021-02-10 02:31:46.060 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.dir=D:\X\dlm_github\shenyu
+2021-02-10 02:31:46.061 INFO 2156 --- [ main] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=127.0.0.1:21810 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@3e850122
+2021-02-10 02:31:46.069 INFO 2156 --- [27.0.0.1:21810)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server 127.0.0.1/127.0.0.1:21810. Will not attempt to authenticate using SASL (unknown error)
+2021-02-10 02:31:46.071 INFO 2156 --- [27.0.0.1:21810)] org.apache.zookeeper.ClientCnxn : Socket connection established to 127.0.0.1/127.0.0.1:21810, initiating session
+2021-02-10 02:31:46.078 INFO 2156 --- [27.0.0.1:21810)] org.apache.zookeeper.ClientCnxn : Session establishment complete on server 127.0.0.1/127.0.0.1:21810, sessionid = 0x10005b0d05e0001, negotiated timeout = 40000
+2021-02-10 02:31:46.081 INFO 2156 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: CONNECTED
+2021-02-10 02:31:46.093 WARN 2156 --- [ main] org.apache.curator.utils.ZKPaths : The version of ZooKeeper being used doesn't support Container nodes. CreateMode.PERSISTENT will be used instead.
+2021-02-10 02:31:46.141 INFO 2156 --- [ main] o.d.s.e.s.service.TestSofaApplication : Started TestSofaApplication in 3.41 seconds (JVM running for 4.423)
+```
+
+
+## Test
+
+The `shenyu-examples-sofa` project will automatically register interface methods annotated with `@ShenyuSofaClient` in the Apache ShenYu gateway after successful startup.
+
+Open PluginList -> rpc proxy -> sofa to see the list of plugin rule configurations:
+
+![](/img/shenyu/quick-start/sofa/rule-list.png)
+
+Use PostMan to simulate HTTP to request your Sofa service:
+
+![](/img/shenyu/quick-start/sofa/postman-findbyid.png)
+
+Complex multi-parameter example: The related interface implementation class is `org.apache.shenyu.examples.sofa.service.impl.SofaMultiParamServiceImpl#batchSaveNameAndId`
+
+```java
+@Override
+@ShenyuSofaClient(path = "/batchSaveNameAndId")
+public SofaSimpleTypeBean batchSaveNameAndId(final List sofaTestList, final String id, final String name) {
+ SofaSimpleTypeBean simpleTypeBean = new SofaSimpleTypeBean();
+ simpleTypeBean.setId(id);
+ simpleTypeBean.setName("hello world shenyu sofa param batchSaveAndNameAndId :" + name + ":" + sofaTestList.stream().map(SofaSimpleTypeBean::getName).collect(Collectors.joining("-")));
+ return simpleTypeBean;
+}
+```
+
+![](/img/shenyu/quick-start/sofa/postman-multiparams.png)
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-springcloud.md b/versioned_docs/version-2.6.1/quick-start/quick-start-springcloud.md
new file mode 100644
index 00000000000..710c8045359
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-springcloud.md
@@ -0,0 +1,166 @@
+---
+title: Quick start with Spring Cloud
+description: Quick start with SpringCloud
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using Spring Cloud. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-springcloud) .
+
+## Environment to prepare
+
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the springCloud plugin on in the BasicConfig `->` Plugin.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+
+Add the gateway proxy plugin for `Spring Cloud` and add your registry center dependencies:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-springcloud
+ ${project.version}
+
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+ 2.2.0.RELEASE
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-httpclient
+ ${project.version}
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+ 2.2.0.RELEASE
+
+
+```
+
+
+`eureka` config information:
+
+```yml
+eureka:
+ client:
+ serviceUrl:
+ defaultZone: http://localhost:8761/eureka/
+ instance:
+ prefer-ip-address: true
+```
+
+Note: Please ensure that the spring Cloud registry service discovery configuration is enabled
+
+* Configuration method
+
+```yml
+spring:
+ cloud:
+ discovery:
+ enabled: true
+```
+
+* code method
+
+```java
+@SpringBootApplication
+@EnableDiscoveryClient
+public class ShenyuBootstrapApplication {
+
+ /**
+ * Main Entrance.
+ *
+ * @param args startup arguments
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuBootstrapApplication.class, args);
+ }
+}
+```
+
+Restart the `shenyu-bootstrap` project.
+
+## Run the shenyu-examples-springcloud project
+
+In the example project we used `Eureka` as the registry for `Spring Cloud`. You can use the local `Eureka` or the application provided in the example.
+
+
+Download [shenyu-examples-eureka](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-eureka) 、[shenyu-examples-springcloud](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-springcloud) .
+
+
+Startup the Eureka service:
+Execute the `org.apache.shenyu.examples.eureka.EurekaServerApplication` main method to start project.
+
+Startup the Spring Cloud service:
+Execute the `org.apache.shenyu.examples.springcloud.ShenyuTestSpringCloudApplication` main method to start project.
+
+Since `2.4.3`, `shenyu.client.springCloud.props.port` can be non-configured if you like.
+
+The following log appears when the startup is successful:
+
+```shell
+2021-02-10 14:03:51.301 INFO 2860 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
+2021-02-10 14:03:51.669 INFO 2860 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/save","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/save","enabled":true}
+2021-02-10 14:03:51.676 INFO 2860 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/path/**","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/path/**","enabled":true}
+2021-02-10 14:03:51.682 INFO 2860 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/findById","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/findById","enabled":true}
+2021-02-10 14:03:51.688 INFO 2860 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/path/**/name","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/path/**/name","enabled":true}
+2021-02-10 14:03:51.692 INFO 2860 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/test/**","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/test/**","enabled":true}
+2021-02-10 14:03:52.806 WARN 2860 --- [ main] ockingLoadBalancerClientRibbonWarnLogger : You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon is in maintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it, set the value of `spring.cloud.loadbalancer.ribbon.enabled` to `false` or remove spring-cloud-starter-netflix-ribbon from your project.
+2021-02-10 14:03:52.848 WARN 2860 --- [ main] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with default default cache. You can switch to using Caffeine cache, by adding it to the classpath.
+2021-02-10 14:03:52.921 INFO 2860 --- [ main] o.s.c.n.eureka.InstanceInfoFactory : Setting initial instance status as: STARTING
+2021-02-10 14:03:52.949 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Initializing Eureka in region us-east-1
+2021-02-10 14:03:53.006 INFO 2860 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using JSON encoding codec LegacyJacksonJson
+2021-02-10 14:03:53.006 INFO 2860 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using JSON decoding codec LegacyJacksonJson
+2021-02-10 14:03:53.110 INFO 2860 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using XML encoding codec XStreamXml
+2021-02-10 14:03:53.110 INFO 2860 --- [ main] c.n.d.provider.DiscoveryJerseyProvider : Using XML decoding codec XStreamXml
+2021-02-10 14:03:53.263 INFO 2860 --- [ main] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
+2021-02-10 14:03:53.546 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Disable delta property : false
+2021-02-10 14:03:53.546 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Single vip registry refresh property : null
+2021-02-10 14:03:53.547 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Force full registry fetch : false
+2021-02-10 14:03:53.547 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Application is null : false
+2021-02-10 14:03:53.547 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Registered Applications size is zero : true
+2021-02-10 14:03:53.547 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Application version is -1: true
+2021-02-10 14:03:53.547 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server
+2021-02-10 14:03:53.754 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : The response status is 200
+2021-02-10 14:03:53.756 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Starting heartbeat executor: renew interval is: 30
+2021-02-10 14:03:53.758 INFO 2860 --- [ main] c.n.discovery.InstanceInfoReplicator : InstanceInfoReplicator onDemand update allowed rate per min is 4
+2021-02-10 14:03:53.761 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Discovery Client initialized at timestamp 1612937033760 with initial instances count: 0
+2021-02-10 14:03:53.762 INFO 2860 --- [ main] o.s.c.n.e.s.EurekaServiceRegistry : Registering application SPRINGCLOUD-TEST with eureka with status UP
+2021-02-10 14:03:53.763 INFO 2860 --- [ main] com.netflix.discovery.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1612937033763, current=UP, previous=STARTING]
+2021-02-10 14:03:53.765 INFO 2860 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SPRINGCLOUD-TEST/host.docker.internal:springCloud-test:8884: registering service...
+2021-02-10 14:03:53.805 INFO 2860 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8884 (http) with context path ''
+2021-02-10 14:03:53.807 INFO 2860 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8884
+2021-02-10 14:03:53.837 INFO 2860 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SPRINGCLOUD-TEST/host.docker.internal:springCloud-test:8884 - registration status: 204
+2021-02-10 14:03:54.231 INFO 2860 --- [ main] o.d.s.e.s.ShenyuTestSpringCloudApplication : Started ShenyuTestSpringCloudApplication in 6.338 seconds (JVM running for 7.361)
+```
+
+## Test
+
+The `shenyu-examples-springcloud` project will automatically register interface methods annotated with `@ShenyuSpringCloudClient` in the Apache ShenYu gateway after successful startup.
+
+Open PluginList -> rpc proxy -> springCloud to see the list of plugin rule configurations:
+
+![](/img/shenyu/quick-start/springcloud/rule-list.png)
+
+Use PostMan to simulate HTTP to request your SpringCloud service:
+
+![](/img/shenyu/quick-start/springcloud/postman-test.png)
+
+Use IDEA HTTP Client Plugin to simulate HTTP to request your SpringCloud service[local:no Shenyu proxy]:
+
+![](/img/shenyu/quick-start/springcloud/idea-http-test-local.png)
+
+Use IDEA HTTP Client Plugin to simulate HTTP to request your SpringCloud service[Shenyu proxy]:
+
+![](/img/shenyu/quick-start/springcloud/idea-http-test-proxy.png)
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-tars.md b/versioned_docs/version-2.6.1/quick-start/quick-start-tars.md
new file mode 100644
index 00000000000..5302f435ae6
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-tars.md
@@ -0,0 +1,118 @@
+---
+title: Quick start with Tars
+description: Quick start with Tars
+---
+
+This document introduces how to quickly access the Apache ShenYu Gateway using Tars. You can get the code example of this document by clicking [here](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-tars) .
+
+## Environment to prepare
+
+
+Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through [local deployment](../deployment/deployment-local) .
+
+After successful startup, you need to open the Sofa plugin on in the BasicConfig `->` Plugin.
+
+
+
+If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.
+
+> Note: Before starting, make sure the gateway has added dependencies.
+
+
+
+`shenyu-bootstrap` need to import tars dependencies:
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-tars
+ ${project.version}
+
+
+
+ com.tencent.tars
+ tars-client
+ 1.7.2
+
+```
+
+## Run the shenyu-examples-tars project
+
+Download [shenyu-examples-tars](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-tars) .
+
+Modify `host` in `application.yml` to be your local IP
+
+Modify config `src/main/resources/ShenyuExampleServer.ShenyuExampleApp.config.conf`:
+
+* It is recommended to make clear the meaning of the main configuration items of config, [refer to the development guide](https://github.com/TarsCloud/TarsJava/blob/master/docs/tars_java_user_guide.md)
+* bind IP in config should pay attention to providing cost machine
+* local=..., Indicates the open port that the native machine connects to the tarsnode. If there is no tarsnode, this configuration can be dropped
+* `locator`: Indicates the address (frame address) of the main control center, which is used to obtain the IP list according to the service name, If Registry is not required to locate the service, this configuration can be dropped
+* `node=tars.tarsnode.ServerObj@xxxx`, Indicates the address of the connected tarsnode. If there is no tarsnode locally, this configuration can be removed
+
+More config configuration instructions, Please refer to [TARS Official Documentation](https://github.com/TarsCloud/TarsJava/blob/master/docs/tars_java_user_guide.md)
+
+Execute the `org.apache.shenyu.examples.tars.ShenyuTestTarsApplication` main method to start project.
+
+**Note:** The `configuration file address` needs to be specified in the startup command when the service starts **-Dconfig=xxx/ShenyuExampleServer.ShenyuExampleApp.config.conf**
+
+If the `-Dconfig` parameter is not added, the configuration may throw the following exceptions:
+
+```text
+com.qq.tars.server.config.ConfigurationException: error occurred on load server config
+ at com.qq.tars.server.config.ConfigurationManager.loadServerConfig(ConfigurationManager.java:113)
+ at com.qq.tars.server.config.ConfigurationManager.init(ConfigurationManager.java:57)
+ at com.qq.tars.server.core.Server.loadServerConfig(Server.java:90)
+ at com.qq.tars.server.core.Server.(Server.java:42)
+ at com.qq.tars.server.core.Server.(Server.java:38)
+ at com.qq.tars.spring.bean.PropertiesListener.onApplicationEvent(PropertiesListener.java:37)
+ at com.qq.tars.spring.bean.PropertiesListener.onApplicationEvent(PropertiesListener.java:31)
+ at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
+ at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
+ at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
+ at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
+ at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:76)
+ at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
+ at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
+ at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
+ at org.apache.shenyu.examples.tars.ShenyuTestTarsApplication.main(ShenyuTestTarsApplication.java:38)
+Caused by: java.lang.NullPointerException
+ at java.io.FileInputStream.(FileInputStream.java:130)
+ at java.io.FileInputStream.(FileInputStream.java:93)
+ at com.qq.tars.common.util.Config.parseFile(Config.java:211)
+ at com.qq.tars.server.config.ConfigurationManager.loadServerConfig(ConfigurationManager.java:63)
+ ... 17 more
+The exception occurred at load server config
+```
+
+The following log appears when the startup is successful:
+
+```shell
+[SERVER] server starting at tcp -h 127.0.0.1 -p 21715 -t 60000...
+[SERVER] server started at tcp -h 127.0.0.1 -p 21715 -t 60000...
+[SERVER] server starting at tcp -h 127.0.0.1 -p 21714 -t 3000...
+[SERVER] server started at tcp -h 127.0.0.1 -p 21714 -t 3000...
+[SERVER] The application started successfully.
+The session manager service started...
+[SERVER] server is ready...
+2021-02-09 13:28:24.643 INFO 16016 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 55290 (http) with context path ''
+2021-02-09 13:28:24.645 INFO 16016 --- [ main] o.d.s.e.tars.ShenyuTestTarsApplication : Started ShenyuTestTarsApplication in 4.232 seconds (JVM running for 5.1)
+2021-02-09 13:28:24.828 INFO 16016 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : tars client register success: {"appName":"127.0.0.1:21715","contextPath":"/tars","path":"/tars/helloInt","pathDesc":"","rpcType":"tars","serviceName":"ShenyuExampleServer.ShenyuExampleApp.HelloObj","methodName":"helloInt","ruleName":"/tars/helloInt","parameterTypes":"int,java.lang.String","rpcExt":"{\"methodInfo\":[{\"methodName\":\"helloInt\",\"params\":[{},{}],\"returnType\":\"java.lang.Integer\"},{\"methodName\":\"hello\",\"params\":[{},{}],\"returnType\":\"java.lang.String\"}]}","enabled":true}
+2021-02-09 13:28:24.837 INFO 16016 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils : tars client register success: {"appName":"127.0.0.1:21715","contextPath":"/tars","path":"/tars/hello","pathDesc":"","rpcType":"tars","serviceName":"ShenyuExampleServer.ShenyuExampleApp.HelloObj","methodName":"hello","ruleName":"/tars/hello","parameterTypes":"int,java.lang.String","rpcExt":"{\"methodInfo\":[{\"methodName\":\"helloInt\",\"params\":[{},{}],\"returnType\":\"java.lang.Integer\"},{\"methodName\":\"hello\",\"params\":[{},{}],\"returnType\":\"java.lang.String\"}]}","enabled":true}
+```
+
+
+## Test
+
+The `shenyu-examples-tars` project will automatically register interface methods annotated with `@ShenyuTarsClient` in the Apache ShenYu gateway after successful startup.
+
+Open PluginList -> rpc proxy -> tars to see the list of plugin rule configurations:
+
+![](/img/shenyu/quick-start/tars/rule-list.png)
+
+Use PostMan to simulate HTTP to request your tars service:
+
+![](/img/shenyu/quick-start/tars/postman-test.png)
+
diff --git a/versioned_docs/version-2.6.1/quick-start/quick-start-websocket.md b/versioned_docs/version-2.6.1/quick-start/quick-start-websocket.md
new file mode 100644
index 00000000000..754086e8c99
--- /dev/null
+++ b/versioned_docs/version-2.6.1/quick-start/quick-start-websocket.md
@@ -0,0 +1,152 @@
+---
+title: Quick start with Websocket
+description: Websocket quick start
+---
+
+This document introduces how to quickly access the Apache ShenYu gateway using Websocket.
+
+
+## Environment to prepare
+
+> Refer to [local deployment](../deployment/deployment-local) to deploy the Shenyu gateway.
+
+1. Deploy the `shenyu-admin` service.
+
+- After successful launch, you need to set the `Websocket` plugin to be enabled in the page's basic configuration `->`Plugin Management.
+
+
+
+2. Deploy the `shenyu-bootstrap` service.
+- After starting, `shenyu-bootstrap` will synchronize the data via the `websocket` protocol according to the address configured in `shenyu.sync.websocket.url`.
+
+> Note: Before starting, make sure that the gateway has introduced the relevant dependency, which is introduced by default.
+
+Import the gateway proxy plugin for `Websocket` and add the following dependencies to the gateway's `pom.xml` file.
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-websocket
+ ${project.version}
+
+```
+
+
+
+## Run the shenyu-examples-websocket project
+
+1. Download [shenyu-examples-websocket](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-websocket/shenyu-example-spring-annotation-websocket) (`native-websocket` and `reactive-websocket` can refer to the subprojects under [shenyu-examples-websocket](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-websocket)).
+
+2. Run main method of `org.apache.shenyu.examples.websocket.TestAnnotationWebsocketApplication` to start this project.
+- The examples project will synchronize the websocket service information to `shenyu-admin` via the `http` protocol according to the address configured in `shenyu.register.serverLists`, and then to `shenyu-bootstrap` by `shenyu-admin`.
+
+log info as follows after starting:
+
+```shell
+2022-08-09 23:37:34.994 INFO 61398 --- [or_consumer_-21] o.a.s.r.client.http.utils.RegisterUtils : metadata client register success: {"appName":"ws-annotation","contextPath":"/ws-annotation","path":"/ws-annotation/myWs","rpcType":"websocket","ruleName":"/ws-annotation/myWs","enabled":true,"pluginNames":[],"registerMetaData":false,"timeMillis":1660059454701}
+2022-08-09 23:37:35.019 INFO 61398 --- [or_consumer_-18] o.a.s.r.client.http.utils.RegisterUtils : uri client register success: {"protocol":"ws://","appName":"ws-annotation","contextPath":"/ws-annotation","rpcType":"websocket","host":"192.168.1.3","port":8001}
+```
+
+
+
+## Test
+
+1. The `shenyu-examples-websocket` project will automatically register the interface methods annotated with `@ShenyuSpringWebSocketClient` to the gateway and add selectors and rules after successful start, you can see the information of `shenyu-examples-websocket` service registration by visiting `shenyu-admin` page -> PluginList -> Proxy -> Websocket to see the `shenyu-examples-websocket` service registration information, if not, you can refer to [Websocket plugin](../plugin-center/proxy/websocket-plugin.md) to add the configuration manually.
+
+
+
+2. The following test code (see attachment) simulates the request method of the `Websocket` protocol to request your `Websocket` service.
+
+
+
+
+
+## Annexes
+
+**websocket debugging code**
+
+- Create a file called websocket.html and copy the following code into the file.
+- Open websocket.html with Chrome.
+
+```html
+
+
+
+
+ Shenyu WebSocket Test
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/versioned_docs/version-2.6.1/user-guide/_category_.json b/versioned_docs/version-2.6.1/user-guide/_category_.json
new file mode 100644
index 00000000000..2e41e63c016
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "User Guide",
+ "position": 5
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/_category_.json b/versioned_docs/version-2.6.1/user-guide/admin-usage/_category_.json
new file mode 100644
index 00000000000..f0c5b1288f2
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Admin Usage",
+ "position": 1
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/api-document.md b/versioned_docs/version-2.6.1/user-guide/admin-usage/api-document.md
new file mode 100644
index 00000000000..8fc5dee3a97
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/api-document.md
@@ -0,0 +1,86 @@
+---
+title: API Document Management
+keywords: ["api doc Document"]
+description: API document management
+---
+
+## 1. Design Notes
+
+When the front and back end are jointly debugged, it is usually necessary for the back end to give documents to detail the input and output of the interface;
+
+After the backend development is complete, you need to test whether the access gateway is successful.
+
+In order to reduce the sense of fragmentation and improve the user experience of front-end and back-end development, it is necessary to see the API documentation in shenyu-admin and test the API directly.
+
+## 2. How to use
+
+The brief introduce is as follows.
+- Back-end development produces API documents in shenyu-admin.
+> Three methods of `remotely pulling swagger`, `manual filling`, and `client registration` are already supported. From the perspective of functional integrity and user experience, `remotely pulling swagger` is currently recommended, and the latter two methods will be in Continuous function enhancement in later versions.
+- The frontend looks at the API documentation in shenyu-admin and starts development.
+> During joint debugging, developers (including front-end and backend) may use the testing function in shenyu-admin to request APIs directly.
+
+## 3. Set the global environment address
+
+In actual use, you may have multiple gateway addresses (such as production environment, test environment, or public network environment, intranet environment), you can manage them in `Apache ShenYu` Gateway Management System --> BasicConfig --> Dictionary, Set multiple gateway addresses.
+
+![apidoc-env-en](/img/shenyu/basicConfig/apiManagement/apidoc-env-en.png)
+
+> DictionaryType: Fill in the value must be `apidocEnv`;
+>
+> DictionaryCode: The identifier of the gateway address has no actual meaning. It is recommended to use `ENV_LABEL_` as a prefix, such as `ENV_LABEL_OFFLINE`;
+>
+> DictionaryName: Indicates the gateway type, such as filling in `test environment`, `production environment`. This value will appear on the API documentation details page;
+>
+> DictionaryValue: Indicates the gateway address, such as http://127.0.0.1:9195. This value will appear on the API documentation details page;
+>
+> DictionaryDescribe: Give a brief description of what scenario the gateway address is used for. This value will appear on the API documentation details page;
+>
+> Sort: The numerical value determines the display order of the gateway address;
+>
+> Status: open or close。
+
+## 4. Support Multiple Ways to Aggregate API Documents
+
+### 4.1 Add API Document Manually
+
+Clicking the menu "Document -> API Document" to create api.
+
+##### Create Project
+
+If you have not created a project or you want to classify the new API into a new project, you need to create a project.
+
+![app-create-en](/img/shenyu/basicConfig/apiManagement/app-create-en.png)
+
+##### Add API Documentation
+
+![create-api-en](/img/shenyu/basicConfig/apiManagement/create-api-en.png)
+
+### 4.2 Remotely pull the swagger registration API Document.
+
+Automatically register API documentation by remotely pulling swager documentation. Please refer to [Remote pull swagger registration API document](../api-doc/swagger-apidoc.md)
+
+### 4.3 Shenyu Client Annotation Registration API Documentation
+
+Automatically register API documents through Shenyu client annotations. Please refer to [Client Registration API Documentation](../api-doc/shenyu-annotation-apidoc.md)
+> This method is recommended if you do not expect to view the full interface documentation details. When you choose this automatic registration method, please turn off the registration method of remote automatic pull swagger, otherwise there will be conflicts.
+
+## 5. Publish API
+
+If the API has never been published and the user has not used the shenyu-client, shenyu-admin will automatically expose the API described in the API document to the gateway.
+
+![publish-api-en](/img/shenyu/basicConfig/apiManagement/publish-api-en.png)
+
+After clicking Save, you'll see that the registration data for the API is inserted below the selectors and rules. As shown below:
+
+![api-published-divide-list-en](/img/shenyu/basicConfig/apiManagement/api-published-divide-list-en.png)
+
+## 6. Offline API(optional)
+
+> Special Note: After clicking Offline, the API will still be visible in the API document list, but it will be deleted from the proxy plug-in and metadata management list. Before you republish the API, the gateway will not proxy the API. When you pass through the gateway When requesting this API, an exception will be reported.
+
+![offline-api-en](/img/shenyu/basicConfig/apiManagement/offline-api-en.png)
+
+## 7. API Debug
+
+![api-debug-en](/img/shenyu/basicConfig/apiManagement/api-debug-en.png)
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/data-permission.md b/versioned_docs/version-2.6.1/user-guide/admin-usage/data-permission.md
new file mode 100644
index 00000000000..6619373e605
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/data-permission.md
@@ -0,0 +1,53 @@
+---
+title: Data Permission Management
+keywords: ["user data permission"]
+description: user data permission
+---
+## Design Notes
+
+In order to achieve the different selector / rule represented by the plugin managed by different business units, the need for the plugin selector / rule data security for the user to control
+When the user does not configure data permissions, it has all the data permissions, as long as the permissions are configured, the data permissions will be controlled. As shown in the following picture.
+
+
+
+
+## How to use
+
+The Brief introduce is as follows.
+- Users with administrative user resouce permissions (including the admin user) create a new user.
+- Users with administrative user data resouce permissions (including admin user) click `ConfigureDataPermission` to manage the user's data permissions.
+> Make sure the data exists in the plugin list before doing so. If not, you will have any data to configure.
+
+Now, let's look how to operation step by step:
+
+### Create User
+
+Clicking the menu "System Manage -> User" to create user, like this:
+
+
+### Edit Date
+
+#### Add Plugin Data
+
+Adding data in the plugin list, this article uses `divide` as an example, like:
+
+
+#### Configure Resource Permission
+
+Giving the `divide` plugin permission to the `default` role.
+
+
+The `default` role has none permissions.The user can't login who we set `default` role to. So we must edit the permissions.
+
+#### Configure Data Permission
+
+When we create the common users, we can edit data permissions by the `ConfigureDataPermission` button.
+
+
+
+The datas in this list are the same as the plugin list.
+
+## New User Login
+
+When the user login, he just can see the data given to him.
+
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/dictionary-management.md b/versioned_docs/version-2.6.1/user-guide/admin-usage/dictionary-management.md
new file mode 100644
index 00000000000..91b6989ebcf
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/dictionary-management.md
@@ -0,0 +1,32 @@
+---
+title: Dictionary Management
+keywords: ["dict"]
+description: dict management explanation
+---
+
+## Explanation
+
+This document will introduce the use of dictionary management in the Apache ShenYu background management system. Dictionary management is primarily used to maintain and manage common data dictionaries.
+
+Please refer to the `deployment` document, choose a way to start `shenyu-admin`. For example, [local deployment](../../deployment/deployment-local). After startup, visit `http://localhost:9095`, the default username and password are: `admin` and `123456` .
+
+The current usage scenario is in the [pluginHandle](./plugin-handle-explanation), when the data type is selected as the `dropdown`:
+
+
+
+In dictionary management, you can add dictionary types for other places:
+
+
+
+- DictionaryType: The field name used in the `pluginHandle` .
+- DictionaryCode: Identify dictionary data.
+- DictionaryName: The name of the `handle` field when adding plugins, selectors or rules.
+- DictionaryValue: The actual value of the dictionary data.
+- DictionaryDescribe: Description.
+- Sort: Dictionary data order.
+
+e.g. `degradeRuleGrade` is one of fields of Sentinel's `handle` json. When it adds rules, it automatically looks up all the general dictionaries of `type='degradeRuleGrade'` in the `shenyu_dict` table as a select-box when you edit the General rules field.
+
+
+
+
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/plugin-handle-explanation.md b/versioned_docs/version-2.6.1/user-guide/admin-usage/plugin-handle-explanation.md
new file mode 100644
index 00000000000..82eb4af0c95
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/plugin-handle-explanation.md
@@ -0,0 +1,51 @@
+---
+title: Plugin Config
+keywords: ["plugin"]
+description: plugin handle explanation
+---
+
+## Explanation
+
+This document will introduce the use of plugins in the `shenyu-admin` , including plugin management and plugin handle management.
+
+Please refer to the `deployment` document, choose a way to start `shenyu-admin`. For example, [local deployment](../../deployment/deployment-local). After startup, visit `http://localhost:9095`, the default username and password are: `admin` and `123456` .
+
+## Plugin management
+
+In the plugin management, you can manage all plugins in a unified manner, such as turning off or turning on plugins:
+
+
+
+You can also set configuration information for some plugins, such as setting a registry for `Dubbo` plugin:
+
+
+
+## Plugin handle management
+
+In plugin handle management, you can add `handle` fields to plugin, selector, and rule.
+
+For example, add a string type field `path` and a digital type field `timeout` to the rule list of the `SpringCloud` plugin.
+
+1. add/edit the `handle` field in the `shenyu-admin`-> BasicConfig -> PluginHandle :
+
+
+
+2. Fill in the field information:
+
+
+
+- PluginName: Drop down to select which plugin needs to add the `handle` field.
+- Field: Add the name of the field.
+- Describe: Field description.
+- DataType: Field data type.
+ - If the `DropDown` is selected, the drop-down selection of the input box on the rule addition page is to go to the dictionary table to find all the available options through the field name to select, so you need to config the selection in [Dictionary Management](./dictionary-management).
+- FieldType: This field belongs to selector, rule or plugin.
+- Sort: Sequence number.
+- Required: Is this field required.
+- DefaultValue: Specify a default value for this field.
+- Placeholder: The message that appears when the user fills in the field.
+- Rule (RegExp): The verification rule when the user fills in the field。
+
+3. When adding a rule in the PluginList -> rpc proxy -> `SpringCloud` -> you can enter `path` and `timeout` :
+
+
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/role-management.md b/versioned_docs/version-2.6.1/user-guide/admin-usage/role-management.md
new file mode 100644
index 00000000000..e3fa8f40b0e
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/role-management.md
@@ -0,0 +1,45 @@
+---
+title: Role Management
+keywords: ["user role resource"]
+description: user role resource permission management
+---
+
+This article focuses on the `admin` console to manage `admin` operation permissions through user-associated roles, roles that give permissions to resources such as menus and buttons.
+
+
+## Resource
+
+Add Menus and Buttons Resource in "System Manage >> Resouce".
+
+
+
+The admin user shows all menus and buttons of the `Shenyu` gateway. If you need to customize adding and removing, add the menu first and under the corresponding menu, add the button. Edit the menu by clicking on the small edit icon on the right side of the menu.
+
+
+## Role
+
+You can associate roles and resource permissions through the menu bar "System Administration >> Role Management". By default, two roles are created, one for super administrator and one for normal user. The super administrator is the admin user, which cannot be changed, and the normal user role can change its resource properties. By editing the corresponding role, you can give the role the appropriate menu and button permissions.
+
+
+## User
+
+You can manage the users logged into admin through the menu bar "System Administration >> User Management". The default user is admin, which has all menu and data permissions, cannot be changed or deleted, and can only change password or username.
+You can add a user by pressing the "Add Data" button. The user role is selected to manage the menu and button permissions that the user sees after logging in. When a user selects more than one role, the maximum set of all roles is taken together. After changing a user's role permissions, users who are already logged in can simply refresh the page to get the changed permissions.
+
+The following is an example of how the new user's permissions.
+
+- editor default user role permission
+
+
+
+- Add new roles and give the appropriate resource permissions
+
+
+
+- Create new users and give them the appropriate roles
+
+
+
+- User login to view their menu and button permissions
+
+
diff --git a/versioned_docs/version-2.6.1/user-guide/admin-usage/selector-and-rule.md b/versioned_docs/version-2.6.1/user-guide/admin-usage/selector-and-rule.md
new file mode 100644
index 00000000000..e2ad2e058eb
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/admin-usage/selector-and-rule.md
@@ -0,0 +1,336 @@
+---
+title: Selector And Rule Config
+keywords: ["Selector", "Rule"]
+description: detailed explanation of selector and rule
+---
+
+## Features
+
+This document will introduce the use of selectors and rules in the Apache ShenYu background management system. For the concept and design of selectors and rules, please refer to `Flow Control`.
+
+
+Please refer to the `deployment` document, choose a way to start `shenyu-admin`. For example, [local deployment](../../deployment/deployment-local). After startup, visit `http://localhost:9095`, the default username and password are: `admin` and `123456` .
+
+## Selector
+
+All plugins are displayed in the PluginList, and selectors and rules can be added to each plugin:
+
+
+
+For example, add a selector to the `divide` plugin:
+
+
+
+* selector detailed explanation:
+
+ * Name: create your selector with a distinguish name.
+ * Type: Choose request matching strategy.
+ * `custom`: Only handle requests that meet the following matching conditions.
+ * `full`: Handle all requests.
+ * MatchType: Condition combination type.
+ * `and`: Need to meet all conditions.
+ * `or`: Meet any of the conditions.
+ * Conditions:
+ * uri: filter request with uri.
+ * header: filter request with request header.
+ * query: filter request with query string.
+ * ip: filter request with your real ip.
+ * host: filter request with your real host.
+ * post: not recommend to use.
+ * cookie: filter request with cookie.
+ * req_method: filter request with request method.
+ * condition match:
+ * match : fuzzy string matching,recommend to combine with uri,support path-matching.(/test/**).
+ * = : matches only if they are equal.
+ * regEx : regex matching,match characters in regex expression.
+ * contains: when it contains the specified value, it matches.
+ * TimeBefore: before the specified time.
+ * TimeAfter: after the specified time.
+ * exclude: the inverse of the method of `match`.
+ * startsWith: when its prefix is equal to the specified value, it matches. In certain scenarios, `match` can be replaced (such as `/test/` instead of `/test/**`) for better performance.
+ * endsWith: when its suffix is equal to the specified value, it matches.
+ * pathPattern: it's an optimized version of `match`, which has better performance than `match`, but does not support writing `**` in the middle of the path (such as `/api/**/xxx`).
+ * Continued: whether the subsequent selector is still executed.
+ * PrintLogs: it will print the matching log with the open option enabled.
+ * Enable: whether to enable the plugin.
+ * Order:the smaller will have high priority to execute among multi-selectors.
+ * Handler: The operation when the request matches the selector.
+* the above picture means: when the prefix of the request uri is `/http`, it will redirect to this service `127.0.0.1:8080`.
+* selector advice : combine `uri` condition and `startsWith` prefix(/contextPath/)as the first request filter.
+* selector(the same for rule) match condition fuzzy string matching rule:
+ * `?` matches one character
+ * `*` matches zero or more characters
+ * `**` matches zero or more directories in a path
+
+## Rule
+
+
+
+* when the request was passed by the selector, then it will be processed by the rule, the final filter.
+* rule is the final confirmation about how to execute request logically.
+* rule detailed explanation:
+ * Name:create your rule with a distinguish name.
+
+ * MatchType: you can combine these conditions with 'and' , 'or' operators.
+
+ * Conditions:
+
+ * uri: filter request with uri.
+ * header: filter request with request header.
+ * query: filter request with query string.
+ * ip: filter request with your real ip.
+ * host: filter request with your real host.
+ * post: not recommend to use.
+ * cookie: filter request with cookie.
+ * req_method: filter request with request method.
+
+ * condition match:
+ * match : fuzzy string matching,recommend to combine with uri,support path-matching.(/test/**).
+ * = : matches only if they are equal.
+ * regEx : regex matching,match characters in regex expression.
+ * contains: when it contains the specified value, it matches.
+ * TimeBefore: before the specified time.
+ * TimeAfter: after the specified time.
+ * exclude: Same function as `match`, flow selection is opposite.
+ * startsWith: when its prefix is equal to the specified value, it matches. In certain scenarios, `match` can be replaced (such as `/test/` instead of `/test/**`) for better performance.
+ * endsWith: when its suffix is equal to the specified value, it matches.
+ * pathPattern: it's an optimized version of `match`, which has better performance than `match`, but does not support writing `**` in the middle of the path (such as `/api/**/xxx`).
+
+ * PrintLogs: it will print the matching log with the open option enabled.
+
+ * Enable: whether to enable the plugin.
+
+ * Order:the smaller will have high priority to execute among multi-rules.
+
+ * handle: The operation when the request matches the rule.
+* above picture means: when the request `uri` equals to `/http/order/save`, it will execute based on this rule,load strategy is `random`.
+* rule advice: combine `uri` condition with `match` the real `uri path` condition as the final filter.
+* combine selector means :when the request `uri` is `/http/order/save`, it will be redicted to `127.0.0.1:8080` by `random` method.
+
+
+## Match Strategy
+
+Matching mode refers to the matching mode between multiple conditions when a selector or rule is matched. Currently, `and` and `or` are supported.
+
+
+* `and`
+
+ `and` indicates that a selector or rule can be matched only if more than one condition is met.
+
+ The example below shows that a request must meet both the condition `uri = /http/order/findById` and the condition `id = 100` to match this rule.
+
+ For example, a real request `http://localhost:9195/http/order/findById?id=100` satisfies both conditions, this rule can be matched.
+
+
+![](/img/shenyu/basicConfig/selectorRule/match-strategy-and-en.png)
+
+
+* `or`
+
+ `or` indicates that one of the conditions matches a selector or rule.
+
+ The example below shows that a request matches this rule if it meets either the condition `uri = /http/order/findById` or the condition `id = 100`.
+
+ For example, a real request `http://localhost:9195/http/order/findById?id=99` satisfies the first condition `uri = /http/order/findById`, so it can also match this rule.
+
+
+![](/img/shenyu/basicConfig/selectorRule/match-strategy-or-en.png)
+
+
+## Condition Parameter Data
+
+Conditional parameter Settings in selectors and rules are explained again. Suppose the following is a request header for an `Http` request:
+
+```shell
+GET http://localhost:9195/http/order/findById?id=100
+Accept: application/json
+Cookie: shenyu=shenyu_cookie
+MyHeader: custom-header
+```
+
+In `ShenYu` you can set different conditional parameters to get real data from the request information.
+
+- If the condition parameter is `uri`, then the actual data retrieved is `/http/order/findById`;
+- If the condition parameter is `header`, the field name is `MyHeader`, then the actual data retrieved is `custom-header`;
+- If the condition parameter is `query`, the field name is `id`, then the actual data retrieved is `100`;
+- If the condition parameter is `ip`, then the actual data retrieved is `0:0:0:0:0:0:0:1`;
+- If the condition parameter is `host`, then the actual data retrieved is `0:0:0:0:0:0:0:1`;
+- If the condition parameter is `post`, the field name is `contextPath`, then the actual data retrieved is `/http`;
+- If the condition parameter is `cookie`, the field name is `shenyu`, then the actual data retrieved is `shenyu_cookie`;
+- If the condition parameter is `req_method`, then the actual data retrieved is `GET`;
+
+* `uri`(recommended)
+
+ * `uri` matches are based on the `uri` in the path you requested, and there is almost no change in the front end when accessing the gateway.
+
+ * When using `match`, the principle is the same as `SpringMVC` fuzzy matching.
+
+ * In selectors, it is recommended to use prefixes in `URI` for matching, while in rules, specific paths are used for matching.
+
+ * When using this matching method, fill in the value of the matching field, as shown in the figure `/http/**`.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-uri-en.png)
+
+* `header`
+
+ * The `header` is matched against the field values in your `http` request header.
+
+ * When using this matching method, you need to fill in the field name and field value. The examples in the figure are `MyHeader` and `custom-header` respectively
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-header-en.png)
+
+* `query`
+
+ * This matches the query parameters in your `uri`, such as `/test?id=1`, then the matching method can be selected.
+
+ * When using this matching method, you need to fill in the field name and field value. The examples in the figure are `id` and 1 respectively.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-query-en.png)
+
+* `ip`
+
+ * This is matched against the `http` caller's `ip`.
+
+ * Especially in waf plugin, if an `ip` address is found to be attacked, you can add a matching condition, fill in the `ip`, deny the `ip` access.
+
+ * If you use nginx proxy before ShenYu, you can get the right ip with refering to [parsing-ip-and-host](../../developer/custom-parsing-ip-and-host)
+
+ * When using this matching method, fill in the value of the matching field, as shown in the example `192.168.236.75`.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-ip-en.png)
+
+
+* `host`
+
+ * This is matched against the `http` caller's `host`.
+
+ * Especially in waf plugin, if an `host` address is found to be attacked, you can add a matching condition, fill in the `host`, deny the `host` access.
+
+ * If you use nginx proxy before ShenYu, you can get the right ip with refering to [parsing-ip-and-host](../../developer/custom-parsing-ip-and-host)
+
+ * When using this matching method, fill in the value of the matching field, as shown in the example `localhost`.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-host-en.png)
+
+* `post`
+
+ * To get condition parameters from the request context(`org.apache.shenyu.plugin.api.context.ShenyuContext`), reflection is required to get the value of the field, which is not recommended.
+
+ * When using this matching method, the field name and value need to be specified. The examples in the figure are `contextPath` and `/http` respectively.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-post-en.png)
+
+
+* `cookie`
+
+ * This is matched against the `Cookie` in the `http` caller's request header as a condition parameter.
+
+ * When using this matching method, you need to fill in the field name and field value. The examples in the figure are `shenyu` and `shenyu_cookie` respectively.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-cookie-en.png)
+
+* `req_method`
+
+ * This matches the request form of the `http` caller, such as `GET`, `POST`, etc.
+
+ * When using this matching method, fill in the value of the matching field, as shown in the example `GET`.
+
+ ![](/img/shenyu/basicConfig/selectorRule/parameter-data-req_method-en.png)
+
+For a more in-depth understanding of condition parameter fetching, read the source code, package name is `org.apache.shenyu.plugin.base.condition.data`:
+
+|Condition Parameter | Class |
+|:------------------------ |:----- |
+|`uri` |`URIParameterData` |
+|`header` |`HeaderParameterData` |
+|`query` |`QueryParameterData` |
+|`ip` |`IpParameterData` |
+|`host` |`HostParameterData` |
+|`post` |`PostParameterData` |
+|`cookie` |`CookieParameterData` |
+|`req_method` |`RequestMethodParameterData` |
+
+
+## Condition Match Strategy
+
+Condition parameters allow you to retrieve the actual data of the request. How the real data matches the conditional data preset by the selector or rule is realized through the condition match strategy.
+
+
+* `match`
+
+ `match` supports fuzzy matching (`/**`). Request `/http/order/findById` will match if your selector condition is set as follows.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-match-en.png)
+
+* `=`
+
+ `=` means that the requested real data is equal to the preset condition data. If your selector condition is set to request uri equal to `/http/order/findById`, then request`/http/order/findById?id=1` can match it.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-equals-en.png)
+
+* `regex`
+
+ `regex` means that the requested real data can meet the preset condition of the regular expression to match successfully. Suppose your rule conditions are sets as follows: the request parameter contains an `id` and is a three-digit number. So request `/http/order/findById?id=900` will match.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-regex-en.png)
+
+* `contains`
+
+ `contains` means that the requested real data contains the default condition data. Suppose your rule condition is set as follows: request uri contains `findById`. Request `/http/order/findById?id=1` will match.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-contains-en.png)
+
+* `TimeBefore`
+
+ `TimeBefore` indicates that the request time will be matched before the preset condition time. Suppose your rule conditions are sets as follows: request parameters contain `date` and `date` is less than `2021-09-26 06:12:10`. Request `/http/order/findById?id=100&date=2021-09-22 06:12:10` will match.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-timebefore-en.png)
+
+* `TimeAfter`
+
+ `TimeAfter` indicates that the request time will be matched before the preset condition time. Suppose your rule conditions are sets as follows: request parameters contain `date` and `date` is greater than `2021-09-26 06:12:10`. Request `/http/order/findById?id=100&date=2021-09-22 06:12:10` will match.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-timeafter-en.png)
+
+* `exclude`
+
+ `exclude` is the inverse of the method of `match`, and some functions of `match` are also available, but it is a matching filter. If your selector condition is set as follows, the request `/http/order/findById` will filter this.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-exclude-en.png)
+
+* `startsWith`
+
+ `startsWith` indicates that the prefix of the requested real data is equal to the preset condition data. Suppose your rule conditions are sets as follows: the prefix in the request `uri` is equal to `/http/`, the request `/http/order/findById?id=1` can be matched.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-startswith-en.png)
+
+* `endsWith`
+
+ `endsWith` indicates that the suffix of the requested real data is equal to the preset condition data. Suppose your rule conditions are sets as follows: request `uri` suffix equals `Id`. Then the request `/http/order/findById?id=1` can be matched.
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-endswith-en.png)
+
+* `pathPattern`
+
+ Like `match`, `pathPattern` supports fuzzy matching (`/**`). If your rule conditions are sets as follows, then the request `/http/order/findById` can be matched;
+
+ Notice: writing `**` in the middle of the path (such as `/api/**/xxx`) is not supported!
+
+ ![](/img/shenyu/basicConfig/selectorRule/predicate-judge-pathpattern-en.png)
+
+If you want to further understand conditions matching strategy, please read the source code, the package name is `org.apache.shenyu.plugin.base.condition.judge`:
+
+| Match Strategy | Class |
+|:---------------|:----- |
+| `match` |`MatchPredicateJudge` |
+| `=` |`EqualsPredicateJudge` |
+| `regex` |`RegexPredicateJudge` |
+| `contains` |`ContainsPredicateJudge` |
+| `TimeBefore` |`TimerBeforePredicateJudge` |
+| `TimeAfter` |`TimerAfterPredicateJudge` |
+| `exclude` |`ExcludePredicateJudge` |
+| `startsWith` |`StartsWithPredicateJudge` |
+| `endsWith` |`EndsWithPredicateJudge` |
+| `pathPattern` |`PathPatternPredicateJudge` |
+
+The examples in this article illustrate the use of selectors and rules. The Settings of specific conditions need to be selected according to actual conditions.
diff --git a/versioned_docs/version-2.6.1/user-guide/api-doc/_category_.json b/versioned_docs/version-2.6.1/user-guide/api-doc/_category_.json
new file mode 100644
index 00000000000..ae4f3bab406
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/api-doc/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "API Document Aggregation",
+ "position": 6
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/api-doc/shenyu-annotation-apidoc.md b/versioned_docs/version-2.6.1/user-guide/api-doc/shenyu-annotation-apidoc.md
new file mode 100644
index 00000000000..5343291aa1f
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/api-doc/shenyu-annotation-apidoc.md
@@ -0,0 +1,38 @@
+---
+title: The client registers the API documentation
+keywords: ["api doc register"]
+description: The client registers the API documentation
+---
+
+This article describes how to expose the `API documentation` to the `Apache ShenYu` gateway.
+
+Before accessing, please start `shenyu-admin` correctly.
+
+## Export API Documentation to shenyu-admin
+
+You can refer to any of the example codes below [shenyu-examples](https://github.com/apache/shenyu/tree/master/shenyu-examples).
+
+The only thing you need to do is to add `@ApiModule` and `@ApiDoc` annotations to your service, here is an example from `shenyu-examples-http`:
+
+```java
+@RestController
+@RequestMapping("/order")
+@ShenyuSpringMvcClient("/order")
+@ApiModule(value = "order")
+public class OrderController {
+
+ @GetMapping("/findById")
+ @ShenyuSpringMvcClient("/findById")
+ @ApiDoc(desc = "findById")
+ public OrderDTO findById(@RequestParam("id") final String id) {
+ return build(id, "hello world findById");
+ }
+
+ private OrderDTO build(final String id, final String name) {
+ OrderDTO orderDTO = new OrderDTO();
+ orderDTO.setId(id);
+ orderDTO.setName(name);
+ return orderDTO;
+ }
+}
+```
diff --git a/versioned_docs/version-2.6.1/user-guide/api-doc/swagger-apidoc.md b/versioned_docs/version-2.6.1/user-guide/api-doc/swagger-apidoc.md
new file mode 100644
index 00000000000..2c9d17a0efb
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/api-doc/swagger-apidoc.md
@@ -0,0 +1,57 @@
+---
+title: Pull the swagger registration API document
+keywords: ["swagger api Interface Document Aggregation"]
+description: Remotely pull swagger registration API documentation
+---
+
+This article introduces how to aggregate the `Swagger API documentation` of each backend microservice to the `Apache ShenYu` gateway management system.
+
+## 1. Description
+
+Remotely pull swagger documents, currently only supports swagger2.0, and only supports Divide and SpringCloud proxy plug-ins.
+
+## 2. Environment Preparation
+
+### 2.1 Run `shenyu-admin`
+
+Please refer to the `deployment` document, choose a way to run `shenyu-admin`.
+
+### 2.2 Enable the global switch for remotely pulling swagger documents.
+
+It is enabled by default. In the `Apache ShenYu` gateway management system --> BasicConfig --> Dictionary, find the data whose DictionaryType is `apidoc`, and modify the dictionary value: `true`.
+> 【Notice】DictionaryValue: `true` means the switch is on, `false` means it is off. If it is closed, `shenyu-admin` will not automatically pull the swagger documents of each microservice.
+
+![apidoc-dictionary-en](/img/shenyu/api-doc/apidoc-dictionary-en.png)
+
+## 3. Run the Sample Project
+
+3.1. Download [shenyu-examples-http-swagger2](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http-swagger2)
+
+3.2. Run `org.apache.shenyu.examples.http.ShenyuTestSwaggerApplication` main method to start the project.
+
+The examples project will synchronize the service startup information to `shenyu-admin` through the Shenyu client annotation (such as `@ShenyuSpringMvcClient`) according to the address configured by `shenyu.register.serverLists`, and then trigger `shenyu-admin` to remotely pull the swagger document And complete the analysis, and finally aggregate to produce a new API document.
+
+## 4. Demonstration Effect
+
+### 4.1 List of API Documents
+
+In `Apache ShenYu` Gateway Management System --> Document --> API Document, you can see the aggregated API documents.
+
+![apidoc-swagger-list-en](/img/shenyu/api-doc/apidoc-swagger-list-en.png)
+
+### 4.2 API Details Effect
+
+![apidoc-detail-en](/img/shenyu/api-doc/apidoc-detail-en.png)
+
+## 5. How to Automatically Update API Documentation
+
+### 5.1 Restart Project
+
+As in the example above, an automatic update of the API docs is triggered by starting the project.
+
+### 5.2 Modify the startup time of the proxy plugin selector.
+
+In the PlugiList --> Proxy --> selector, find the target service, and then modify the startup time.
+> Note: The startup time of the new setting must not be earlier than the original startup time, otherwise the API document will not be automatically pulled and refreshed.
+
+![app-proxy-startuptime-en](/img/shenyu/api-doc/app-proxy-startuptime-en.png)
diff --git a/versioned_docs/version-2.6.1/user-guide/discovery/_category_.json b/versioned_docs/version-2.6.1/user-guide/discovery/_category_.json
new file mode 100644
index 00000000000..7c0997e003e
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/discovery/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Discovery",
+ "position": 4
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/discovery/discovery-mode.md b/versioned_docs/version-2.6.1/user-guide/discovery/discovery-mode.md
new file mode 100644
index 00000000000..80837a074b5
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/discovery/discovery-mode.md
@@ -0,0 +1,422 @@
+---
+title: Discovery
+keywords: [ "Discovery" ]
+description: Discovery
+---
+
+# Discovery
+
+## 1. Overview
+
+### 1.1 Module Name
+
+Discovery
+
+### 1.2 Design
+
+- Module Design Diagram
+
+![discovery-design.png](/img/shenyu/plugin/discovery/discovery-design.png)
+
+
+
+- Database Design
+
+![db-design.png](/img/shenyu/plugin/discovery/db-design.png)
+
+
+### 1.3 Module Functionality
+
+The Discovery module endows the ShenYu Gateway with the ability to actively perceive and respond to changes in the list of services being proxied.
+By actively listening to the admin service of the Discovery Gateway, the ShenYu Gateway can promptly track changes in the services being proxied.
+This functionality is designed to be flexible and can be configured at either **the selector level or the plugin level**, as needed.
+Currently, plugins that have incorporated the Discovery feature include TCP, Divide, Websocket and gRPC plugins.
+
+
+### 1.4 Listening Mode
+
+LOCAL, ZOOKEEPER, NACOS, EUREKA, ETCD
+
+- LOCAL Mode: Primarily relies on manual maintenance of the upstream list and pushing it to the gateway.
+- ZOOKEEPER Mode: Monitors changes in ephemeral nodes under a specified node in ZooKeeper to obtain data.
+- NACOS Mode: Listens for changes in instances under a specified service name in Nacos to obtain data.
+- EUREKA Mode: Listens for changes in instances under a specified service name in Eureka to obtain data.
+- ETCD Mode: Obtains data by monitoring changes in key-value pairs under specified nodes in etcd.
+
+### 1.5 Scope of Effect
+
+- Plugin Level: Impacts the entire plugin,
+and all selectors under that plugin will default to the current listening mode.
+- Selector Level: Applies to the current selector,
+allowing different selectors under the same plugin to use different listening modes.
+
+## 2. Usage
+
+### 2.1 Plugin-Level Configuration
+
+#### 2.1.1 Service Discovery Configuration
+
+- In plugins that support the Discovery module (currently, only the TCP plugin supports plugin-level discovery
+configuration on the admin console page; other plugins can configure plugin-level discovery through shenyu-client,
+as described in the "Using Shenyu-client" section below), click on `Discovery Configuration`. In the popup form,
+select the desired listening mode and fill in the service discovery name, registration server URL, registry configuration parameters, etc.:
+
+
+![config-discovery-plugin-en.png](/img/shenyu/plugin/discovery/config-discovery-plugin-en.png)
+
+![config-discovery-plugin-modal-en.png](/img/shenyu/plugin/discovery/config-discovery-plugin-modal-en.png)
+
+#### 2.1.2 Usage within Selectors
+
+- To add a new selector, click on `Add Selector`. In the new selector page, you will notice that the `Type` field enforces the previously configured plugin-level listening mode,
+indicating that the added selector will also adopt the same configuration.
+At this point, simply input the desired `ListeningNode`:
+
+ ![add-selector-under-plugin-discovery-en.png](/img/shenyu/plugin/discovery/add-selector-under-plugin-discovery-en.png)
+
+- The `Handler` here refers to ShenYu's specified JSON format for transmitting upstream registration data,
+as shown below:
+ - url: URL of the upstream
+ - protocol: communication protocol of the upstream
+ - status: status of the upstream node (0 for healthy, 1 for unhealthy)
+ - weight: Used for load balancing calculations
+
+
+ ```json
+ {
+ "url": "127.0.0.1::6379",
+ "protocol": "tcp",
+ "status": 0,
+ "weight": 10
+ }
+ ```
+
+- If your service alias does not match ShenYu's defined JSON format,
+you can perform alias mapping in `Handler`.
+For example, as shown in the above image,
+if you need to change `status` to "healthy" while keeping other keys unchanged,
+follow these steps: create a new alias, map `status` to `healthy`,
+and retain the original JSON keys' format.
+- Configure the remaining properties for the selector according to the specific plugin's documentation.
+
+### 2.2 Selector-Level Configuration
+
+- In plugins that support the Discovery module, click on `Add Selector`.
+In the `Discovery Config` tab, configure the fields such as type,
+listening node, server URL list, and registry properties.
+This configuration only applies to the current selector and must be reconfigured each time a new selector is added.
+
+![add-selector-en.png](/img/shenyu/plugin/discovery/add-selector-en.png)
+
+- For the Divide, gRPC, and Websocket plugins,
+the `Import Background Discovery Config` function on the selector creation page
+allows you to import and use the backend configuration if the service connecting to the ShenYu Gateway
+was configured with shenyu-discovery-related properties (see usage with shenyu-client).
+As shown in the following image, click `Import Background Discovery Config` to view the backend configuration:
+
+![config-import-en.png](/img/shenyu/plugin/discovery/config-import-en.png)
+
+- If you confirm the import, clicking the `Import` button in the backend configuration popup will automatically populate the form with the backend service discovery properties.
+At this point, you only need to configure the listening node:
+
+![after-import-en.png](/img/shenyu/plugin/discovery/after-import-en.png)
+
+> **Note**: If you confirm importing the backend configuration,
+the backend service discovery properties will be automatically filled in the form and will continue to use the previous discovery object.
+In this case, modifying service discovery properties in the form will be ineffective, and the backend configuration will be retained.
+
+- If you choose the LOCAL mode, there is no need to connect to a registry, and users must manually maintain the upstream list.
+
+
+## 3. Configuration in Different Modes
+
+### 3.1 Local Mode
+
+- Local mode only supports configuration at the **selector level**.
+There is no need to connect to a registry, and users must manually maintain the upstream list.
+This list is an editable table. Click the `Edit` button for each row in the table to modify each parameter of the upstream:
+
+![local-selector-en.png](/img/shenyu/plugin/discovery/local-selector-en.png)
+
+### 3.2 ZooKeeper/Nacos/Eureka/Etcd Modes
+
+- In the ZooKeeper/Nacos/Eureka/Etcd modes, service discovery configuration is supported at both the plugin level and the selector level.
+- For each registry property under these modes, taking ZooKeeper as an example, users can go to `shenyu-admin` --> `BasicConfig` --> `Dictionary`,
+search for the dictionary name "zookeeper", and edit the dictionary values corresponding to the default properties
+(**Note**: You cannot modify the dictionary type and dictionary name).
+- In these modes, the gateway dynamically retrieves service instance information from the registry. Additions, removals, modifications,
+and other changes to service instances will be displayed in real-time in the upstream list.
+
+![zk_dict_en.png](/img/shenyu/plugin/tcp/zk_dict_en.png)
+
+## 4. Using Shenyu-client
+
+### 4.1 Introduction
+
+- To use Shenyu-client, you need to depend on the corresponding mode's registry middleware: ZooKeeper, Nacos, Etcd, Eureka.
+These modes can automatically detect service up and down events through ShenYu Admin.
+- Additionally, if you are using the local mode, you will need to manually maintain the upstream list.
+- For detailed instructions on using Shenyu-client, refer to the Shenyu-client module documentation.
+
+### 4.2 Local Mode Example
+
+#### 4.2.1 Using Shenyu-client
+
+- Shenyu-client defaults to the Local mode, so there is no need for any special discovery configuration.
+It will automatically register the current service.
+- For services that are automatically registered, you can manually add, modify,
+or delete them in the upstream list on the page:
+
+![local-selector-en.png](/img/shenyu/plugin/discovery/local-selector-en.png)
+
+#### 4.2.2 Without Using Shenyu-client
+
+
+- If you are not using Shenyu-client, you can manually add, modify,
+or delete service information on the `Discovery Config` tab under `Add Selector`:
+
+![add-selector-local-en.png](/img/shenyu/plugin/discovery/add-selector-local-en.png)
+
+- Configure other selector information:
+
+![add-selector-basic-en.png](/img/shenyu/plugin/discovery/add-selector-basic-en.png)
+
+- Configure rules:
+
+![rule-en.png](/img/shenyu/plugin/discovery/rule-en.png)
+
+- Test Connection
+
+```text
+curl http://localhost:9195/http/hello
+
+hello! I'm Shenyu-Gateway System. Welcome!%
+```
+
+### 4.2 Zookeeper Mode Example
+
+(Taking the Divide plugin as an example)
+
+- Add Dependencies
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-discovery-zookeeper
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-http
+
+
+```
+
+- Add the Following Configuration in application.yml
+
+```yaml
+shenyu:
+ discovery:
+ enable: true
+ type: zookeeper
+ serverList: ${your.zookeeper.ip}:{your.zookeeper.port}
+ registerPath: /shenyu/discovery/demo_http_common
+ props:
+ baseSleepTimeMilliseconds: 1000
+ maxRetries: 4
+ maxSleepTimeMilliseconds: 5000
+ connectionTimeoutMilliseconds: 60000
+ sessionTimeoutMilliseconds: 8
+```
+
+- Start the shenyu-examples-http service.
+- Once the service registration is successful,
+you can view the list of automatically registered service instances on the selector page:
+
+![zk-selector-en.png](/img/shenyu/plugin/discovery/zk-selector-en.png)
+
+- Users can click on `Edit` in the service instance list to edit the service instance information
+(Note that in non-Local mode, the URL is maintained by the registry and cannot be manually edited):
+
+
+![edit-zk-upstream-en.png](/img/shenyu/plugin/discovery/edit-zk-upstream-en.png)
+
+- Test Connection
+
+```text
+curl http://localhost:9195/http/hello
+
+hello! I'm Shenyu-Gateway System. Welcome!%
+```
+
+### 4.3 Etcd Mode Example
+
+- Add Dependencies
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-discovery-etcd
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-http
+
+
+```
+
+- Add the Following Configuration in application.yml
+
+```yaml
+shenyu:
+ discovery:
+ enable: true
+ protocol: http://
+ type: etcd
+ serverList: http://${your.etcd.host}:${your.etcd.port}
+ registerPath: /shenyu/test/http_common
+ props:
+ etcdTimeout: 3000
+ etcdTTL: 5
+```
+
+- Start the shenyu-examples-http service. Similarly, on the selector page,
+you can see the list of automatically registered service instances and edit them as needed:
+![etcd-selector-en.png](/img/shenyu/plugin/discovery/etcd-selector-en.png)
+
+- Test Connection
+
+```text
+curl http://localhost:9195/http/hello
+
+hello! I'm Shenyu-Gateway System. Welcome!%
+```
+
+### 4.4 Eureka Mode Example
+
+- Add Dependencies
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-discovery-eureka
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-http
+
+
+```
+
+- Add the Following Configuration in application.yml
+ (in this context, `registerPath` can be understood as the name of the service to be monitored):
+
+```yaml
+shenyu:
+ discovery:
+ enable: true
+ protocol: http://
+ type: eureka
+ serverList: http://${your.eureka.host}:${your.eureka.port}/eureka
+ registerPath: shenyu_discovery_demo_http_common
+ props:
+ eurekaClientRefreshInterval: 10
+ eurekaClientRegistryFetchIntervalSeconds: 10
+```
+
+- Start the shenyu-examples-http service. Similarly, on the selector page,
+you can see the list of automatically registered service instances and edit them as needed:
+
+![eureka-selector-en.png](/img/shenyu/plugin/discovery/eureka-selector-en.png)
+
+- Test Connection
+
+```text
+curl http://localhost:9195/http/hello
+
+hello! I'm Shenyu-Gateway System. Welcome!%
+```
+
+### 4.5 Nacos Mode Example
+
+- Add Dependencies
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-discovery-eureka
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-http
+
+
+```
+
+- Add the Following Configuration in application.yml
+(Here, `registerPath` can also be understood as the name of the service to be monitored.)
+
+```yaml
+shenyu:
+ discovery:
+ enable: true
+ protocol: http://
+ type: nacos
+ serverList: ${your.nacos.host}:${your.nacos.port}
+ registerPath: shenyu_discovery_demo_http_common
+ props:
+ groupName: SHENYU_GROUP
+```
+
+- Start the shenyu-examples-http service. Similarly, on the selector page,
+you can view the list of automatically registered service instances and edit them as needed.
+
+![nacos-selector-en.png](/img/shenyu/plugin/discovery/nacos-selector-en.png)
+
+- Test Connection
+
+```text
+curl http://localhost:9195/http/hello
+
+hello! I'm Shenyu-Gateway System. Welcome!%
+```
+
+> **Note**:Configuring service discovery using Shenyu-client essentially configures service discovery at the plugin level.
+Under the same service discovery mode, there is, in fact, only one discovery object
+(meaning you can only configure the same set of type, server URL, and service discovery parameters), while multiple listening nodes can be configured.
+
+
+![ws-selector-en.png](/img/shenyu/plugin/discovery/ws-selector-en.png)
+
+> **Note**:In the Divide and gRPC plugins, you can modify the protocol by configuring the protocol in the application.yml file.
+The default protocol for the Websocket plugin is 'ws'.
+
+
+
+## 5. Considerations
+
+- In local mode, you can manually modify all parameters of the upstream on the service list page.
+- In non-local modes, you can manually modify parameters other than URL and start time.
+- Manually changing the status (open/close) and weight of service instances only affects the current plugin.
+- For the same plugin, when configuring discovery-related parameters through Shenyu-client in the backend, it essentially configures service discovery at the plugin level. Although you can manually add selectors on the console page to configure selector-level service discovery, in reality, there is only one discovery object (meaning you can only configure the same set of type, server URL, and service discovery parameters), while multiple listening nodes can be configured.
+
+
+
+## 6. Test Report
+
+[Test Report](https://www.yuque.com/eureca/pgotw1/hkqkk5laubspgwl3#UojLR)
+
+
+
+
diff --git a/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/_category_.json b/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/_category_.json
new file mode 100644
index 00000000000..47a0b85e937
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Kubernetes Controller",
+ "position": 5
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/build-deploy.md b/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/build-deploy.md
new file mode 100644
index 00000000000..c8ecdbd9df4
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/build-deploy.md
@@ -0,0 +1,120 @@
+---
+title: Build And Deploy Kubernetes Controller
+description: Build And Deploy Kubernetes Controller
+---
+
+This article introduces how to use ShenYu Ingress Controller.
+
+## Construct
+
+It is recommended to refer to [Custom Deployment](../../deployment/deployment-custom.md) to build a custom gateway, add the shenyu-kubernetes-controller dependency to the Maven dependency of the gateway, and the gateway can integrate the kubernetes controller.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-k8s
+ ${project.version}
+
+```
+
+You can also directly use the officially built docker image (TODO, unfinished)
+
+## deployment
+
+K8s deployment files can refer to:
+
+```yaml
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: shenyu-ingress
+---
+apiVersion: v1
+automountServiceAccountToken: true
+kind: ServiceAccount
+metadata:
+ name: shenyu-ingress-controller
+ namespace: shenyu-ingress
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: shenyu-ingress-controller
+ namespace: shenyu-ingress
+ labels:
+ app: shenyu-ingress-controller
+ all: shenyu-ingress-controller
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: shenyu-ingress-controller
+ template:
+ metadata:
+ labels:
+ app: shenyu-ingress-controller
+ spec:
+ containers:
+ - name: shenyu-ingress-controller
+ image: apache/shenyu-integrated-test-k8s-ingress:latest
+ ports:
+ - containerPort: 9195
+ imagePullPolicy: IfNotPresent
+ serviceAccountName: shenyu-ingress-controller
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: shenyu-ingress-controller
+ namespace: shenyu-ingress
+spec:
+ selector:
+ app: shenyu-ingress-controller
+ type: NodePort
+ ports:
+ - port: 9195
+ targetPort: 9195
+ nodePort: 30095
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: shenyu-ingress-controller
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - namespaces
+ - services
+ - endpoints
+ - secrets
+ - pods
+ verbs:
+ - get
+ - list
+ - watch
+- apiGroups:
+ - networking.k8s.io
+ resources:
+ - ingresses
+ verbs:
+ - get
+ - list
+ - watch
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: shenyu-ingress-controller
+ namespace: shenyu-ingress
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: shenyu-ingress-controller
+subjects:
+- kind: ServiceAccount
+ name: shenyu-ingress-controller
+ namespace: shenyu-ingress
+```
+
+Among them, Service can be changed to `LoadBalancer` type according to the actual situation.
diff --git a/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/config.md b/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/config.md
new file mode 100644
index 00000000000..3203e134b56
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/kubernetes-controller/config.md
@@ -0,0 +1,115 @@
+---
+title: Kubernetes Controller Config
+description: Kubernetes Controller Config
+---
+
+This article introduces Kubernetes Controller configuration.
+
+## Enable HTTPS
+
+To enable HTTPS, you need to configure the `sni protocol` in the `application.yml` file of the gateway:
+
+```yaml
+shenyu:
+ netty:
+ http:
+ sni:
+ enabled: true
+ mod: k8s #k8s mode applies
+ defaultK8sSecretNamespace: shenyu-ingress #The namespace of the default secret resource
+ defaultK8sSecretName: default-cert #default secret resource name
+```
+
+Among them, the default secret resource must be available, but it will not be actually used at present.
+
+## Ingress configuration
+
+ShenYu Kubernetes Controller implements the K8s native Ingress standard, see [K8s official documentation](https://kubernetes.io/docs/concepts/services-networking/ingress/) for the use of the native standard
+
+In addition, Apache ShenYu has expanded based on the Annotation field of Ingress, and the configuration is shown in the following tables:
+
+### General
+
+| Name | Default | Required | Description |
+| --------------------------- | ------ | -------- | ----- --- |
+| kubernetes.io/ingress.class | | Yes | Fill in shenyu |
+
+### Divide plugin (HTTP proxy)
+
+| Name | Default | Required | Description |
+| ------------------------------------- | ------ | ------- - | ------------------------------------------------ ------------ |
+| shenyu.apache.org/loadbalancer | random | No | Load balancing algorithm, optional hash, random, roundRobin, leastActive, p2c, shortestResponse |
+| shenyu.apache.org/retry | 3 | No | Number of failed retries |
+| shenyu.apache.org/timeout | 3000 | No | Backend request timeout, in milliseconds |
+| shenyu.apache.org/header-max-size | 10240 | No | The maximum size of the request header, unit byte |
+| shenyu.apache.org/request-max-size | 102400 | No | Maximum request body size, unit byte |
+
+### Dubbo plugin
+
+| Name | Default | Required or not | Description |
+| ---------------------------------------------- | -------- | --------------- | ------------------------------------------------------------ |
+| shenyu.apache.org/loadbalancer | random | No | Load balancing algorithm, optional hash, random, roundRobin, lastActive, p2c, shortestResponse |
+| shenyu.apache.org/retry | 3 | No | Number of failed retries |
+| shenyu.apache.org/timeout | 3000 | no | Backend request timeout in milliseconds |
+| shenyu.apache.org/header-max-size | 10240 | No | Maximum request header size in bytes |
+| shenyu.apache.org/request-max-size | 102400 | No | Maximum request body size in bytes |
+| shenyu.apache.org/upstreams-protocol | dubbo:// | No | Specify the protocol protocol used by upstream |
+| shenyu.apache.org/plugin-dubbo-enabled | | No | Determines if the dubbo plugin is enabled |
+| shenyu.apache.org/zookeeper-register-address | | Yes | Specify zookeeper address |
+| shenyu.apache.org/plugin-dubbo-app-name | | Yes | Specify the metadata application name |
+| shenyu.apache.org/plugin-dubbo-path | | Yes | Specify the request path for metadata |
+| shenyu.apache.org/plugin-dubbo-rpc-type | | Yes | Specify the rpc type for metadata (dubbo, sofa, tars, springCloud, motan, grpc) |
+| shenyu.apache.org/plugin-dubbo-service-name | | Yes | Specify the interface name for the metadata |
+| shenyu.apache.org/plugin-dubbo-method-name | | Yes | Specifies the method name for metadata |
+| shenyu.apache.org/plugin-dubbo-rpc-expand | | No | Specifies the rpc expansion parameter (json object) for the metadata |
+| shenyu.apache.org/plugin-dubbo-parameter-types | | Yes | Specify parameter types for metadata |
+
+### Motan plugin
+
+| Name | Default | Required or not | Description |
+| ---------------------------------------------- | ------- | --------------- | ------------------------------------------------------------ |
+| shenyu.apache.org/loadbalancer | random | No | Load balancing algorithm, optional hash, random, roundRobin, lastActive, p2c, shortestResponse |
+| shenyu.apache.org/retry | 3 | No | Number of failed retries |
+| shenyu.apache.org/timeout | 3000 | No | Back-end request timeout in milliseconds |
+| shenyu.apache.org/header-max-size | 10240 | No | Maximum request header size in bytes |
+| shenyu.apache.org/request-max-size | 102400 | No | Maximum request body size in bytes |
+| shenyu.apache.org/plugin-motan-enabled | No | Yes | Determines if the motan plugin is enabled |
+| shenyu.apache.org/zookeeper-register-address | | Yes | Specify zookeeper address |
+| shenyu.apache.org/plugin-motan-app-name | | Yes | Specify the metadata application name |
+| shenyu.apache.org/plugin-motan-path | | Yes | Specify the request path for metadata |
+| shenyu.apache.org/plugin-motan-rpc-type | | Yes | Specify the rpc type for metadata (dubbo, sofa, tars, springCloud, motan, grpc) |
+| shenyu.apache.org/plugin-motan-service-name | | Yes | Specify the interface name for the metadata |
+| shenyu.apache.org/plugin-motan-method-name | | Yes | Specifies the method name for metadata |
+| shenyu.apache.org/plugin-motan-rpc-expand | | No | Specifies the rpc extension parameter (json object) for the metadata |
+| shenyu.apache.org/plugin-motan-parameter-types | | Yes | Specify parameter types for metadata |
+
+### SpringCloud plugin
+
+
+
+| Name | Default | Required or not | Description |
+| ----------------------------------------------------- | ------- | --------------- | ------------------------------------------------------------ |
+| shenyu.apache.org/loadbalancer | random | No | Load balancing algorithm, optional hash, random, roundRobin, lastActive, p2c, shortestResponse |
+| shenyu.apache.org/retry | 3 | No | Number of failed retries |
+| shenyu.apache.org/timeout | 3000 | No | Backend request timeout in milliseconds |
+| shenyu.apache.org/header-max-size | 10240 | No | Maximum request header size in bytes |
+| shenyu.apache.org/request-max-size | 102400 | No | Maximum request body size in bytes |
+| shenyu.apache.org/plugin-spring-cloud-enabled | | Yes | Determines whether to start the springCloud plugin |
+| shenyu.apache.org/zookeeper-register-address | | Yes | Specify the zookeeper address |
+| shenyu.apache.org/plugin-spring-cloud-app-name | | Yes | Specify the metadata application name |
+| shenyu.apache.org/plugin-spring-cloud-path | | Yes | Specify the request path for metadata |
+| shenyu.apache.org/plugin-spring-cloud-rpc-type | | Yes | Specify the rpc type (dubbo, sofa, tars, springCloud, motan, grpc) of the metadata |
+| shenyu.apache.org/plugin-spring-cloud-service-name | | Yes | Specify the interface name for metadata |
+| shenyu.apache.org/plugin-spring-cloud-method-name | | Yes | Specifies the method name for metadata |
+| shenyu.apache.org/plugin-spring-cloud-rpc-expand | | No | Specifies the rpc extension parameter (json object) for the metadata |
+| shenyu.apache.org/plugin-spring-cloud-parameter-types | | Yes | Specify parameter types for metadata |
+
+### WebSocket plugin
+
+| Name | Default | Required or not | Description |
+| ---------------------------------- | ------- | --------------- | ------------------------------------------------------------ |
+| shenyu.apache.org/loadbalancer | random | No | Load balancing algorithm, optional hash, random, roundRobin, lastActive, p2c, shortestResponse |
+| shenyu.apache.org/retry | 3 | No | Number of failed retries |
+| shenyu.apache.org/timeout | 3000 | No | Back-end request timeout in milliseconds |
+| shenyu.apache.org/header-max-size | 10240 | No | Maximum request header size in bytes |
+| shenyu.apache.org/request-max-size | 102400 | No | Maximum size of request body in byte |
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/_category_.json b/versioned_docs/version-2.6.1/user-guide/property-config/_category_.json
new file mode 100644
index 00000000000..b9d81b58d3e
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Property Config",
+ "position": 2
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/admin-property-config.md b/versioned_docs/version-2.6.1/user-guide/property-config/admin-property-config.md
new file mode 100644
index 00000000000..f3dd630d338
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/admin-property-config.md
@@ -0,0 +1,270 @@
+---
+title: Admin Property Config
+keywords: ["Config"]
+description: Admin Property Config
+---
+
+This paper mainly explains how to configure Apache ShenYu properties on the admin side.
+
+
+
+
+### Property Config
+
+```yaml
+shenyu:
+ register:
+ registerType: http #http #zookeeper #etcd #nacos #consul
+ serverLists: #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ sessionTimeout: 5000
+ connectionTimeout: 2000
+ checked: true
+ zombieCheckTimes: 5
+ scheduledTime: 10
+ nacosNameSpace: ShenyuRegisterCenter
+ sync:
+ websocket:
+ enabled: true
+ messageMaxSize: 10240
+ allowOrigins: ws://localhost:9095;ws://localhost:9195;
+# zookeeper:
+# url: localhost:2181
+# sessionTimeout: 5000
+# connectionTimeout: 2000
+# http:
+# enabled: true
+# nacos:
+# url: localhost:8848
+# namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
+# username:
+# password:
+# acm:
+# enabled: false
+# endpoint: acm.aliyun.com
+# namespace:
+# accessKey:
+# secretKey:
+# etcd:
+# url: http://localhost:2379
+# consul:
+# url: http://localhost:8500
+ aes:
+ secret:
+ key: 2095132720951327
+ iv: 6075877187097700
+ ldap:
+ enabled: false
+ url: ldap://xxxx:xxx
+ bind-dn: cn=xxx,dc=xxx,dc=xxx
+ password: xxxx
+ base-dn: ou=xxx,dc=xxx,dc=xxx
+ object-class: person
+ login-field: cn
+ jwt:
+ expired-seconds: 86400000
+ shiro:
+ white-list:
+ - /
+ - /favicon.*
+ - /static/**
+ - /index**
+ - /plugin
+ - /platform/**
+ - /websocket
+ - /configs/**
+ - /shenyu-client/**
+ - /error
+ - /actuator/health
+ - /swagger-ui.html
+ - /webjars/**
+ - /swagger-resources/**
+ - /v2/api-docs
+ - /csrf
+ swagger:
+ enable: true
+```
+
+
+### Property Detail
+
+##### shenyu.register config
+
+
+This section describes configurations related to client access. For details about client access principles, see: [Application Client Access](../../design/register-center-design) , for client access configuration, see: [Application Client Access Config](docs/user-guide/property-config/register-center-access.md) .
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|registerType |String | http | Yes | Which mode to use for registry. Currently, http, zookeeper, etcd, consul and nacos are supported.|
+|serverLists |String | null | No |Configure the address of the registry. If `http` is used, you do not need to enter this parameter. In clustering, multiple addresses are separated by commas (,).|
+|props | | | | The value of the property varies according to the registerType.|
+
+
+- `props` config
+
+The value of the attribute varies according to the registerType.
+
+When the registerType is `http`, the supported properties are as follows.
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|checked |boolean | false | No |is checked|
+|zombieCheckTimes |int | 5 | No |how many times does it fail to detect the service.|
+|scheduledTime |int | 10 | No | timed detection interval time|
+
+When the registerType is `zookeeper`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|sessionTimeout | int | 30000 | No |session timeout(millisecond)|
+|connectionTimeout | int | 3000 | No |connection timeout(millisecond)|
+
+When the registerType is `etcd`, no properties are provided for the time being.
+
+When the registerType is `nacos`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|nacosNameSpace | String | null | Yes |namespace|
+|username | String | "" | No |username|
+|password | String | "" | No |password|
+|accessKey | String | "" | No |accessKey|
+|secretKey | String | "" | No |secretKey|
+
+When the registerType is `consul`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|delay | int | 1 | No |The interval of each polling of monitoring metadata, in seconds, the default value is 1 second.|
+|wait-time | int | 55 | No |# wait-time: The waiting time for each polling of metadata monitoring, in seconds, the default value is 55 second .|
+|metadata-path | String | `shenyu/register` | No |Metadata path name, default is `shenyu/register`.|
+
+
+When the registerType is `apollo`, the supported properties are as follows.
+
+| Name | Type | Default | Required | Description |
+|:--------------|:-------|:-------:|:--------:|:---------------------|
+| appId | String | null | Yes | Apollo appId |
+| namespace | String | null | Yes | Apollo namespace |
+| portalUrl | String | null | Yes | Apollo portalUrl |
+| env | String | null | Yes | Apollo env |
+| clusterName | String | null | Yes | Apollo clusterName |
+| token | String | null | Yes | Apollo token |
+
+
+##### shenyu.sync config
+
+The Admin System and the Apache ShenYu gateway use data synchronization configurations.
+
+
+The following properties are configured for data synchronization using `websocket` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|enabled | boolean | true | No |whether to enable websocket for data synchronization.|
+|messageMaxSize | int | 0 | No |Set the `websocket` max buffer size in bytes.|
+|allowOrigins | String | "" | No |Set allowed `origins`, multiple parameters separated by `;`.|
+
+The following properties are configured for data synchronization using `zookeeper` :
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | Yes |zookeeper server url|
+|sessionTimeout | int | null | Yes |session timeout(millisecond)|
+|connectionTimeout | int | null | Yes |connection timeout(millisecond)|
+
+
+The following properties are configured for data synchronization using `http long polling` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|enabled | boolean | true | No |whether to enable.|
+|refreshInterval | int | 5(minute) | No |Periodically fetch data from the database and load it into memory.|
+|notifyBatchSize | int | 100 | No |notify clients in batches|
+
+
+The following properties are configured for data synchronization using `nacos` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | 是 |nacos url|
+|namespace | String | null | Yes |namespace|
+|username | String | null | No |username|
+|password | String | null | No |password|
+|acm | | | No |aliyun ACM service configuration|
+
+- `acm` config
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|enabled | boolean | false | No |whether to enable|
+|endpoint | String | null | No |ACM service address|
+|namespace | String | null | No |namespace|
+|accessKey | String | null | No |accessKey|
+|secretKey | String | null | No |secretKey|
+
+
+The following properties are configured for data synchronization using `etcd` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | Yes |etcd url|
+
+
+
+The following properties are configured for data synchronization using `consul` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | Yes |consul url|
+
+
+##### shenyu.aes.secret config
+
+aes secret properties:
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|key | String | `2095132720951327` | No |key|
+|iv | String | null | No |iv|
+
+
+##### shenyu.ldap config
+
+Spring ldap properties:
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|enabled | boolean | true | No |whether to enable|
+|url | String | null | No |ldap url|
+|bind-dn | String | null | No | UserDn |
+|password | String | null | No |password|
+|base-dn | String | null | No | searchBase |
+|object-class | String | `person` | No | filter |
+|login-field | String | `cn` | No | searchBase|
+|connectTimeout | int | 3000 | No |connect timeout(millisecond)|
+|readTimeout | int | 3000 | No |read timeout(millisecond)|
+
+
+##### shenyu.jwt config
+
+`jwt` properties:
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| expired-seconds | long | 24 *60* 60 * 1000L | No |expiration time(millisecond)|
+
+
+##### shenyu.shiro config
+
+`shiro` properties:
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| white-list | List | null | No |white list|
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/client-property-config.md b/versioned_docs/version-2.6.1/user-guide/property-config/client-property-config.md
new file mode 100644
index 00000000000..be863f087fb
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/client-property-config.md
@@ -0,0 +1,106 @@
+---
+title: Client Property Config
+keywords: ["Config"]
+description: Client Property Config
+---
+
+This paper mainly explains how to configure the properties of Apache ShenYu when the client accesses the gateway.
+
+
+Set the `shenyu` property in your microservice, for example, in [shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http) :
+
+
+
+### Property Config
+
+```yaml
+shenyu:
+ client:
+ registerType: http #zookeeper #etcd #nacos #consul #apollo
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848 #localhost:8080
+ props:
+ contextPath: /http
+ appName: http
+ port: 8189
+ nacosNameSpace: ShenyuRegisterCenter
+```
+
+
+### Property Detail
+
+##### shenyu.client config
+
+This section describes configurations related to client access. For details about client access principles, see: [Application Client Access](../../design/register-center-design) , for client access configuration, see: [Application Client Access Config](register-center-access.md) .
+
+
+
+| Name | Type | Default | Required | Description |
+|:-------------|:-------|:-------:|:--------:|:----------------------------------------------------------------------------------------------------------|
+| registerType | String | http | Yes | Which mode to use for registry. Currently, http, zookeeper, etcd, consul ,apollo and nacos are supported. |
+| serverLists | String | null | No | Configure the address of the registry. In clustering, multiple addresses are separated by commas (,). |
+| props | | | | The value of the property varies according to the registerType. |
+
+
+
+- `props` config
+
+When microservices are built by different protocols, the property configuration is slightly different. The general attributes are as follows:
+
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|contextPath |String | null | Yes |The route prefix of the microservice in the gateway.|
+|appName |String | null | Yes |microservice name. `springcloud` service don't set, please set `spring.application.name`.|
+|host |String | null | Yes | microservice address|
+|port |int | null | Yes | microservice port|
+|isFull |boolean | false | No | Whether to proxy the all service, currently just applies to `springmvc`/ `springcloud`|
+|ipAndPort |String | null | No | Service IP and port address, currently just applies to `gRPC` Proxy.|
+|shutdownWaitTime |int | 3000 | No | shutdown wait time(millisecond)|
+|delayOtherHooksExecTime |int | 2000 | No | `hook` execute time(millisecond)|
+|applicationShutdownHooksClassName |String | `java.lang.ApplicationShutdownHooks` | No | `hook` execute class name|
+|applicationShutdownHooksFieldName |String | `hooks` | No | `hook` execute field name |
+
+
+The value of the property varies according to the `registerType`.
+
+When the registerType is `nacos`, there has no other properties.
+
+
+
+When the registerType is `zookeeper`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|sessionTimeout | int | 30000 | No |session time out(millisecond)|
+|connectionTimeout | int | 3000 | No |connection time out(millisecond)|
+
+When the registerType is `etcd`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|etcdTimeout | int | 30000 | No |etcd time out(millisecond)|
+|etcdTTL | int | 5 | No |client lease time to live(second)|
+
+When the registerType is `nacos`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|nacosNameSpace | String | null | Yes |namespace |
+|username | String | "" | No |username|
+|password | String | "" | No |password|
+|accessKey | String | "" | No |accessKey|
+|secretKey | String | "" | No |secretKey|
+
+When the registerType is `apollo`, the supported properties are as follows.
+
+| Name | Type | Default | Required | Description |
+|:------------|:-------|:--------:|:--------:|:------------|
+| appId | String | "shenyu" | Yes | appId |
+| env | String | "" | Yes | env |
+| clusterName | String | "" | Yes | clusterName |
+| namespace | String | "" | Yes | namespace |
+| token | String | "" | Yes | token |
+| portalUrl | String | "" | Yes | portalUrl |
+
+When the registerType is `consul`, no other property configuration is provided. please set `spring.cloud.consul` for the configuration.
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/gateway-property-config.md b/versioned_docs/version-2.6.1/user-guide/property-config/gateway-property-config.md
new file mode 100644
index 00000000000..d7b90e98dee
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/gateway-property-config.md
@@ -0,0 +1,634 @@
+---
+title: Gateway Property Config
+keywords: ["Config"]
+description: Gateway Property Config
+---
+
+This paper mainly explains how to configure `Apache ShenYu` properties on the gateway side.
+
+
+
+### Property Config
+
+```yaml
+shenyu:
+ selectorMatchCache:
+ ## selector L1 cache
+ cache:
+ enabled: false
+ initialCapacity: 10000 # initial capacity in cache
+ maximumSize: 10000 # max size in cache
+ ## selector L2 cache, use trie as L2 cache
+ trie:
+ enabled: false
+ cacheSize: 128 # the number of plug-ins
+ matchMode: antPathMatch
+ ruleMatchCache:
+ ## rule L1 cache
+ cache:
+ enabled: true
+ initialCapacity: 10000 # initial capacity in cache
+ maximumSize: 65536 # max size in cache
+ ## rule L2 cache, use trie as L2 cache
+ trie:
+ enabled: false
+ cacheSize: 1024 # the number of selectors
+ matchMode: antPathMatch
+ netty:
+ http:
+ webServerFactoryEnabled: true
+ selectCount: 1
+ workerCount: 4
+ accessLog: false
+ serverSocketChannel:
+ soRcvBuf: 87380
+ soBackLog: 128
+ soReuseAddr: true
+ connectTimeoutMillis: 30000
+ writeBufferHighWaterMark: 65536
+ writeBufferLowWaterMark: 32768
+ writeSpinCount: 16
+ autoRead: false
+ allocType: "pooled"
+ messageSizeEstimator: 8
+ singleEventExecutorPerGroup: true
+ socketChannel:
+ soKeepAlive: false
+ soReuseAddr: true
+ soLinger: -1
+ tcpNoDelay: true
+ soRcvBuf: 87380
+ soSndBuf: 16384
+ ipTos: 0
+ allowHalfClosure: false
+ connectTimeoutMillis: 30000
+ writeBufferHighWaterMark: 65536
+ writeBufferLowWaterMark: 32768
+ writeSpinCount: 16
+ autoRead: false
+ allocType: "pooled"
+ messageSizeEstimator: 8
+ singleEventExecutorPerGroup: true
+ instance:
+ enabled: false
+ registerType: zookeeper #etcd #consul
+ serverLists: localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+# httpclient:
+# strategy: webClient
+# connectTimeout: 45000
+# responseTimeout: 3000
+# readerIdleTime: 3000
+# writerIdleTime: 3000
+# allIdleTime: 3000
+# readTimeout: 3000
+# writeTimeout: 3000
+# wiretap: false
+# keepAlive: false
+# pool:
+# type: ELASTIC
+# name: proxy
+# maxConnections: 16
+# acquireTimeout: 45000
+# maxIdleTime: 3000
+# proxy:
+# host:
+# port:
+# username:
+# password:
+# nonProxyHostsPattern:
+# ssl:
+# useInsecureTrustManager: true
+# keyStoreType: PKCS12
+# keyStorePath: classpath:keystore.p12
+# keyStorePassword: 123456
+# keyStoreProvider:
+# keyPassword: 123456
+# trustedX509Certificates:
+# handshakeTimeout:
+# closeNotifyFlushTimeout:
+# closeNotifyReadTimeout:
+# defaultConfigurationType:
+ sync:
+ websocket:
+ urls: ws://localhost:9095/websocket
+ allowOrigin: ws://localhost:9195
+# zookeeper:
+# url: localhost:2181
+# sessionTimeout: 5000
+# connectionTimeout: 2000
+# http:
+# url: http://localhost:9095
+# nacos:
+# url: localhost:8848
+# namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
+# username:
+# password:
+# acm:
+# enabled: false
+# endpoint: acm.aliyun.com
+# namespace:
+# accessKey:
+# secretKey:
+# etcd:
+# url: http://localhost:2379
+# consul:
+# url: http://localhost:8500
+# waitTime: 1000
+# watchDelay: 1000
+ cross:
+ enabled: true
+ allowedHeaders:
+ allowedMethods: "*"
+ allowedAnyOrigin: false
+ allowedOrigin:
+ # format : schema://prefix spacer domain
+ # Access-Control-Allow-Origin: "http://a.apache.org,http://b.apache.org"
+ spacer: "."
+ domain: apache.org
+ prefixes:
+ - a # a.apache.org
+ - b # b.apache.org
+ origins:
+ - c.apache.org
+ - d.apache.org
+ - http://e.apache.org
+ originRegex: ^http(|s)://(.*\.|)abc.com$
+ allowedExpose: ""
+ maxAge: "18000"
+ allowCredentials: true
+ switchConfig:
+ local: true
+ file:
+ enabled: true
+ maxSize : 10
+ exclude:
+ enabled: false
+ paths:
+ - /favicon.ico
+ fallback:
+ enabled: false
+ paths:
+ - /fallback/hystrix
+ - /fallback/resilience4j
+ health:
+ enabled: false
+ paths:
+ - /actuator/health
+ - /health_check
+ alert:
+ enabled: true
+ admins: localhost:9095
+ extPlugin:
+ path:
+ enabled: true
+ threads: 1
+ scheduleTime: 300
+ scheduleDelay: 30
+ scheduler:
+ enabled: false
+ type: fixed
+ threads: 16
+ upstreamCheck:
+ enabled: false
+ timeout: 3000
+ healthyThreshold: 1
+ unhealthyThreshold: 1
+ interval: 5000
+ printEnabled: true
+ printInterval: 60000
+ ribbon:
+ serverListRefreshInterval: 10000
+ metrics:
+ enabled: false
+ name : prometheus
+ host: 127.0.0.1
+ port: 8090
+ jmxConfig:
+ props:
+ jvm_enabled: true
+ sharedPool:
+ enable: true
+ prefix: "shenyu-shared"
+ corePoolSize: 200
+ maximumPoolSize: 2000
+ keepAliveTime: 60000
+ maxWorkQueueMemory: 1073741824 # 1GB
+ maxFreeMemory: 268435456 # 256MB
+```
+
+### Property Detail
+
+
+
+##### shenyu.matchCache config
+
+* selector match cache
+
+| Field | Type | Default | Required | Description |
+|-----------------|---------|---------|----------|-----------------------------------|
+| enabled | Boolean | false | No | Whether to enable selector cache. |
+| initialCapacity | Integer | 10000 | No | selector initial capacity |
+| maximumSize | Integer | 10000 | No | selector max size |
+
+* selector trie cache
+
+| Field | Type | Default | Required | Description |
+|--------------|---------|--------------|----------|-----------------------------------------------------------------------------------|
+| enabled | Boolean | false | No | Whether to enable selector trie cache |
+| cacheSize | Integer | 512 | No | trie cache size |
+| matchMode | String | antPathMatch | Yes | path match mode, shenyu support two match modes, `antPathMatch` and `pathPattern` |
+
+
+* rule match cache
+
+| Field | Type | Default | Required | Description |
+|-----------------|---------|---------|----------|-------------------------------|
+| enabled | Boolean | false | No | Whether to enable rule cache. |
+| initialCapacity | Integer | 10000 | No | selector initial capacity |
+| maximumSize | Integer | 10000 | No | selector max size |
+
+* rule trie cache
+
+| Field | Type | Default | Required | Description |
+|--------------|---------|--------------|----------|-----------------------------------------------------------------------------------|
+| enabled | Boolean | false | No | Whether to enable rule trie cache |
+| cacheSize | Integer | 512 | No | trie cache size |
+| matchMode | String | antPathMatch | Yes | path match mode, shenyu support two match modes, `antPathMatch` and `pathPattern` |
+
+
+shenyu trie match support two match mode, we suggest use `pathPattern` as default match mode
+
+> pathPattern: org.springframework.web.util.pattern.PathPatternParser
+> antPathMatch: org.springframework.util.AntPathMatcher
+
+when you mark `matchRestful` as true, we suggest mark all cache to `false` to avoid cache conflict.
+
+##### shenyu.NettyTcpProperties config
+
+The apache shenyu reactor-netty config.
+
+| Name | Type | Default | Required | Description |
+|:------------------------------|:--------|:-------:|:--------:|:------------------------------------------------------------------------------------------------------------------------------------------|
+| webServerFactoryEnabled | Boolean | true | No | Whether to enable custom parameters. True-enable. False-NettyReactiveWebServerFactory Can be configured by yourself. |
+| selectCount | Integer | 1 | No | Number of netty selectors. |
+| workerCount | Integer | 4 | No | Number of netty workers. |
+| accessLog | Boolean | false | No | netty request parameters. |
+| **ServerSocketChannelConfig** | | | | |
+| soRcvBuf | Integer | -- | No | Socket config, the size of the socket receive buffer. The default value is system dependent. |
+| soBackLog | Integer | 128 | No | Socket config, maximum length of the accept queue. |
+| soReuseAddr | Boolean | true | No | Socket config, allow reuse of local addresses. The default value in reactor-netty is true. |
+| connectTimeoutMillis | Integer | 30000 | No | Netty config, the connect timeout of the channel in milliseconds. |
+| writeBufferHighWaterMark | Integer | 65536 | No | Netty config, the high water mark of the write buffer. |
+| writeBufferLowWaterMark | Integer | 32768 | No | Netty config, the low water mark of the write buffer. |
+| writeSpinCount | Integer | 16 | No | Netty config, the maximum loop count for a write operation. |
+| autoRead | Boolean | false | No | Netty config, channel read method will be invoked automatically so that a user application doesn't need to call it at all. The default value in reactor-netty is false, and can only be false. |
+| allocType | String | pooled | No | Netty config, set the ByteBufAllocator which is used for the channel to allocate buffers. |
+| messageSizeEstimator | Integer | 8 | No | Netty config, message size estimator, estimate ByteBuf,ByteBufHolder and FileRegion size. |
+| singleEventExecutorPerGroup | Boolean | true | No | Netty config, single thread execute the event of ChannelPipeline. |
+| **SocketChannelConfig** | | | | |
+| soKeepAlive | Boolean | false | No | Socket config, enable tcp keepalive. |
+| soReuseAddr | Boolean | true | No | Socket config, allow reuse of local addresses. The default value in reactor-netty is true. |
+| soLinger | Integer | -1 | No | Socket config, the delay time for closing the socket. |
+| tcpNoDelay | Boolean | true | No | Socket config, enable Nagle algorithm. |
+| soRcvBuf | Integer | -- | No | Socket config, the size of the socket receive buffer. The default value is system dependent. |
+| soSndBuf | Integer | -- | No | Socket config, the size of the socket send buffer. The default value is system dependent. |
+| ipTos | Integer | 0 | No | IP config, the Type of Service (ToS) octet in the Internet Protocol (IP) header. |
+| allowHalfClosure | Boolean | false | No | Netty config, Sets whether the channel should not close itself when its remote peer shuts down output to make the connection half-closed. |
+| connectTimeoutMillis | Integer | 30000 | No | Netty config, the connect timeout of the channel in milliseconds. |
+| writeBufferHighWaterMark | Integer | 65536 | No | Netty config, the high water mark of the write buffer. |
+| writeBufferLowWaterMark | Integer | 32768 | No | Netty config, the low water mark of the write buffer. |
+| writeSpinCount | Integer | 16 | No | Netty config, the maximum loop count for a write operation. |
+| autoRead | Boolean | false | No | Netty config, channel read method will be invoked automatically so that a user application doesn't need to call it at all. The default value in reactor-netty is false, and can only be false. |
+| allocType | String | pooled | No | Netty config, set the ByteBufAllocator which is used for the channel to allocate buffers. |
+| messageSizeEstimator | Integer | 8 | No | Netty config, message size estimator, estimate ByteBuf,ByteBufHolder and FileRegion size. |
+| singleEventExecutorPerGroup | Boolean | true | No | Netty config, single thread execute the event of ChannelPipeline. |
+
+##### shenyu.register config
+
+This is the relevant configuration for the `ShenYu` gateway to register to the registration center. For the configuration of the registration center, please refer to [Register Center Instance Config](register-center-instance.md).
+
+| Name | Type | Default | Required | Description |
+| :----------- | :-----: | :------------: | :------: | :----------------------------------------------------------- |
+| enabled | boolean | false | Yes | Whether to start. |
+| registerType | String | zookeeper | Yes | Which registry to use, currently supports zookeeper, etcd. |
+| serverLists | String | localhost:2181 | Yes | The address of the register center. If using clusters, separate with `,`. |
+| props | | | | When using different register types, the attribute values are different. |
+
+- `props` config
+
+When using different register center, the attribute values are different.
+
+When the registerType is `zookeeper`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|sessionTimeout | int | 30000 | No |session time out(millisecond).|
+|connectionTimeout | int | 3000 | No |connection time out(millisecond).|
+
+When the registerType is `etcd`, the supported properties are as follows.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|etcdTimeout | int | 30000 | No |etcd time out(millisecond).|
+|etcdTTL | int | 5 | No |client lease time to live(second).|
+
+##### shenyu.httpclient config
+
+This is the HttpClient configuration used to send proxy requests after proxying the Http and SpringCloud protocols in the `ShenYu` gateway.
+
+| Name | Type | Default | Required | Description |
+| :-------------- | :-----: | :-------: | :------: | :----------------------------------------------------------- |
+| strategy | String | webClient | No | Type of http client, defaults to webClient. - webClient: use by WebClientPlugin - netty: use by NettyHttpClientPlugin. |
+| connectTimeout | int | 45000 | No | Connection timeout (millisecond), the default value is 45000. |
+| responseTimeout | int | 3000 | No | The response timeout (millisecond), the default value is 3000. |
+| readerIdleTime | int | 3000 | No | The reader idle timeout (millisecond), the default value is 3000. |
+| writerIdleTime | int | 3000 | No | The writer idle timeout (millisecond), the default value is 3000. |
+| allIdleTime | int | 3000 | No | The all idle timeout (millisecond), the default value is 3000. |
+| readTimeout | int | 3000 | No | Read timeout (millisecond), the default value is 3000. |
+| writeTimeout | int | 3000 | No | Write timeout (millisecond), the default value is 3000. |
+| wiretap | Boolean | false | No | Enables wiretap debugging for Netty HttpClient, the default value is 'false'. |
+| keepAlive | Boolean | false | No | Enable or Disable Keep-Alive support for the outgoing request, the default value is 'false'. |
+| pool | | | | HttpClient connection pool config. |
+| proxy | | | | HttpClient proxy config. |
+| ssl | | | | HttpClient ssl config. |
+
+- `pool` config
+
+HttpClient connection pool configuration:
+
+| Name | Type | Default | Required | Description |
+| :------------- | :----: | :-------------------------------: | :------: | :----------------------------------------------------------- |
+| type | String | ELASTIC | No | Type of pool for HttpClient to use, defaults to ELASTIC. - ELASTIC: The connection pool can be cached and grown on demand - FIXED: The connection pool cache and reuse a fixed maximum The number of connections. - DISABLED: The connection pool will always create a new connection. |
+| name | String | proxy | No | The channel pool map name, defaults to proxy. |
+| maxConnections | int | the maximum value of 2*CPU and 16 | No | Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones. the default value is available number of processors*2. (but with a minimum value of 16). |
+| acquireTimeout | int | 45000 | No | Only for type FIXED, the maximum time in millis to wait for acquiring. the default value is 45000. |
+| maxIdleTime | int | NULL | No | After which the channel will be closed, if NULL there is no max idle time. |
+
+- `proxy` config
+
+Netty HttpClient proxy configuration:
+
+| Name | Type | Default | Required | Description |
+| :------------------- | :----: | :-----: | :------: | :----------------------------------------------------------- |
+| host | String | null | No | Hostname for proxy configuration of Netty HttpClient. |
+| port | String | null | No | Port for proxy configuration of Netty HttpClient. |
+| username | String | null | No | Username for proxy configuration of Netty HttpClient. |
+| password | String | null | No | Password for proxy configuration of Netty HttpClient. |
+| nonProxyHostsPattern | String | null | No | Regular expression (Java) for a configured list of hosts. that should be reached directly, bypassing the proxy. |
+
+- `SSL` config
+
+Gateway routing can support routing to http and https back-end services at the same time. The following is the SSL-related configuration:
+
+| Name | Type | Default | Required | Description |
+| :----------------------- | :-----: | :-----: | :------: | :----------------------------------------------------------- |
+| useInsecureTrustManager | Boolean | false | No | Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production. |
+| keyStoreType | String | PKCS12 | No | SSL key store type. |
+| keyStorePath | String | | No | SSL key store path. |
+| keyStorePassword | String | | No | SSL key store pass word. |
+| keyStoreProvider | String | | No | SSL Keystore provider for netty httpClient and webclient. |
+| keyPassword | String | | No | SSL key pass word. |
+| trustedX509Certificates | String | Null | No | Trusted certificates for verifying the remote endpoint's certificate.(Use `,` to separate multiple values) |
+| handshakeTimeout | int | 10000 | No | SSL handshake timeout. Default to 10000 ms |
+| closeNotifyFlushTimeout | int | 3000 | No | SSL close_notify flush timeout. Default to 3000 ms. |
+| closeNotifyReadTimeout | int | 0 | No | SSL close_notify read timeout. Default to 0 ms. |
+| defaultConfigurationType | String | TCP | No | The default ssl configuration type. Defaults to TCP. - H2: SslProvider will be set depending on OpenSsl.isAlpnSupported(), SslProvider.HTTP2_CIPHERS, ALPN support, HTTP/1.1 and HTTP/2 support. - TCP: [`SslProvider`](https://netty.io/4.1/api/io/netty/handler/ssl/SslProvider.html?is-external=true) will be set depending on `OpenSsl.isAvailable()`. - NONE: There will be no default configuration. |
+
+##### Filter Configuration
+
+- `shenyu.file` config
+
+File filter properties.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| enabled | Boolean | false | No | enable file size filtering |
+| maxSize | Integer | 10 | No | upload file maxSize (MB) |
+
+
+- `shenyu.cross` config
+
+Cross filter properties:
+
+
+|Name | | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|:---------------------------:|
+| enabled | | Boolean | false | No | allow cross-domain requests |
+| allowedHeaders | | String | x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client | No | allowedHeaders, Use "," split in multiple cases. the new "allowedHeaders" will append to "Access-Control-Allow-Headers" based on the default value and remove the reduplicative header. |
+| allowedMethods | | String | "*" | No | allowedMethods |
+| allowedAnyOrigin | | Boolean | false | No | Whether to allow any Origin, if it is true, directly set the `Access-Control-Allow-Origin` to the same value as the Origin, that is, `request.getHeaders().getOrigin()`, and discard the `allowedOrigin` configuration. |
+| allowedOrigin | | AllowedOriginConfig | - | No | Set the allowed request sources. |
+| | spacer | String | "" | No | Set the allowed subdomains, need to use with `domain`, `prefixes`. |
+| | domain | String | "" | No | Set the allowed subdomains, need to use with `spacer`, `prefixes`. |
+| | prefixes | Set | [] | No | Set the allowed subdomains, need to use with `spacer`, `domain`. |
+| | origins | Set | null | No | Set the domain names that are allowed to be accessed, which can be used separately. |
+| | originRegex | String | "" | No | Set up access to domains that allow regular matching, available separately. |
+| allowedExpose | | String | "" | No | allowedExpose |
+| maxAge | | String | "18000" | No | maxAge (ms) |
+| allowCredentials | | Boolean | true | No | allowCredentials |
+
+
+- `shenyu.exclude` config
+
+Exculde filter properties.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| enabled | Boolean | false | No | whether to enable `exclude filter` and reject the specified request to pass through the gateway. |
+| paths | Array | null | Yes | Requests matching this list can not pass through the gateway (support Path-Matching). |
+
+- `shenyu.fallback` config
+
+Related configuration of fallback response.
+
+| Name | Type | Default | Required | Description |
+| :------ | :------ | :-----: | :------: | :---------------------------------------- |
+| enabled | Boolean | false | No | Whether to turn on the fallback response. |
+| paths | Array | [] | Yes | Address of the service fallback request. |
+
+- `shenyu.health` config
+
+Configuration related to service health status.
+
+| Name | Type | Default | Required | Description |
+| :------ | :------ |:----------------------------------------:| :------: | :-------------------------------------- |
+| enabled | Boolean | false | No | Whether to turn on health detection. |
+| paths | Array | `"/actuator/health"` 、`"/health_check"` | No | Set up service health monitoring paths. |
+
+- `shenyu.local` config
+
+Local forwarding-related configuration.
+
+| Name | Type | Default | Required | Description |
+| :-------- | :------ | :-----: | :------: | :----------------------------------------------------------- |
+| enabled | Boolean | false | No | Whether to enable local forwarding. |
+| sha512Key | String | "" | Yes | Secret key, according to the secret key to determine whether the need for local forwarding. |
+
+##### shenyu.switchConfig config
+
+The apache shenyu switch configuration.
+
+| Name | Type | Default | Required | Description |
+| :---- | :------ | :-----: | :------: | :----------------------------------------------------------- |
+| local | Boolean | true | No | Whether to open local mode, if so, local operation data, default open. |
+
+##### shenyu.sync config
+
+The apache shenyu gateway and the Admin System use data synchronization configurations.
+
+
+The following properties are configured for data synchronization using `websocket` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| urls | String | null | Yes | The websocket server address of `Admin`, separate multiple addresses with `,`. |
+| allowOrigin | String | "" | No | Set the allowed `origins`, with multiple parameters separated by `;`. |
+
+
+
+The following properties are configured for data synchronization using `zookeeper` :
+
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | Yes |zookeeper server url.|
+|sessionTimeout | int | null | Yes |session timeout (millisecond).|
+|connectionTimeout | int | null | Yes |connection timeout (millisecond).|
+
+
+
+The following properties are configured for data synchronization using `http long polling` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| url | String | null | Yes | `Admin` server address. |
+
+
+
+The following properties are configured for data synchronization using `nacos` :
+
+|Name | | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:---------|:---------------------------:|
+|url | | String | null | Yes |nacos url|
+|namespace | | String | null | Yes |namespace|
+|username | | String | null | No |username|
+|password | | String | null | No |password|
+|acm | | Object | - | No |aliyun ACM service configuration.|
+| |enabled | boolean | false | No |whether to enable.|
+| |endpoint | String | null | No |ACM service address.|
+| |namespace | String | null | No |namespace.|
+| |accessKey | String | null | No |accessKey.|
+| |secretKey | String | null | No |secretKey.|
+
+The following properties are configured for data synchronization using `apollo` :
+
+| Name | | Type | Default | Required | Description |
+|:------------|:----|:------:|:-------:|:---------|:-----------:|
+| namespace | | String | null | Yes | namespace |
+| appId | | String | null | Yes | appId |
+| token | | String | null | Yes | token |
+| clusterName | | String | default | Yes | cluster |
+| portalUrl | | String | null | Yes | portalUrl |
+| meta | | String | null | Yes | meta |
+| env | | String | null | Yes | env |
+
+
+
+The following properties are configured for data synchronization using `etcd` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | Yes |`etcd` server url.|
+
+
+
+The following properties are configured for data synchronization using `consul` :
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+|url | String | null | Yes |`consul` server url.|
+| waitTime | int | null | Yes | the timeout period for requesting consul service to pull configuration information (milliseconds). |
+|watchDelay | int | null | Yes |Synchronization interval (milliseconds).|
+
+##### shenyu.extPlugin config
+
+The apache shenyu supports dynamic loading of custom plug-ins with the following configuration
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| enabled | Boolean | true | No | open dynamic loading of custom plug-ins. |
+| path | String | | False | custom plugins path, if not config, the path is /ext/lib. |
+| threads | Integer | 1 | False | threads for dynamic loading custom plug-ins. |
+| scheduleTime | Integer | 300 | False | schedule time (s) for dynamic loading custom plug-ins. |
+| scheduleDelay | Integer | 30 | False | schedule delay when app startup. |
+
+##### shenyu.scheduler config
+
+Scheduler config for apache shenyu scheduler thread model.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| enabled | Boolean | false | No | Whether to turn on Scheduler Thread Model. |
+| type | String | fixed | False | fixed Thread Pool or elastic Scheduler Thread Model. |
+| threads | Integer | Math.max((Runtime.getRuntime().availableProcessors() << 1) + 1, 16) | False | threads for fixed Thread Pool. |
+
+##### shenyu.upstreamCheck config
+
+UpstreamCheck config is the configuration used by apache shenyu to detect upstream.
+
+|Name | Type | Default | Required | Description |
+|:------------------------ |:----- |:-------: |:-------:|:----------------------------|
+| enabled | Boolean | false | No | Whether to turn on upstreamCheck. |
+| timeout | Integer | 3000 | No | timeout (ms). |
+| healthyThreshold | Integer | 1 | No | healthyThreshold. |
+| unhealthyThreshold | Integer | 1 | No | unhealthyThreshold. |
+| interval | Integer | 5000 | No | schedule time (ms) for checked. |
+| printEnabled | Boolean | true | No | Whether to turn on print logs. |
+| printInterval | Integer | 60000 | No | schedule time (ms) for print logs. |
+
+##### shenyu.ribbon config
+
+The apache shenyu polling interval configuration.
+
+| Name | Type | Default | Required | Description |
+| :------------------------ | :------ | :-----: | :------: | :----------------------------------------------------------- |
+| serverListRefreshInterval | Integer | 10000 | No | Adjust the refresh interval parameter, refer to`com.netflix.client.config.CommonClientConfigKey#ServerListRefreshInterval`. |
+
+##### shenyu.metrics config
+
+The apache shenyu metrics config,the gateway is used to monitor its own operational status.
+
+| Name | | Type | Default | Required | Description |
+| :-------- | :---------- | :-----: | :-----: | :------- | ------------------------------------------------------------ |
+| enabled | | Boolean | false | No | Whether to enable metrics, true means enable. |
+| name | | String | "" | No | name. |
+| host | | String | "" | No | IP exposed by the gateway service to the collection service. |
+| port | | Integer | Null | No | Port exposed by the gateway service to the collection service. |
+| jmxConfig | | String | "" | No | jmx config. |
+| props | | - | | No | properties. |
+| | jvm_enabled | Boolean | Null | No | Turn on jvm's monitoring metrics. |
+
+##### shenyu.sharedPool config
+
+The apache shenyu shared thread pool configuration.
+
+| Name | Type | Default | Required | Description |
+| :----------------- | ------- | :---------------------------------------------- | :------: | :-------------------------------------------------: |
+| enabled | Boolean | false | No | Whether to enable shared thread pooling. |
+| prefix | String | "shenyu-shared" | No | Thread pool name prefix. |
+| corePoolSize | Integer | 200 | No | Number of core threads in the thread pool. |
+| maximumPoolSize | Integer | Integer.MAX_VALUE | No | Maximum number of threads in the thread pool. |
+| keepAliveTime | Long | 60000L | No | Excess idle thread keepAlive time, in milliseconds. |
+| maxWorkQueueMemory | Long | 80% of the current JVM maximum available memory | No | Maximum memory used (byte). |
+| maxFreeMemory | Integer | 无 | No | Maximum remaining memory (byte). |
+
+##### shenyu.alert config
+
+The apache shenyu alert notice configuration.
+
+| Name | Type | Default | Required | Description |
+| :----------------- | ------- |:------------------------------------------------| :------: |:-------------------------------------------------:|
+| enabled | Boolean | false | No | Whether to enable alarm message. |
+| admins | String | "localhost:9095" | No | Report alarm message to shenyu admin server list. |
+
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/register-center-access.md b/versioned_docs/version-2.6.1/user-guide/property-config/register-center-access.md
new file mode 100644
index 00000000000..e3f23d21ed0
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/register-center-access.md
@@ -0,0 +1,109 @@
+---
+title: Application Client Access Config
+keywords: ["register center"]
+description: register center access
+---
+
+> *Notice*
+> After ShenYu version 2.6.1, the ShenYu register just support http type, and the middleware register type has been removed.
+> So, please use the http register type to register your service.
+> ShenYu Register Center isn't microservice register center, it just register metadata, selector data, rule data to shenyu-admin, and then shenyu-admin will sync data to shenyu-gateway.
+
+Application client access means to access your microservice to ShenYu gateway, currently supports HTTP, Dubbo, Spring Cloud, gRPC, Motan, Sofa, Tars and other protocols access. Currently, ShenYu just support HTTP register type.
+
+This article describes how to configure the application client to access the Apache ShenYu gateway. For related principles, see [Application Client Access](../../design/register-center-design) in the design document .
+
+
+
+
+### Http Registry Config
+
+#### shenyu-admin config
+
+Set the register type to '`Http` in the `yml` file. The configuration information is as follows:
+
+```yaml
+shenyu:
+ register:
+ registerType: http
+ props:
+ checked: true # is checked
+ zombieCheckTimes: 5 # how many times does it fail to detect the service
+ scheduledTime: 10 # timed detection interval time
+```
+
+
+
+
+#### shenyu-client config
+
+The following shows the configuration information registered through `Http` when the `Http` service accesses the `Apache ShenYu` gateway as a client. Other clients (such as `Dubbo` and `Spring Cloud`) can be configured in the same way.
+
+```yaml
+shenyu:
+ register:
+ registerType: http
+ serverLists: http://localhost:9095
+ props:
+ username: admin
+ password: 123456
+ client:
+ http:
+ props:
+ contextPath: /http
+ appName: http
+ port: 8188
+ isFull: false
+# registerType : register type, set http
+# serverList: when register type is http,set shenyu-admin address list,pls note 'http://' is necessary.
+# port: your project port number; apply to springmvc/tars/grpc
+# contextPath: your project's route prefix through shenyu gateway, such as /order ,/product etc,gateway will route based on it.
+# appName:your project name,the default value is`spring.application.name`.
+# isFull: set true means providing proxy for your entire service, or only a few controller. apply to springmvc/springcloud
+```
+
+
+
+
+### Register different type API at same time
+
+> follow example use the http and dubbo.
+
+the `yml` configuration like follow:
+
+```yaml
+shenyu:
+ register:
+ registerType: http
+ serverLists: localhost:9195
+ props:
+ username: admin
+ password: 123456
+ client:
+ http:
+ props:
+ contextPath: /http
+ appName: http
+ port: 8188
+ isFull: false
+ dubbo:
+ props:
+ contextPath: /dubbo
+ appName: dubbo
+ port: 28080
+ props:
+ nacosNameSpace: ShenyuRegisterCenter
+# registerType : register type, set nacos
+# serverList: when register type is nacos, add nacos address list
+# http.port: your project port number; apply to springmvc
+# http.contextPath: your project's route prefix through shenyu gateway, such as /order ,/product etc,gateway will route based on it.
+# http.appName:your project name,the default value is`spring.application.name`.
+# http.isFull: set true means providing proxy for your entire service, or only a few controller. apply to springmvc/springcloud
+# dubbo.contextPath: your project dubbo service's context path
+# dubbo.port: your project dubbo rpc port
+# dubbo.appName: your project dubbo application name
+# nacosNameSpace: nacos namespace
+```
+
+In conclusion, this paper mainly describes how to connect your microservices (currently supporting `Http`, `Dubbo`, `Spring Cloud`, `gRPC`, `Motan`, `Sofa`, `Tars` and other protocols) to the `Apache ShenYu` gateway. the Apache ShenYu gateway support registry has `Http` This paper introduces the different ways to register configuration information when `Http` service is used as the client to access `Apache ShenYu` gateway.
+
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/register-center-instance.md b/versioned_docs/version-2.6.1/user-guide/property-config/register-center-instance.md
new file mode 100644
index 00000000000..0e41c573766
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/register-center-instance.md
@@ -0,0 +1,72 @@
+---
+title: Register Center Instance Config
+keywords: ["register center"]
+description: Register Instance
+---
+
+This document will introduce how to register the gateway instance to the registry. The `Apache ShenYu` gateway currently supports registration to `zookeeper` , `etcd` and `consul`.
+
+### Add Maven dependency
+
+First, introduce the following dependencies in the gateway's `pom.xml` file.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-registry
+ ${project.version}
+
+
+```
+
+### Use zookeeper
+
+> Please pay attention! From ShenYu 2.5.0, ShenYu will no longer support Zookeeper 3.4.x or below version. If you're already using Zookeeper, You need to use Zookeeper with a higher version and initialize the data.
+
+Add the following configuration to the gateway's `yml` file:
+
+```yaml
+registry:
+ enabled: true
+ registerType: zookeeper
+ serverLists: localhost:2181 #config with your zk address, used by the cluster environment, separated with (,).
+ props:
+ sessionTimeout: 3000 #Optional, default 3000
+ connectionTimeout: 3000 #Optional, default 3000
+```
+
+### Use etcd
+
+Add the following configuration to the gateway's `yml` file:
+
+```yaml
+registry:
+ enabled: true
+ registerType: etcd
+ serverLists: http://localhost:2379 #config with your etcd address, used by the cluster environment, separated with (,).
+ props:
+ etcdTimeout: 3000 #Optional, default 3000
+ etcdTTL: 5 #Optional, default 5
+```
+
+### Use apollo
+
+Add the following configuration to the gateway's `yml` file:
+
+```yaml
+registry:
+ enabled: true
+ registerType: apollo
+ serverLists: http://localhost:8080
+ props:
+ env: dev
+ appId: shenyu
+ namespace: application
+ clusterName: default
+ token: 0fff5645fc74ee5e0d63a6389433c8c8afc0beea31eed0279ecc1c8961d12da9
+ portalUrl: http://localhost:8070
+```
+
+
+> After the configuration is complete, start the gateway and it will successfully register to the corresponding registration center.
diff --git a/versioned_docs/version-2.6.1/user-guide/property-config/use-data-sync.md b/versioned_docs/version-2.6.1/user-guide/property-config/use-data-sync.md
new file mode 100644
index 00000000000..4aef68576a6
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/property-config/use-data-sync.md
@@ -0,0 +1,378 @@
+---
+title: Data Synchronization Config
+keywords: ["Data Synchronization"]
+description: use different data-sync strategy
+---
+
+This document focuses on how to use different data synchronization strategies. Data synchronization refers to the strategy used to synchronize data to ShenYu gateway after shenyu-admin background operation data. ShenYu gateway currently supports ZooKeeper, WebSocket, HTTP Long Polling, Nacos, Etcd and Consul for data synchronization.
+
+
+
+
+For details about the data synchronization principles, see [Data Synchronization Design](../../design/data-sync) in the design document.
+
+### WebSocket Synchronization Config(default strategy, recommend)
+
+* `Apache ShenYu` gateway config
+
+ Add these dependencies in `pom.xml`:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sync-data-websocket
+ ${project.version}
+
+```
+
+
+
+
+Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ websocket :
+ # urls: address of shenyu-admin,multi-address will be separated with (,).
+ urls: ws://localhost:9095/websocket
+ allowOrigin: ws://localhost:9195
+```
+
+
+
+* `shenyu-admin` config
+
+ Add these config values in yaml file:
+
+```yml
+shenyu:
+ sync:
+ websocket:
+ enabled: true
+```
+
+
+
+After the connection is established, the data will be fully obtained once, and the subsequent data will be updated and added increments, with good performance. It also supports disconnection (default: `30` seconds). This mode is recommended for data synchronization and is the default data synchronization strategy of ShenYu.
+
+### Zookeeper Synchronization Config
+
+> Please pay attention! From ShenYu 2.5.0, ShenYu will no longer support Zookeeper 3.4.x or below version. If you're already using Zookeeper, You need to use Zookeeper with a higher version and initialize the data.
+
+* `Apache ShenYu` gateway config
+
+ Add these dependencies in `pom.xml`:
+
+ ```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sync-data-zookeeper
+ ${project.version}
+
+ ```
+
+
+
+
+Add these config values in yaml file:
+
+
+```yaml
+shenyu:
+ sync:
+ zookeeper:
+ url: localhost:2181
+ #url: config with your zk address, used by the cluster environment, separated with (,).
+ sessionTimeout: 5000
+ connectionTimeout: 2000
+```
+
+
+
+
+* `shenyu-admin` config
+
+Add these config values in yaml file:
+
+
+```yaml
+shenyu:
+ sync:
+ zookeeper:
+ url: localhost:2181
+ #url: config with your zk address, used by the cluster environment, separated with (,).
+ sessionTimeout: 5000
+ connectionTimeout: 2000
+```
+
+
+
+
+
+It is a good idea to use ZooKeeper synchronization mechanism with high timeliness, but we also have to deal with the unstable environment of ZK, cluster brain splitting and other problems.
+
+
+
+### HTTP Long Polling Synchronization Config
+
+* `Apache ShenYu` gateway config
+
+Add these dependencies in `pom.xml`:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sync-data-http
+ ${project.version}
+
+```
+
+
+
+
+Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ http:
+ url: http://localhost:9095
+ #url: config your shenyu-admin ip and port,cluster IP by split by (,)
+```
+
+
+
+
+* `shenyu-admin` config
+
+ Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ http:
+ enabled: true
+```
+
+
+
+
+HTTP long-polling makes the gateway lightweight, but less time-sensitive. It pulls according to the group key, if the data is too large, it will have some influences, a small change under a group will pull the entire group.
+
+
+
+### Nacos Synchronization Config
+
+* `Apache ShenYu` gateway config
+
+
+Add these dependencies in `pom.xml`:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sync-data-nacos
+ ${project.version}
+
+```
+
+
+
+
+Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ nacos:
+ url: localhost:8848
+ # url: config with your nacos address, please use (,) to split your cluster environment.
+ namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
+ username:
+ password:
+ acm:
+ enabled: false
+ endpoint: acm.aliyun.com
+ namespace:
+ accessKey:
+ secretKey:
+ # other configure,please refer to the naocs website.
+```
+
+
+
+
+* `shenyu-admin` config
+
+ Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ nacos:
+ url: localhost:8848
+ namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
+ username:
+ password:
+ acm:
+ enabled: false
+ endpoint: acm.aliyun.com
+ namespace:
+ accessKey:
+ secretKey:
+ # url: config with your nacos address, pls use (,) to split your cluster environment.
+ # other configure,pls refer to the naocs website.
+```
+
+
+
+
+### Etcd Synchronization Config
+
+* `Apache ShenYu` gateway config
+
+ Add these dependencies in `pom.xml`:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sync-data-etcd
+ ${project.version}
+
+
+ io.grpc
+ grpc-grpclb
+
+
+ io.grpc
+ grpc-netty
+
+
+
+```
+
+
+
+Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ etcd:
+ url: http://localhost:2379
+ #url: config with your etcd address, used by the cluster environment, separated with (,).
+```
+
+
+
+
+* `shenyu-admin` config
+
+ Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ etcd:
+ url: http://localhost:2379
+ #url: config with your etcd address, used by the cluster environment, separated with (,).
+```
+
+
+
+
+### Consul Synchronization Config
+
+* `Apache ShenYu` gateway config
+
+Add these dependencies in `pom.xml`:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sync-data-consul
+ ${project.version}
+
+```
+
+
+
+
+Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ consul:
+ url: http://localhost:8500
+ waitTime: 1000 # query wait time
+ watchDelay: 1000 # Data synchronization interval
+```
+
+
+
+
+* `shenyu-admin` config
+
+ Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ consul:
+ url: http://localhost:8500
+```
+
+
+
+### Apollo Synchronization Config
+
+Apollo just support Java [8,17), if you want to use apollo as data sync center, please make sure your JDK version is between [8,17).
+
+* `Apache ShenYu` gateway config
+
+Download the corresponding version of the jar package from `https://repo1.maven.org/maven2/org/apache/shenyu/shenyu-spring-boot-starter-sync-data-apollo/`, and then put the jar package into the `/lib` directory.
+
+Add these config values in yaml file:
+
+```yaml
+shenyu:
+ sync:
+ apollo:
+ appId: shenyu
+ meta: http://localhost:8080
+ env: dev
+ clusterName: test
+ namespace: application
+```
+
+* `Apache ShenYu Admin` config
+
+Download the corresponding version of the jar package from `https://repo1.maven.org/maven2/org/apache/shenyu/shenyu-admin-listener-apollo/`, and then put the jar package into the `/lib` directory.
+
+
+```yaml
+shenyu:
+ sync:
+ apollo:
+ meta: http://localhost:8080
+ appId: shenyu
+ portalUrl: http://localhost:8070
+ env: dev
+ clusterName: test
+ namespace: application
+ token: 0fff5645fc74ee5e0d63a6389433c8c8afc0beea31eed0279ecc1c8961d12da9
+```
+
+
+
+
+> After the data synchronization strategy of Apache ShenYu gateway and shenyu-admin is reconfigured, the microservice needs to be restarted.
+> the Apache ShenYu gateway and shenyu-admin must use the same synchronization strategy.
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/_category_.json b/versioned_docs/version-2.6.1/user-guide/proxy/_category_.json
new file mode 100644
index 00000000000..fce38607773
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Quick Connect to Your Service",
+ "position": 4
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/dubbo-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/dubbo-proxy.md
new file mode 100644
index 00000000000..2af957035f7
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/dubbo-proxy.md
@@ -0,0 +1,437 @@
+---
+title: Dubbo Proxy
+keywords: ["Dubbo"]
+description: Dubbo Client Access
+---
+
+This document is intended to help the `Dubbo` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `Dubbo` plugin to handle `dubbo` service.
+
+Support Alibaba Dubbo(< 2.7.x) and Apache Dubbo (>=2.7.x).
+
+Before the connection, start `shenyu-admin` correctly, start `Dubbo` plugin, and add related dependencies on the gateway and `Dubbo` application client. Refer to the previous [Quick start with Dubbo](../../quick-start/quick-start-dubbo) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md) .
+
+## Add dubbo plugin in gateway
+
+Add these dependencies in gateway's `pom.xml`.
+
+Alibaba dubbo user, configure the dubbo version and registry center with yours.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-alibaba-dubbo
+ ${project.version}
+
+
+
+ com.alibaba
+ dubbo
+ 2.6.5
+
+
+ org.apache.curator
+ curator-client
+ 4.0.1
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.1
+
+
+ org.apache.curator
+ curator-recipes
+ 4.0.1
+
+```
+
+Apache dubbo user, configure the dubbo version and registry center with yours.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-apache-dubbo
+ ${project.version}
+
+
+
+
+ org.apache.dubbo
+ dubbo
+ 2.7.5
+
+
+
+ org.apache.dubbo
+ dubbo-registry-nacos
+ 2.7.5
+
+
+ com.alibaba.nacos
+ nacos-client
+ 1.1.4
+
+
+
+
+
+ org.apache.curator
+ curator-client
+ 4.0.1
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.1
+
+
+ org.apache.curator
+ curator-recipes
+ 4.0.1
+
+
+```
+
+* restart gateway service.
+
+## Dubbo service access gateway
+
+Dubbo integration with gateway, please refer to : [shenyu-examples-dubbo](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo) .
+
+* Alibaba Dubbo User
+ * SpringBoot
+
+ Add these dependencies:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-alibaba-dubbo
+ ${shenyu.version}
+
+ ```
+
+ * Spring
+
+ Add these dependencies:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-client-alibaba-dubbo
+ ${shenyu.version}
+
+ ```
+
+ Inject these properties into your Spring beans XML file:
+
+ ```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ```
+
+* Apache Dubbo User
+
+ * SpringBoot
+
+ Add these dependencies:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-apache-dubbo
+ ${shenyu.version}
+
+ ```
+
+ Add these in your client project's application.yml:
+
+ ```yml
+ dubbo:
+ registry:
+ address: dubbo register address
+ port: dubbo service port
+
+ shenyu:
+ register:
+ registerType: shenyu service register type #http #zookeeper #etcd #nacos #consul
+ serverLists: shenyu service register address #http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ client:
+ dubbo:
+ props:
+ contextPath: /your contextPath
+ appName: your app name
+ ```
+
+ * Spring
+
+ Add these dependencies:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-client-apache-dubbo
+ ${shenyu.version}
+
+ ```
+
+ Injecct these properties into your Spring beans XML file:
+
+ ```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ```
+
+ Add these in your client project's application.yml:
+
+ ```yml
+ dubbo:
+ registry:
+ address: dubbo register address
+ port: dubbo service port
+ ```
+
+## Dubbo configuration
+
+* Enable `dubbo` option in `shenyu-admin`.
+* Configure your registry address in `dubbo`.
+
+```yaml
+{"register":"zookeeper://localhost:2181"} or {"register":"nacos://localhost:8848"}
+```
+
+### Configure the interface with gateway
+
+* you can add the annotation `@ShenyuDubboClient` to your dubbo service implementation class, so that the interface method will be configured with gateway.
+
+* Start your provider. After successful startup, go to PluginList -> rpc Proxy -> dubbo in the backend management system. You will see auto-registered selectors and rules information.
+
+### Dubbo user request and parameter explanation.
+
+* Communicate with dubbo service through Http transport protocol.
+* Apache ShenYu gateway need a route prefix which configured when accessing the project.
+
+```yaml
+# for example: you have an order service and it has a interface, registry address: /order/test/save
+
+# now we can communicate with gateway through POST request http://localhost:9195/order/test/save
+
+# localhost:9195 is gateway's ip port,default port is 9195 ,/order is the contextPath you set through gateway.
+```
+
+* parameter deliver:
+ * communicate with gateway through body or json of http post request.
+ * more parameter types, please refer to the interface definition in [shenyu-examples-dubbo](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo) and parameter passing
+ method.
+* Single java bean parameter type (`default`).
+* Multi-parameter type support, add this config value in gateway's yaml file:
+
+```yaml
+shenyu:
+ dubbo:
+ parameter: multi
+```
+
+* Support for customized multi-parameter type
+* Create a new implementation class `MyDubboParamResolveService` in your gateway project of `org.apache.shenyu.web.dubbo.DubboParamResolveService`.
+
+```java
+public interface DubboParamResolveService {
+
+ /**
+ * Build parameter pair.
+ * this is Resolve http body to get dubbo param.
+ *
+ * @param body the body
+ * @param parameterTypes the parameter types
+ * @return the pair
+ */
+ Pair buildParameter(String body, String parameterTypes);
+}
+```
+
+* `body` is the json string in http request.
+* `parameterTypes`: the list of method parameter types that are matched,split with `,`.
+* in Pair,left is parmeter type,right is parameter value, it's the standard of dubbo generalization calls.
+* Inject your class into Spring bean, cover the default implementation.
+
+```java
+@Bean
+public DubboParamResolveService myDubboParamResolveService() {
+ return new MyDubboParamResolveService();
+}
+```
+
+## Service governance
+
+* Tag route
+ * Add `Dubbo_Tag_Route` when send request, the current request will be routed to the provider of the specified tag, which is only valid for the current request.
+* Explicit Target
+ * Set the `url` property in the annotation `@ShenyuDubboClient`.
+ * Update the configuration in Admin.
+ * It's valid for all request.
+* Param valid and ShenyuException
+ * Set `validation="shenyuValidation"`.
+ * When `ShenyuException` is thrown in the interface, exception information will be returned. It should be noted that `ShenyuException` is thrown explicitly.
+
+ ```java
+ @Service(validation = "shenyuValidation")
+ public class TestServiceImpl implements TestService {
+
+ @Override
+ @ShenyuDubboClient(path = "/test", desc = "test method")
+ public String test(@Valid HelloServiceRequest name) throws ShenyuException {
+ if (true){
+ throw new ShenyuException("Param binding error.");
+ }
+ return "Hello " + name.getName();
+ }
+ }
+ ```
+
+ * Request param
+
+ ```java
+ public class HelloServiceRequest implements Serializable {
+
+ private static final long serialVersionUID = -5968745817846710197L;
+
+ @NotEmpty(message = "name cannot be empty")
+ private String name;
+
+ @NotNull(message = "age cannot be null")
+ private Integer age;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+ }
+ ```
+
+ * Send request
+
+ ```json
+ {
+ "name": ""
+ }
+ ```
+
+ * Response
+
+ ```json
+ {
+ "code": 500,
+ "message": "Internal Server Error",
+ "data": "name cannot be empty,age cannot be null"
+ }
+ ```
+
+ * Error message
+
+ ```json
+ {
+ "code": 500,
+ "message": "Internal Server Error",
+ "data": "Param binding error."
+ }
+ ```
+
+
+## Http --> Gateway --> Dubbo Provider
+
+It basically switches from HTTP request to Dubbo protocol, then invoke Dubbo service and return to the result.
+Two things need to notice after intgeration with gateway, one is the added annoation `@ShenyuDubboClient`, another is a path used to speicify the request path.
+And you added a config value of `contextPath`.
+
+If you have a function like this, the config value in contextPath is `/dubbo`
+
+```java
+ @Override
+ @ShenyuDubboClient(path = "/insert", desc = "insert data")
+ public DubboTest insert(final DubboTest dubboTest) {
+ return dubboTest;
+ }
+```
+
+So our request path is: http://localhost:9195/dubbo/insert, localhost:9195 is the gateway's domain name,if you changed before,so does with yours here..
+
+`DubboTest` is a java bean object,has 2 parameters, id and name, so we can transfer the value's json type through request body.
+
+```
+{"id":"1234","name":"XIAO5y"}
+```
+
+If your interface has no parameter, then the value is:
+
+```
+{}
+```
+
+If the interface has multiple parameters, refer to the multi-parameter type support described above.
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/grpc-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/grpc-proxy.md
new file mode 100644
index 00000000000..6a05c604c18
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/grpc-proxy.md
@@ -0,0 +1,197 @@
+---
+title: gRPC Proxy
+keywords: ["gRPC"]
+description: gRPC access shenyu gateway
+---
+
+This document is intended to help the `gRPC` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `gRPC` plugin to handle `gRPC` service.
+
+Before the connection, start `shenyu-admin` correctly, start `gRPC` plugin, and add related dependencies on the gateway and `gRPC` application client. Refer to the previous [Quick start with gRPC](../quick-start/quick-start-grpc) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md) .
+
+## Add gRPC plugin in gateway
+
+Add the following dependencies in the gateway's `pom.xml` file:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-grpc
+ ${project.version}
+
+
+```
+
+* Restart the gateway service.
+
+## gRPC service access gateway
+
+You can refer to:[shenyu-examples-grpc](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-grpc) .
+
+1. In the microservice built by `gRPC`, add the following dependencies:
+
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-grpc
+ ${shenyu.version}
+
+
+ guava
+ com.google.guava
+
+
+
+```
+
+Execute command to generate java code in `shenyu-examples-grpc` project.
+
+```shell
+mvn protobuf:compile
+mvn protobuf:compile-custom
+```
+
+2. Add the following configuration to application.yaml:
+
+```yaml
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ grpc:
+ props:
+ contextPath: /grpc
+ appName: grpc
+ ipAndPort: 127.0.0.1:38080
+ port: 38080
+```
+
+3. Add `@ShenyuGrpcClient` Annotation on the `gRPC` service interface implementation class. Start your service provider, after successful registration, in the background management system go to PluginList -> rpc proxy -> gRPC, you will see automatic registration of selectors and rules information.
+
+Example:
+
+```java
+ @Override
+ @ShenyuGrpcClient(path = "/echo", desc = "echo")
+ public void echo(EchoRequest request, StreamObserver responseObserver) {
+ System.out.println("Received: " + request.getMessage());
+ EchoResponse.Builder response = EchoResponse.newBuilder()
+ .setMessage("ReceivedHELLO")
+ .addTraces(Trace.newBuilder().setHost(getHostname()).build());
+ responseObserver.onNext(response.build());
+ responseObserver.onCompleted();
+ }
+
+```
+
+## User Request
+
+You can request your gRPC service by Http. The `Apache ShenYu` gateway needs to have a route prefix that you access to configure `contextPath`.
+
+
+
+If your `proto` file is defined as follows:
+
+
+```protobuf
+message EchoRequest {
+ string message = 1;
+}
+```
+
+So the request parameters look like this:
+
+```json
+{
+ "data": [
+ {
+ "message": "hello grpc"
+ }
+ ]
+}
+```
+
+The parameters are currently passed in `json` format, and the name of `key` defaults to `data`, which you can reset in `GrpcConstants.JSON_DESCRIPTOR_PROTO_FIELD_NAME`; The `value` is passed in according to the `proto` file you define.
+
+
+the Apache ShenYu can support streaming calls to `gRPC` service, passing multiple arguments in the form of an array.
+
+If your `proto` file is defined as follows:
+
+```protobuf
+message RequestData {
+ string text = 1;
+}
+```
+
+The corresponding method call request parameters are as follows:
+
+- `UNARY`
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+- `CLIENT_STREAMING`
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+- `SERVER_STREAMING`
+
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
+
+- `BIDI_STREAMING`
+
+```json
+{
+ "data": [
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ },
+ {
+ "text": "hello grpc"
+ }
+ ]
+}
+```
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/http-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/http-proxy.md
new file mode 100644
index 00000000000..9dc9783e685
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/http-proxy.md
@@ -0,0 +1,262 @@
+---
+title: Http Proxy
+keywords: ["Http"]
+description: Integrate Http with shenyu gateway
+---
+
+
+This document is intended to help the `Http` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `Divide` plugin to handle `Http` requests.
+
+Before the connection, start `shenyu-admin` correctly, start `Divide` plugin, and add related dependencies on the gateway and `Http` application client. Refer to the previous [Quick start with Http](../../quick-start/quick-start-http) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md) .
+
+## Add divide plugin in gateway
+
+* Add the following dependencies to the gateway's `pom.xml` file:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-divide
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-httpclient
+ ${project.version}
+
+ ```
+
+## Http request access gateway (for springMvc)
+
+* SpringBoot
+
+ Please refer this:[shenyu-examples-http](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-http)
+
+ 1. Add the following dependencies to the `pom.xml` file in your `Http` service:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-springmvc
+ ${shenyu.version}
+
+ ```
+
+ 2. Add the following configuration to application.yaml:
+
+ ```yaml
+ shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ http:
+ props:
+ contextPath: /http
+ appName: http
+ # port: 8189
+ ```
+
+* SpringMvc
+
+ Please refer this:[shenyu-examples-springmvc](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-springmvc)
+
+ Add the following dependencies to the `pom.xml` file in your `Http` service:
+
+ ```xml
+
+ org.apache.shenyu
+ shenyu-client-springmvc
+ ${shenyu.version}
+
+ ```
+
+ Add the following to the `XML` file defined by your `bean` :
+
+ ```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ```
+
+ Add this annotation `@ShenyuSpringMvcClient` in your `controller` interface.
+
+ You can apply the annotation to class-level in a controller. The name of the `path` variable is prefix and `/**` will apply proxy for entire interfaces.
+
+
+Example(1)
+
+The following indicates that `/test/payment`, `/test/findByUserId` will be proxy by the gateway.
+
+```java
+ @RestController
+ @RequestMapping("/test")
+ @ShenyuSpringMvcClient(path = "/test/**")
+ public class HttpTestController {
+
+ @PostMapping("/payment")
+ public UserDTO post(@RequestBody final UserDTO userDTO) {
+ return userDTO;
+ }
+
+ @GetMapping("/findByUserId")
+ public UserDTO findByUserId(@RequestParam("userId") final String userId) {
+ UserDTO userDTO = new UserDTO();
+ userDTO.setUserId(userId);
+ userDTO.setUserName("hello world");
+ return userDTO;
+ }
+ }
+```
+
+
+
+Example(2)
+
+
+The following indicates that `/order/save` is proxied by the gateway, while `/order/findById` is not.
+
+
+```java
+ @RestController
+ @RequestMapping("/order")
+ @ShenyuSpringMvcClient(path = "/order")
+ public class OrderController {
+
+ @PostMapping("/save")
+ @ShenyuSpringMvcClient(path = "/save")
+ public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
+ orderDTO.setName("hello world save order");
+ return orderDTO;
+ }
+
+ @GetMapping("/findById")
+ public OrderDTO findById(@RequestParam("id") final String id) {
+ OrderDTO orderDTO = new OrderDTO();
+ orderDTO.setId(id);
+ orderDTO.setName("hello world findById");
+ return orderDTO;
+ }
+ }
+```
+
+example (3):This is a simplified way to use it, just need a simple annotation to register to the gateway using metadata.
+Special note: currently only supports `@RequestMapping, @GetMapping, @PostMapping, @DeleteMapping, @PutMapping` annotations, and only valid for the first path in `@XXXMapping`
+
+```java
+ @RestController
+ @RequestMapping("new/feature")
+ public class NewFeatureController {
+
+ /**
+ * no support gateway access api.
+ *
+ * @return result
+ */
+ @RequestMapping("/gateway/not")
+ public EntityResult noSupportGateway() {
+ return new EntityResult(200, "no support gateway access");
+ }
+
+ /**
+ * Do not use shenyu annotation path. used request mapping path.
+ *
+ * @return result
+ */
+ @RequestMapping("/requst/mapping/path")
+ @ShenyuSpringCloudClient
+ public EntityResult requestMappingUrl() {
+ return new EntityResult(200, "Do not use shenyu annotation path. used request mapping path");
+ }
+
+ /**
+ * Do not use shenyu annotation path. used post mapping path.
+ *
+ * @return result
+ */
+ @PostMapping("/post/mapping/path")
+ @ShenyuSpringCloudClient
+ public EntityResult postMappingUrl() {
+ return new EntityResult(200, "Do not use shenyu annotation path. used post mapping path");
+ }
+
+ /**
+ * Do not use shenyu annotation path. used post mapping path.
+ *
+ * @return result
+ */
+ @GetMapping("/get/mapping/path")
+ @ShenyuSpringCloudClient
+ public EntityResult getMappingUrl() {
+ return new EntityResult(200, "Do not use shenyu annotation path. used get mapping path");
+ }
+ }
+
+```
+
+* Start your project, your service interface is connected to the gateway, go to the `shenyu-admin` management system plugin list `->` HTTP process `->` Divide, see automatically created selectors and rules.
+
+
+## Http request access gateway(other framework)
+
+* First, find `divide` plugin in `shenyu-admin`, add selector, and rules, and filter traffic matching.
+* If you don't know how to configure, please refer to [Selector Detailed Explanation](../admin-usage/selector-and-rule).
+* You can also develop your customized http-client,refer to [multi-language Http client development](../../developer/developer-shenyu-client)。
+
+## User request
+
+* Send the request as before, only two points need to notice.
+* Firstly, the domain name that requested before in your service, now need to replace with gateway's domain name.
+* Secondly, `Apache ShenYu` Gateway needs a route prefix which comes from `contextPath`, it configured during the integration with gateway, you can change it freely in `divide` plugin of `shenyu-admin`, if you are familiar with it.
+ * for example, if you have an `order` service, and it has an interface, the request url: `http://localhost:8080/test/save`
+
+ * Now need to change to: `http://localhost:9195/order/test/save`
+
+ * We can see `localhost:9195` is your gateway's `ip` port,default port number is `9195` ,`/order` is your `contextPath` which you configured with gateway.
+
+ * Other parameters doesn't change in request method.
+
+
+* Then you can visit, very easy and simple.
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/motan-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/motan-proxy.md
new file mode 100644
index 00000000000..d1bf0cadd54
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/motan-proxy.md
@@ -0,0 +1,107 @@
+---
+title: Motan Proxy
+description: Motan Proxy
+---
+
+This document is intended to help the `Motan` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `Motan` plugin to handle `motan` service.
+
+Before the connection, start `shenyu-admin` correctly, start `Motan` plugin, and add related dependencies on the gateway and `Motan` application client. Refer to the previous [Quick start with Motan](../quick-start/quick-start-motan) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md) .
+
+## Add motan plugin in gateway
+
+Add the following dependencies to the gateway's `pom.xml` file:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-motan
+ ${project.version}
+
+
+ com.weibo
+ motan-core
+ 1.1.9
+
+
+ com.weibo
+ motan-registry-zookeeper
+ 1.1.9
+
+
+ com.weibo
+ motan-transport-netty4
+ 1.1.9
+
+
+ com.weibo
+ motan-springsupport
+ 1.1.9
+
+```
+
+* Restart your gateway service.
+
+## Motan service access gateway
+
+Please refer to: [shenyu-examples-motan](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-motan)
+
+1. In the microservice built by `Motan`, add the following dependencies:
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-motan
+ ${shenyu.version}
+
+```
+
+2. Add the following configuration to the `application.yaml` configuration file:
+
+```yaml
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ motan:
+ props:
+ contextPath: /motan
+ ipAndPort: motan
+ appName: motan
+ port: 8081
+ package-path: org.apache.shenyu.examples.motan.service
+ basicServiceConfig:
+ exportPort: 8002
+motan:
+ registry:
+ protocol: zookeeper
+ address: 127.0.0.1:2181
+```
+
+
+3. Add `@ShenyuMotanClient` annotation to the method of `Motan` service interface implementation class, start your service provider, after successful registration, go to PluginList -> rpc proxy -> motan in the background management system, you will see automatic registration of selectors and rules information.
+
+Example:
+
+```java
+@MotanService(export = "demoMotan:8002")
+public class MotanDemoServiceImpl implements MotanDemoService {
+ @Override
+ @ShenyuMotanClient(path = "/hello")
+ public String hello(String name) {
+ return "hello " + name;
+ }
+}
+```
+
+## User Request
+
+You can request your `motan` service by Http. The `Apache ShenYu` gateway needs to have a route prefix which is the `contextPath` configured by the access gateway. For example: `http://localhost:9195/motan/hello` .
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/sofa-rpc-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/sofa-rpc-proxy.md
new file mode 100644
index 00000000000..e9494c921c9
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/sofa-rpc-proxy.md
@@ -0,0 +1,187 @@
+---
+title: Sofa Proxy
+keywords: ["Sofa"]
+description: sofa access shenyu gateway
+---
+
+This document is intended to help the `Sofa` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `Sofa` plugin to handle `sofa` service.
+
+Before the connection, start `shenyu-admin` correctly, start `Sofa` plugin, and add related dependencies on the gateway and `Sofa` application client. Refer to the previous [Quick start with Sofa](../quick-start/quick-start-sofa) .
+
+For the use of the plugin, see:[Sofa Plugin](../../plugin-center/proxy/sofa-plugin.md)
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md) .
+
+## Add sofa plugin in gateway
+
+> In the current version, this dependency has been introduced by default.
+
+1. Add the following dependencies in the gateway's `pom.xml` file:
+
+ ```xml
+
+ com.alipay.sofa
+ sofa-rpc-all
+ 5.7.6
+
+
+ net.jcip
+ jcip-annotations
+
+
+
+
+ org.apache.curator
+ curator-client
+ 4.0.1
+
+
+ org.apache.curator
+ curator-framework
+ 4.0.1
+
+
+ org.apache.curator
+ curator-recipes
+ 4.0.1
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-sofa
+ ${project.version}
+
+ ```
+
+2. Restart the gateway service.
+
+## Sofa service access gateway
+
+Please refer to:[shenyu-examples-sofa](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sofa)
+
+1. Based on the `springboot` project,Introduce the following dependencies:
+
+ ```xml
+
+ com.alipay.sofa
+ rpc-sofa-boot-starter
+ ${rpc-sofa-boot-starter.version}
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-sofa
+ ${shenyu.version}
+
+ ```
+
+2. Configure in application.yml
+
+```yaml
+com:
+ alipay:
+ sofa:
+ rpc:
+ registry-address: zookeeper://127.0.0.1:2181 # consul # nacos
+ bolt-port: 8888
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ sofa:
+ props:
+ contextPath: /sofa
+ ipAndPort: sofa
+ appName: sofa
+ port: 8888
+```
+
+3. Configure the service interface exposed by the sofa service in the xml file in the resources.
+
+```xml
+
+
+
+
+
+
+
+
+```
+
+4. Add the `@ShenyuSofaClient` annotation to the interface
+
+```java
+@ShenyuSofaClient("/demo")
+@Service
+public class SofaClientMultiParamServiceImpl implements SofaClientMultiParamService {
+
+ @Override
+ @ShenyuSofaClient("/findByIdsAndName")
+ public SofaSimpleTypeBean findByIdsAndName(final List ids, final String name) {
+ return new SofaSimpleTypeBean(ids.toString(), "hello world shenyu sofa param findByIdsAndName :" + name);
+ }
+}
+```
+
+5. Start the `sofa` service, and after successful registration:
+- Go to `PluginList -> Proxy -> Sofa` in the backend management system, you will see the information of auto-registered selectors and rules.
+- Go to `BasicConfig -> Metadata` and search by app name . You will see the metadata of sofa, each `sofa` interface method, will correspond to a metadata.
+
+## User request and parameter description
+
+- The gateway can be requested by means of `http` to request your `sofa` service.
+ - ShenYu gateway needs to have a routing prefix, this routing prefix is for you to access the project for configuration `contextPath` .
+
+> For example, if you have an `order` service, it has an interface and its registration path `/order/test/save`
+>
+> Now it's to request the gateway via post:`http://localhost:9195/order/test/save`
+>
+> Where `localhost:9195` is the IP port of the gateway, default port is `9195`, `/order` is the `contextPath` of your sofa access gateway configuration.
+
+
+* Parameter passing:
+ - Access the gateway through http post,and pass through body and json.
+ - For more parameter type transfer, please refer to the interface definition in [shenyu-examples-sofa](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sofa) and the parameter transfer method.
+
+* Single java bean parameter type (default)
+* Customize multi-parameter support:
+* In the gateway project you built, add a new class `MySofaParamResolveService`, implements `org.apache.shenyu.plugin.api.sofa.SofaParamResolveService` .
+
+ ```java
+ public interface SofaParamResolveService {
+
+ /**
+ * Build parameter pair.
+ * this is Resolve http body to get sofa param.
+ *
+ * @param body the body
+ * @param parameterTypes the parameter types
+ * @return the pair
+ */
+ Pair buildParameter(String body, String parameterTypes);
+ }
+ ```
+
+* `body` is the json string passed by body in http.
+* `parameterTypes`: list of matched method parameter types, If there are multiple, use `,` to separate.
+* In Pair,left is the parameter type,and right is the parameter value. This is the standard for sofa generalization calls.
+* Register your class as a String bean and override the default implementation.
+
+ ```java
+ @Bean
+ public SofaParamResolveService mySofaParamResolveService() {
+ return new MySofaParamResolveService();
+ }
+ ```
+
+
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/spring-cloud-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/spring-cloud-proxy.md
new file mode 100644
index 00000000000..62e5bf93871
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/spring-cloud-proxy.md
@@ -0,0 +1,300 @@
+---
+title: Spring Cloud Proxy
+keywords: ["Spring Cloud"]
+description: springCloud with shenyu gateway
+---
+
+This document is intended to help the `Spring Cloud` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `springCloud` plugin to handle `Spring Cloud` service.
+
+Before the connection, start `shenyu-admin` correctly, start `springCloud` plugin, and add related dependencies on the gateway and `springCloud` application client. Refer to the previous [Quick start with Spring Cloud](../quick-start/quick-start-springcloud) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md) .
+
+
+## Add springcloud plugin in gateway
+
+* add these dependencies in gateway's pom.xml:
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-springcloud
+ ${project.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-httpclient
+ ${project.version}
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+ 2.2.0.RELEASE
+
+```
+
+* If you use `eureka` as SpringCloud registry center.
+
+ add these dependencies:
+
+ ```xml
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+ 2.2.0.RELEASE
+
+ ```
+
+add these config values in gateway's yaml file:
+
+ ```yaml
+ eureka:
+ client:
+ serviceUrl:
+ defaultZone: http://localhost:8761/eureka/ #your eureka address
+ instance:
+ prefer-ip-address: true
+ ```
+
+* if you use `nacos` as Spring Cloud registry center.
+
+ add these dependencies:
+
+ ```xml
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+ 2.1.0.RELEASE
+
+ ```
+
+add these config values in gateway's yaml file:
+
+ ```yaml
+ spring:
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 127.0.0.1:8848 # your nacos address
+ ```
+
+Special note: Please ensure that the spring Cloud registry service discovery configuration is enabled
+
+* Configuration method
+
+```yml
+spring:
+ cloud:
+ discovery:
+ enabled: true
+```
+
+* code method
+
+```java
+@SpringBootApplication
+@EnableDiscoveryClient
+public class ShenyuBootstrapApplication {
+
+ /**
+ * Main Entrance.
+ *
+ * @param args startup arguments
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuBootstrapApplication.class, args);
+ }
+}
+```
+
+* restart your gateway service.
+
+## SpringCloud service access gateway
+
+Please refer to [shenyu-examples-springcloud](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-springcloud)
+
+* Add the following dependencies to your `Spring Cloud` microservice :
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-springcloud
+ ${shenyu.version}
+
+```
+
+* Add the annotation `@ShenyuSpringCloudClient` in your `controller` interface. you can apply the annotation to class-level in a controller.the name of the path variable is prefix and '/**' will apply proxy for entire interfaces.
+
+* example (1):both `/test/payment` and `/test/findByUserId` will be handled by gateway.
+
+ ```java
+ @RestController
+ @RequestMapping("/test")
+ @ShenyuSpringCloudClient(path = "/test/**")
+ public class HttpTestController {
+
+ @PostMapping("/payment")
+ public UserDTO post(@RequestBody final UserDTO userDTO) {
+ return userDTO;
+ }
+
+ @GetMapping("/findByUserId")
+ public UserDTO findByUserId(@RequestParam("userId") final String userId) {
+ UserDTO userDTO = new UserDTO();
+ userDTO.setUserId(userId);
+ userDTO.setUserName("hello world");
+ return userDTO;
+ }
+ }
+```
+
+example (2):`/order/save` will be handled by gateway, and `/order/findById` won't.
+
+ ```java
+ @RestController
+ @RequestMapping("/order")
+ @ShenyuSpringCloudClient(path = "/order")
+ public class OrderController {
+
+ @PostMapping("/save")
+ @ShenyuSpringMvcClient(path = "/save")
+ public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
+ orderDTO.setName("hello world save order");
+ return orderDTO;
+ }
+
+ @GetMapping("/findById")
+ public OrderDTO findById(@RequestParam("id") final String id) {
+ OrderDTO orderDTO = new OrderDTO();
+ orderDTO.setId(id);
+ orderDTO.setName("hello world findById");
+ return orderDTO;
+ }
+ }
+```
+
+example (3): `isFull`:`true` represents that all service will be represented by the gateway.
+
+```yaml
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ springCloud:
+ props:
+ contextPath: /springcloud
+ isFull: true
+# port: 8884
+# registerType : service registre type, see the application client access document
+# serverList: server list, see the application client access document
+# contextPath: route prefix for your project in ShenYu gateway.
+# isFull: set true to proxy your all service and false to proxy some of your controllers
+```
+
+ ```java
+ @RestController
+ @RequestMapping("/order")
+ public class OrderController {
+
+ @PostMapping("/save")
+ @ShenyuSpringMvcClient(path = "/save")
+ public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
+ orderDTO.setName("hello world save order");
+ return orderDTO;
+ }
+
+ @GetMapping("/findById")
+ public OrderDTO findById(@RequestParam("id") final String id) {
+ OrderDTO orderDTO = new OrderDTO();
+ orderDTO.setId(id);
+ orderDTO.setName("hello world findById");
+ return orderDTO;
+ }
+ }
+```
+
+example (4):This is a simplified way to use it, just need a simple annotation to register to the gateway using metadata.
+Special note: currently only supports `@RequestMapping, @GetMapping, @PostMapping, @DeleteMapping, @PutMapping` annotations, and only valid for the first path in `@XXXMapping`.
+
+```java
+ @RestController
+ @RequestMapping("new/feature")
+ public class NewFeatureController {
+
+ /**
+ * no support gateway access api.
+ *
+ * @return result
+ */
+ @RequestMapping("/gateway/not")
+ public EntityResult noSupportGateway() {
+ return new EntityResult(200, "no support gateway access");
+ }
+
+ /**
+ * Do not use shenyu annotation path. used request mapping path.
+ *
+ * @return result
+ */
+ @RequestMapping("/requst/mapping/path")
+ @ShenyuSpringCloudClient
+ public EntityResult requestMappingUrl() {
+ return new EntityResult(200, "Do not use shenyu annotation path. used request mapping path");
+ }
+
+ /**
+ * Do not use shenyu annotation path. used post mapping path.
+ *
+ * @return result
+ */
+ @PostMapping("/post/mapping/path")
+ @ShenyuSpringCloudClient
+ public EntityResult postMappingUrl() {
+ return new EntityResult(200, "Do not use shenyu annotation path. used post mapping path");
+ }
+
+ /**
+ * Do not use shenyu annotation path. used post mapping path.
+ *
+ * @return result
+ */
+ @GetMapping("/get/mapping/path")
+ @ShenyuSpringCloudClient
+ public EntityResult getMappingUrl() {
+ return new EntityResult(200, "Do not use shenyu annotation path. used get mapping path");
+ }
+ }
+
+```
+
+* After successfully registering your service, go to the backend management system PluginList -> rpc proxy -> springCloud ', you will see the automatic registration of selectors and rules information.
+
+
+
+## User Request
+
+* Send the request as before, only two points need to notice.
+
+* firstly,the domain name that requested before in your service, now need to replace with gateway's domain name.
+
+* secondly, Apache ShenYu gateway needs a route prefix which comes from `contextPath`, it configured during the integration with gateway, you can change it freely in divide plugin of `shenyu-admin`, if your familiar with it.
+
+> For example, your have an `order` service and it has a interface, the request url: `http://localhost:8080/test/save` .
+>
+> Now need to change to:`http://localhost:9195/order/test/save` .
+>
+> We can see `localhost:9195` is the gateway's ip port, default port number is `9195` , `/order` is the `contextPath` in your config yaml file.
+>
+> The request of other parameters doesn't change. Then you can visit, very easy and simple.
+
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/tars-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/tars-proxy.md
new file mode 100644
index 00000000000..8f1fec4853b
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/tars-proxy.md
@@ -0,0 +1,98 @@
+---
+title: Tars Proxy
+description: Tars Proxy
+---
+
+This document is intended to help the `Tars` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `tars` plugin to handle `tars` service.
+
+Before the connection, start `shenyu-admin` correctly, start `tars` plugin, and add related dependencies on the gateway and `tars` application client. Refer to the previous [Quick start with Tars](../quick-start/quick-start-tars) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md)).
+
+
+## Add tars plugin in gateway
+
+
+Add the following dependencies to the gateway's `pom.xml` file:
+
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-tars
+ ${project.version}
+
+
+
+ com.tencent.tars
+ tars-client
+ 1.7.2
+
+
+```
+
+* Restart your gateway service.
+
+## Tars service access gateway
+
+Please refer to: [shenyu-examples-tars](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-tars)
+
+1. In the microservice built by `Tars`, add the following dependencies:
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-tars
+ ${shenyu.version}
+
+```
+
+2. Add the following configuration to the `application.yaml` configuration file:
+
+```yaml
+shenyu:
+ register:
+ registerType: http #zookeeper #etcd #nacos #consul
+ serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848
+ props:
+ username: admin
+ password: 123456
+ client:
+ tars:
+ props:
+ contextPath: /tars
+ appName: tars
+ port: 21715
+ host: 192.168.41.103
+```
+
+3. Add `@ShenyuTarsService` Annotation on the tars service interface implementation class and `@ShenyuTarsClient` on the method, start your service provider, and register successfully. In the background management system, enter PluginList -> rpc proxy -> tars, you will see the automatic registration of selectors and rules information.
+
+Example:
+
+```java
+ @TarsServant("HelloObj")
+ @ShenyuTarsService(serviceName = "ShenyuExampleServer.ShenyuExampleApp.HelloObj")
+ public class HelloServantImpl implements HelloServant {
+ @Override
+ @ShenyuTarsClient(path = "/hello", desc = "hello")
+ public String hello(int no, String name) {
+ return String.format("hello no=%s, name=%s, time=%s", no, name, System.currentTimeMillis());
+ }
+
+ @Override
+ @ShenyuTarsClient(path = "/helloInt", desc = "helloInt")
+ public int helloInt(int no, String name) {
+ return 1;
+ }
+ }
+
+```
+
+## User Request
+
+You can request your tars service by Http. The `Apache ShenYu` gateway needs to have a route prefix which is the `contextPath` configured by the access gateway. For example: `http://localhost:9195/tars/hello` .
+
diff --git a/versioned_docs/version-2.6.1/user-guide/proxy/websocket-proxy.md b/versioned_docs/version-2.6.1/user-guide/proxy/websocket-proxy.md
new file mode 100644
index 00000000000..b91592c755a
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/proxy/websocket-proxy.md
@@ -0,0 +1,89 @@
+---
+title: Websocket Proxy
+description: Websocket Proxy
+---
+
+This document is intended to help the `Websocket` service access the `Apache ShenYu` gateway. The `Apache ShenYu` gateway uses the `Websocket` plugin to handle `Websocket` service.
+
+Before the connection, start `shenyu-admin` correctly, start `Websocket` plugin, and add related dependencies on the gateway and `Websocket` application client. Refer to the previous [Quick start with Websocket](../quick-start/quick-start-websocket) .
+
+For details about client access configuration, see [Application Client Access Config](../property-config/register-center-access.md) .
+
+For details about data synchronization configurations, see [Data Synchronization Config](../property-config/use-data-sync.md)).
+
+## Add Websocket plugin in gateway
+
+Add the following dependencies to the gateway's `pom.xml` file , which is introduced by default:
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-plugin-websocket
+ ${project.version}
+
+```
+
+* Restart your gateway service.
+
+## Websocket service access gateway
+
+> Please refer to: [shenyu-examples-websocket](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-websocket), Contains examples of the three implementations of `annotation websocket`、`spring native websocket`、`spring reactive websocket`
+
+1. In the `Websocket` service, add the following dependencies:
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-client-websocket
+ ${shenyu.version}
+
+```
+
+2. Add the following configuration to the `application.yaml` configuration file:
+
+```yaml
+shenyu:
+ register:
+ registerType: http
+ serverLists: http://localhost:9095 # shenyu-admin ip and port
+ props:
+ username: admin
+ password: 123456
+ client:
+ websocket:
+ props:
+ contextPath: /ws-annotation
+ appName: ws-annotation
+ port: 8001 # need to be consistent with the service port
+```
+
+3. Add `@ShenyuSpringWebSocketClient` annotation to the `Websocket` service interface implementation class, start your service and after successful registration, go to `Client List -> Proxy -> Websocket` in the `shenyu-admin` management system and you will see the auto-registered selector and rule information.
+
+示例:
+
+```java
+@ShenyuSpringWebSocketClient("/myWs")
+@ServerEndpoint("/myWs")
+public class WsServerEndpoint {
+ @OnOpen
+ public void onOpen(final Session session) {
+ LOG.info("connect successful");
+ }
+
+ @OnClose
+ public void onClose(final Session session) {
+ LOG.info("connect closed");
+ }
+
+ @OnMessage
+ public String onMsg(final String text) {
+ return "server send message:" + text;
+ }
+}
+```
+
+## User Request
+
+You need to request your `Websocket` service via the `ws` protocol. The `Apache ShenYu` gateway will configure a routing prefix which is the `contextPath` in the access gateway configuration file. For example: `ws://localhost:9195/ws-annotation/myWs`, after which you can establish a connection to send and receive messages normally.
+
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/_category_.json b/versioned_docs/version-2.6.1/user-guide/sdk-usage/_category_.json
new file mode 100644
index 00000000000..f2539153751
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Shenyu-Sdk Usage",
+ "position": 3
+}
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-consul.md b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-consul.md
new file mode 100644
index 00000000000..f98f156c38d
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-consul.md
@@ -0,0 +1,204 @@
+---
+title: Using Consul with Shenyu-SDK
+keywords: ["Using Shenyu-Sdk", "Consul"]
+description: Using Shenyu-Sdk
+---
+
+## Background explanation
+
+Shenyu offers Shenyu-Sdk to make it easy for services to quickly integrate with the Shenyu gateway. By simply depending on the SDK and doing some simple configuration, client services can call the gateway's exposed APIs as if they were calling local interfaces.
+
+
+
+The registration center supported by the gateway for client access includes (nacos, eureka, etcd, zookeeper, consul), and the following is the relevant guide for using **Zookeeper** registration center when `shenyu-bootstrap` and `application client` are used.
+
+## Environment preparation
+
+Refer to `Deployment` guide, and choose a way to start `shenyu-admin` and `shenyu-bootstrap`.
+
+## shenyu-bootstrap
+
+### Maven dependency
+
+In the gateway's `pom.xml` file, introduce the following dependencies.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-registry
+ ${project.version}
+
+```
+
+### Edit the configuration file
+
+Add the following configuration to the gateway's `yml` configuration file.
+
+```yaml
+shenyu:
+ register:
+ enabled: true
+ registerType: consul
+ serverLists: localhost
+ props:
+ delay: 1
+ wait-time: 55
+ instanceId: shenyu-gateway
+ hostName: localhost
+ tags: test1,test2
+ preferAgentAddress: false
+ enableTagOverride: false
+
+# registerType: service registration type, fill in consul
+# serverLists: consul client agent address (sidecar deployment mode (single machine or cluster), can also be the address of consul server agent (can only connect to one consul server agent node, if it is a cluster, then there will be a single point of failure problem))
+# delay: the polling interval of each metadata monitoring, unit: second, default 1 second
+# wait-time: the waiting time of a single request for metadata monitoring (long polling mechanism), unit: second, default 55 seconds
+# instanceId: required for consul service, consul needs to find specific services through instance-id
+# name: the group name where the service is registered to consul
+# hostName: for consul registration type, fill in the address of the registered service instance, the address of the registered service instance in this registration center will not be used for client calls, so this configuration can be omitted, port, preferAgentAddress similarly
+# port: for consul registration type, fill in the port of the registered service instance
+# tags: corresponding to the tags configuration in consul configuration
+# preferAgentAddress: use the address of the agent on the consul client side as the address of the registered service instance, which will override the manual configuration of hostName
+# enableTagOverride: corresponding to the enableTagOverride configuration in consul configuration for detailed reference, please see the user guide> attribute configuration> client access configuration document
+
+# for detailed reference, please see the `user-guide> Property Config> Register Center Instance Config` configuration document.
+```
+
+## Client Application
+
+### Maven dependency
+
+In the `pom.xml` file of the application client, introduce the following dependencies.
+
+- Shenyu-Sdk Core
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-core
+ 2.5.1-SNAPSHOT
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sdk
+ 2.5.1-SNAPSHOT
+
+
+```
+
+- Shenyu-Sdk http implementation
+
+> HTTP client implementation, offering okhttp and httpclient as implementation options. Other implementations can be created by extending the `AbstractShenyuSdkClient` class.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-httpclient
+ 2.5.1-SNAPSHOT
+
+
+
+
+```
+
+### Edit the configuration file
+
+Add the following configuration in the application client's `yml` configuration file.
+
+```yaml
+shenyu:
+ sdk:
+ enabled: true
+ register-type: consul
+ server-lists: localhost
+ props:
+ checkTtl: 5
+ token: ""
+ waitTime: 30
+ watchDelay: 5
+ tags: ""
+ port: 8500
+ retry:
+ enable: true
+ period: 100
+ maxPeriod: 1000
+ maxAttempts: 5
+ algorithm: roundRobin
+ scheme: http
+
+# registerType: service registration type, fill in consul.
+# serverLists: consul client agent address (sidecar deployment mode (single machine or cluster), can also be the address of consul server agent (can only connect to one consul server agent node, if it is a cluster, then there will be a single point of failure problem)).
+# checkTtl: TTL, Default 5 seconds.
+# token: ""
+# waitTime: The waiting time for a single request for monitoring metadata (long polling mechanism), in seconds, with a default value of 55 seconds.
+# watchDelay: The interval duration for each polling of metadata monitoring, in seconds, with a default value of 1 second.
+# tags: tags for consul configure.
+# port: consul server port.
+# scheme: Request protocol.
+
+# retry Configuration related to failure retries
+# retry.period: Retry waiting time.
+# retry.maxPeriod: Maximum retry waiting time .
+# retry.maxAttempts: Maximum retry count.
+```
+
+## Writing the local interface for the SDK
+
+1. In the project startup class, annotate `@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")`, where `basePackages` maintains the package location of Shenyu-Sdk's corresponding maintained gateway API interface.
+
+2. Create an interface and use the `@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")` annotation to mark it, where `name` represents the gateway service name. If you need to define multiple beans to maintain the gateway's API, you can use `contextId` as the corresponding bean alias.
+
+3. In the defined interface, add the methods of the interface to be mapped to the shenyu gateway, where the `value` of `@xxMapping` corresponds to the path of the corresponding request in the gateway.
+
+**Example**
+
+Project startup class
+
+```java
+import org.apache.shenyu.sdk.spring.EnableShenyuClients;
+
+@SpringBootApplication
+@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")
+public class ShenyuSdkHttpExampleApplication {
+
+ /**
+ * main.
+ *
+ * @param args args
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuSdkHttpExampleApplication.class, args);
+ }
+}
+```
+
+Shenyu-SDK interface
+
+```java
+import org.apache.shenyu.sdk.spring.ShenyuClient;
+
+@ShenyuClient(name = "shenyu-gateway", contextId = "ShenyuSdkApiName")
+public interface ShenyuHttpClientApi {
+
+ /**
+ * findById.
+ * test Get.
+ *
+ * @param id id
+ * @return SdkTestDto
+ */
+ @GetMapping("/http/shenyu/client/findById")
+ SdkTestDto findById(@RequestParam("id") String id);
+}
+```
+
+For more information, refer to the sample project [shenyu-examples-sdk](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sdk)
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-etcd.md b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-etcd.md
new file mode 100644
index 00000000000..0837668ef56
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-etcd.md
@@ -0,0 +1,184 @@
+---
+title: Using Etcd with Shenyu-SDK
+keywords: ["Using Shenyu-Sdk", "Etcd"]
+description: Using Shenyu-Sdk
+---
+
+## Background explanation
+
+Shenyu offers Shenyu-Sdk to make it easy for services to quickly integrate with the Shenyu gateway. By simply depending on the SDK and doing some simple configuration, client services can call the gateway's exposed APIs as if they were calling local interfaces.
+
+
+
+The registration center supported by the gateway for client access includes (nacos, eureka, etcd, zookeeper, consul), and the following is the relevant guide for using **etcd** registration center when `shenyu-bootstrap` and `application client` are used.
+
+## Environment preparation
+
+Refer to `Deployment` guide, and choose a way to start `shenyu-admin` and `shenyu-bootstrap`.
+
+## shenyu-bootstrap
+
+### Maven dependency
+
+In the gateway's `pom.xml` file, introduce the following dependencies.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-registry
+ ${project.version}
+
+```
+
+### Edit the configuration file
+
+Add the following configuration to the gateway's `yml` configuration file.
+
+```yaml
+shenyu:
+ register:
+ enabled: true
+ registerType: etcd
+ serverLists: http://localhost:2379
+ props:
+ appName: http
+ port: xx
+
+# registerType: service registration type, fill in etcd.
+# serverList: Enter the etcd address(es), separated by commas in English.
+# appName:Your application name. If not configured, the default value will be taken from spring.application.name.
+# port: Your project's startup port, currently springmvc/tars/grpc needs to be filled in.
+
+# for detailed reference, please see the `user-guide> Property Config> Register Center Instance Config` configuration document.
+```
+
+## Client Application
+
+### Maven dependency
+
+In the `pom.xml` file of the application client, introduce the following dependencies.
+
+- Shenyu-Sdk Core
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-core
+ 2.5.1-SNAPSHOT
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sdk
+ 2.5.1-SNAPSHOT
+
+
+```
+
+- Shenyu-Sdk http implementation
+
+> HTTP client implementation, offering okhttp and httpclient as implementation options. Other implementations can be created by extending the `AbstractShenyuSdkClient` class.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-httpclient
+ 2.5.1-SNAPSHOT
+
+
+
+
+```
+
+### Edit the configuration file
+
+Add the following configuration in the application client's `yml` configuration file.
+
+```yaml
+shenyu:
+ sdk:
+ enabled: true
+ register-type: etcd
+ server-lists: http://localhost:2379
+ props:
+ etcdTimeout: 3000
+ etcdTTL: 5
+ retry:
+ enable: true
+ period: 100
+ maxPeriod: 1000
+ maxAttempts: 5
+ algorithm: roundRobin
+ scheme: http
+
+# register-type: service registration type, fill in etcd.
+# server-lists: Enter the etcd address(es), separated by commas in English.
+# etcdTimeout: Request timeout time, in milliseconds, default 3000
+# etcdTTL: Lease TTL, default 5 seconds.
+# scheme: Request protocol.
+
+# retry: Configuration related to failure retries.
+# retry.period: Retry waiting time.
+# retry.maxPeriod: Maximum retry waiting time .
+# retry.maxAttempts: Maximum retry count.
+```
+
+## Writing the local interface for the SDK
+
+1. In the project startup class, annotate `@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")`, where `basePackages` maintains the package location of Shenyu-Sdk's corresponding maintained gateway API interface.
+
+2. Create an interface and use the `@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")` annotation to mark it, where `name` represents the gateway service name. If you need to define multiple beans to maintain the gateway's API, you can use `contextId` as the corresponding bean alias.
+
+3. In the defined interface, add the methods of the interface to be mapped to the shenyu gateway, where the `value` of `@xxMapping` corresponds to the path of the corresponding request in the gateway.
+
+**Example**
+
+Project startup class
+
+```java
+import org.apache.shenyu.sdk.spring.EnableShenyuClients;
+
+@SpringBootApplication
+@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")
+public class ShenyuSdkHttpExampleApplication {
+
+ /**
+ * main.
+ *
+ * @param args args
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuSdkHttpExampleApplication.class, args);
+ }
+}
+```
+
+Shenyu-SDK interface
+
+```java
+import org.apache.shenyu.sdk.spring.ShenyuClient;
+
+@ShenyuClient(name = "shenyu-gateway", contextId = "ShenyuSdkApiName")
+public interface ShenyuHttpClientApi {
+
+ /**
+ * findById.
+ * test Get.
+ *
+ * @param id id
+ * @return SdkTestDto
+ */
+ @GetMapping("/http/shenyu/client/findById")
+ SdkTestDto findById(@RequestParam("id") String id);
+}
+```
+
+For more information, refer to the sample project [shenyu-examples-sdk](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sdk)
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-eureka.md b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-eureka.md
new file mode 100644
index 00000000000..dfcd9c39a61
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-eureka.md
@@ -0,0 +1,184 @@
+---
+title: Using Eureka with Shenyu-SDK
+keywords: ["Using Shenyu-Sdk", "Eureka"]
+description: Using Shenyu-Sdk
+---
+
+## Background explanation
+
+Shenyu offers Shenyu-Sdk to make it easy for services to quickly integrate with the Shenyu gateway. By simply depending on the SDK and doing some simple configuration, client services can call the gateway's exposed APIs as if they were calling local interfaces.
+
+
+
+The registration center supported by the gateway for client access includes (nacos, eureka, etcd, zookeeper, consul), and the following is the relevant guide for using **eureka** registration center when `shenyu-bootstrap` and `application client` are used.
+
+## Environment preparation
+
+Refer to `Deployment` guide, and choose a way to start `shenyu-admin` and `shenyu-bootstrap`.
+
+## shenyu-bootstrap
+
+### Maven dependency
+
+In the gateway's `pom.xml` file, introduce the following dependencies.
+
+```xml
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+ ${eureka-client.version}
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+
+```
+
+### Edit the configuration file
+
+Add the following configuration to the gateway's `yml` configuration file.
+
+```yaml
+spring:
+ cloud:
+ discovery:
+ enabled: true # Enable service discovery
+
+eureka:
+ client:
+ enabled: true
+ serviceUrl:
+ defaultZone: http://localhost:8761/eureka/ # Enter your eureka registry center address here
+ instance:
+ prefer-ip-address: true
+```
+
+## Client Application
+
+### Maven dependency
+
+In the `pom.xml` file of the application client, introduce the following dependencies.
+
+- Shenyu-Sdk Core
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-core
+ 2.5.1-SNAPSHOT
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sdk
+ 2.5.1-SNAPSHOT
+
+
+```
+
+- Shenyu-Sdk http implementation
+
+> HTTP client implementation, offering okhttp and httpclient as implementation options. Other implementations can be created by extending the `AbstractShenyuSdkClient` class.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-httpclient
+ 2.5.1-SNAPSHOT
+
+
+
+
+```
+
+### Edit the configuration file
+
+Add the following configuration in the application client's `yml` configuration file.
+
+```yaml
+shenyu:
+ sdk:
+ enabled: true
+ register-type: eureka
+ server-lists: http://localhost:8761/eureka/
+ props:
+ retry:
+ enable: true
+ period: 100
+ maxPeriod: 1000
+ maxAttempts: 5
+ algorithm: roundRobin
+ scheme: http
+
+# registerType: service registration type, fill in eureka
+# serverList: Enter the eureka server address(es), separated by commas in English.
+# scheme: Request protocol.
+
+# retry: Configuration related to failure retries.
+# retry.period: Retry waiting time.
+# retry.maxPeriod: Maximum retry waiting time .
+# retry.maxAttempts: Maximum retry count.
+```
+
+
+## Writing the local interface for the SDK
+
+1. In the project startup class, annotate `@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")`, where `basePackages` maintains the package location of Shenyu-Sdk's corresponding maintained gateway API interface.
+
+2. Create an interface and use the `@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")` annotation to mark it, where `name` represents the gateway service name. If you need to define multiple beans to maintain the gateway's API, you can use `contextId` as the corresponding bean alias.
+
+3. In the defined interface, add the methods of the interface to be mapped to the shenyu gateway, where the `value` of `@xxMapping` corresponds to the path of the corresponding request in the gateway.
+
+**Example**
+
+Project startup class
+
+```java
+import org.apache.shenyu.sdk.spring.EnableShenyuClients;
+
+@SpringBootApplication
+@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")
+public class ShenyuSdkHttpExampleApplication {
+
+ /**
+ * main.
+ *
+ * @param args args
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuSdkHttpExampleApplication.class, args);
+ }
+}
+```
+
+Shenyu-SDK interface
+
+```java
+import org.apache.shenyu.sdk.spring.ShenyuClient;
+
+@ShenyuClient(name = "shenyu-bootstrap", contextId = "ShenyuSdkApiName")
+public interface ShenyuHttpClientApi {
+
+ /**
+ * findById.
+ * test Get.
+ *
+ * @param id id
+ * @return SdkTestDto
+ */
+ @GetMapping("/http/shenyu/client/findById")
+ SdkTestDto findById(@RequestParam("id") String id);
+}
+```
+
+For more information, refer to the sample project [shenyu-examples-sdk](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sdk)
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-feign.md b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-feign.md
new file mode 100644
index 00000000000..20cfe2df822
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-feign.md
@@ -0,0 +1,130 @@
+---
+title: Using Shenyu-SDK-Feign
+keywords: ["Using Shenyu-Sdk", "feign"]
+description: Using Shenyu-Sdk-Feign
+---
+
+## Shenyu sdk-feign
+
+> Integrate `open Feign` to implement declarative SDK call gateway API.
+> Like 'shenyu sdk', 'shenyu sdk feign' is another option;
+> for more information see :
+> * please refer to: [shenyu-sdk-consul](../../user-guide/sdk-usage/shenyu-sdk-consul)
+> * please refer to: [shenyu-sdk-etcd](../../user-guide/sdk-usage/shenyu-sdk-etcd)
+> * please refer to: [shenyu-sdk-eureka](../../user-guide/sdk-usage/shenyu-sdk-eureka)
+> * please refer to: [shenyu-sdk-nacos](../../user-guide/sdk-usage/shenyu-sdk-nacos)
+> * please refer to: [shenyu-sdk-zookeeper](../../user-guide/sdk-usage/shenyu-sdk-zookeeper)
+
+### Maven dependency
+
+In the `pom.xml` file of the application client, introduce the following dependencies(Compatible with `FeignClient`).
+
+```xml
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+ ${spring-cloud.version}
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sdk-feign
+ 2.6.1-SNAPSHOT
+
+
+```
+
+
+### Edit the configuration file
+
+Add the following configuration in the application client's `yml` configuration file.
+
+```yaml
+shenyu:
+ sdk:
+ enabled: true
+ register-type: consul
+ server-lists: localhost
+ props:
+ algorithm: roundRobin
+ scheme: http
+
+# if not use openFeign and springCloud-loadBalance, feign client options must be enabled.
+feign:
+ client:
+ httpclient:
+ enabled: true
+
+# registerType: service registration type, fill in consul.
+# serverLists: consul client agent address (sidecar deployment mode (single machine or cluster), can also be the address of consul server agent (can only connect to one consul server agent node, if it is a cluster, then there will be a single point of failure problem)).
+
+# algorithm: load balance algorithm.
+# scheme: Request protocol.
+
+```
+
+## Writing the local interface for the SDK
+
+1. In the project startup class, annotate `@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")`, where `basePackages` maintains the package location of Shenyu-Sdk's corresponding maintained gateway API interface.
+
+2. Create an interface and use the `@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")` annotation to mark it, where `name` represents the gateway service name. If you need to define multiple beans to maintain the gateway's API, you can use `contextId` as the corresponding bean alias.
+
+3. In the defined interface, add the methods of the interface to be mapped to the shenyu gateway, where the `value` of `@xxMapping` corresponds to the path of the corresponding request in the gateway.
+
+**Example**
+
+Project startup class
+
+```java
+import org.apache.shenyu.sdk.feign.EnableShenyuClients;
+
+@SpringBootApplication
+@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.feign.api")
+public class ShenyuSdkHttpExampleApplication {
+
+ /**
+ * main.
+ *
+ * @param args args
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuSdkHttpExampleApplication.class, args);
+ }
+}
+```
+
+Shenyu-SDK interface
+
+```java
+import org.apache.shenyu.sdk.feign.ShenyuClient;
+
+@ShenyuClient(name = "shenyu-gateway", contextId = "ShenyuSdkApiName", path = "/feign/shenyu/client")
+public interface ShenyuFeignClientApi {
+
+ /**
+ * findById.
+ * test Get.
+ *
+ * @param id id
+ * @return SdkTestDto
+ */
+ @GetMapping("/findById")
+ SdkTestDto findById(@RequestParam("id") String id);
+
+ /**
+ * annoTest.
+ *
+ * @param cookie cookie
+ * @param header header
+ * @param id id
+ * @param requestDto requestDto
+ * @return sdkTestDto
+ */
+ @PostMapping("/{id}/anno")
+ SdkTestDto annoTest(@CookieValue("cookie") String cookie, @RequestHeader("header") String header, @PathVariable("id") String id, @RequestBody SdkTestDto requestDto);
+
+}
+```
+
+For more information, refer to the sample project [shenyu-examples-sdk-feign](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sdk/shenyu-examples-sdk-feign)
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-nacos.md b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-nacos.md
new file mode 100644
index 00000000000..e8226285644
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-nacos.md
@@ -0,0 +1,185 @@
+---
+title: Using Nacos with Shenyu-SDK
+keywords: ["Using Shenyu-Sdk", "Nacos"]
+description: Using Shenyu-Sdk
+---
+
+## Background explanation
+
+Shenyu offers Shenyu-Sdk to make it easy for services to quickly integrate with the Shenyu gateway. By simply depending on the SDK and doing some simple configuration, client services can call the gateway's exposed APIs as if they were calling local interfaces.
+
+
+
+The registration center supported by the gateway for client access includes (nacos, eureka, etcd, zookeeper, consul), and the following is the relevant guide for using **nacos** registration center when `shenyu-bootstrap` and `application client` are used.
+
+## Environment preparation
+
+Refer to `Deployment` guide, and choose a way to start `shenyu-admin` and `shenyu-bootstrap`.
+
+## shenyu-bootstrap
+
+### Maven dependency
+
+In the gateway's `pom.xml` file, introduce the following dependencies.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-registry
+ ${project.version}
+
+```
+
+### Edit the configuration file
+
+Add the following configuration to the gateway's `yml` configuration file.
+
+```yaml
+spring:
+ application:
+ name: shenyu-bootstrap
+ cloud:
+ discovery:
+ enabled: true
+ nacos:
+ discovery:
+ server-addr: 127.0.0.1:8848 # Enter the nacos address(es), separated by commas in English.
+ enabled: true
+ namespace: ShenyuRegisterCenter # nacos namespace ID
+ # if nacos authentication is enabled, the following parameters must be configured
+ username: nacos # Authentication username
+ password: nacos # Authentication password
+```
+
+## Client Application
+
+### Maven dependency
+
+In the `pom.xml` file of the application client, introduce the following dependencies.
+
+- Shenyu-Sdk Core
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-core
+ 2.5.1-SNAPSHOT
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sdk
+ 2.5.1-SNAPSHOT
+
+
+```
+
+- Shenyu-Sdk http implementation
+
+> HTTP client implementation, offering okhttp and httpclient as implementation options. Other implementations can be created by extending the `AbstractShenyuSdkClient` class.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-httpclient
+ 2.5.1-SNAPSHOT
+
+
+
+
+```
+
+### Edit the configuration file
+
+Add the following configuration in the application client's `yml` configuration file.
+
+```yaml
+shenyu:
+ sdk:
+ enabled: true
+ register-type: nacos
+ server-lists: localhost:2181
+ props:
+ nacosNameSpace: ShenyuRegisterCenter
+ username: nacos
+ password: nacos
+ retry:
+ enable: true
+ period: 100
+ maxPeriod: 1000
+ maxAttempts: 5
+ algorithm: roundRobin
+ scheme: http
+
+# registerType: service registration type, fill in nacos.
+# serverList: Enter the nacos address(es), separated by commas in English.
+# nacosNameSpace: nacos namespace ID
+# username: Authentication username
+# password: Authentication password
+# scheme: Request protocol.
+
+# retry: Configuration related to failure retries.
+# retry.period: Retry waiting time.
+# retry.maxPeriod: Maximum retry waiting time .
+# retry.maxAttempts: Maximum retry count.
+```
+
+## Writing the local interface for the SDK
+
+1. In the project startup class, annotate `@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")`, where `basePackages` maintains the package location of Shenyu-Sdk's corresponding maintained gateway API interface.
+
+2. Create an interface and use the `@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")` annotation to mark it, where `name` represents the gateway service name. If you need to define multiple beans to maintain the gateway's API, you can use `contextId` as the corresponding bean alias.
+
+3. In the defined interface, add the methods of the interface to be mapped to the shenyu gateway, where the `value` of `@xxMapping` corresponds to the path of the corresponding request in the gateway.
+
+**Example**
+
+Project startup class
+
+```java
+import org.apache.shenyu.sdk.spring.EnableShenyuClients;
+
+@SpringBootApplication
+@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")
+public class ShenyuSdkHttpExampleApplication {
+
+ /**
+ * main.
+ *
+ * @param args args
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuSdkHttpExampleApplication.class, args);
+ }
+}
+```
+
+Shenyu-SDK interface
+
+```java
+import org.apache.shenyu.sdk.spring.ShenyuClient;
+
+@ShenyuClient(name = "shenyu-bootstrap", contextId = "ShenyuSdkApiName")
+public interface ShenyuHttpClientApi {
+
+ /**
+ * findById.
+ * test Get.
+ *
+ * @param id id
+ * @return SdkTestDto
+ */
+ @GetMapping("/http/shenyu/client/findById")
+ SdkTestDto findById(@RequestParam("id") String id);
+}
+```
+
+For more information, refer to the sample project [shenyu-examples-sdk](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sdk)
diff --git a/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-zookeeper.md b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-zookeeper.md
new file mode 100644
index 00000000000..4c546574022
--- /dev/null
+++ b/versioned_docs/version-2.6.1/user-guide/sdk-usage/shenyu-sdk-zookeeper.md
@@ -0,0 +1,179 @@
+---
+title: Using Zookeeper with Shenyu-SDK
+keywords: ["Using Shenyu-Sdk", "zookeeper"]
+description: Using Shenyu-Sdk
+---
+
+## Background explanation
+
+Shenyu offers Shenyu-Sdk to make it easy for services to quickly integrate with the Shenyu gateway. By simply depending on the SDK and doing some simple configuration, client services can call the gateway's exposed APIs as if they were calling local interfaces.
+
+
+
+The registration center supported by the gateway for client access includes (nacos, eureka, etcd, zookeeper, consul), and the following is the relevant guide for using **Zookeeper** registration center when `shenyu-bootstrap` and `application client` are used.
+
+## Environment preparation
+
+Refer to `Deployment` guide, and choose a way to start `shenyu-admin` and `shenyu-bootstrap`.
+
+## shenyu-bootstrap
+
+### Maven dependency
+
+In the gateway's `pom.xml` file, introduce the following dependencies.
+
+```xml
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-registry
+ ${project.version}
+
+```
+
+### Edit the configuration file
+
+Add the following configuration to the gateway's `yml` configuration file.
+
+```yaml
+shenyu:
+ register:
+ enabled: true
+ registerType: zookeeper
+ serverLists: localhost:2181
+ props:
+ appName: http
+ port: xx
+# registerType: service registration type, fill in zookeeper.
+# serverList: Enter the zookeeper address(es), separated by commas in English.
+# appName:Your application name. If not configured, the default value will be taken from spring.application.name.
+# port: Your project's startup port, currently springmvc/tars/grpc needs to be filled in.
+
+# for detailed reference, please see the `user-guide> Property Config> Register Center Instance Config` configuration document.
+```
+
+## Client Application
+
+### Maven dependency
+
+In the `pom.xml` file of the application client, introduce the following dependencies.
+
+- Shenyu-Sdk Core
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-core
+ 2.5.1-SNAPSHOT
+
+
+
+ org.apache.shenyu
+ shenyu-spring-boot-starter-sdk
+ 2.5.1-SNAPSHOT
+
+
+```
+
+- Shenyu-Sdk http implementation
+
+> HTTP client implementation, offering okhttp and httpclient as implementation options. Other implementations can be created by extending the `AbstractShenyuSdkClient` class.
+
+```xml
+
+
+ org.apache.shenyu
+ shenyu-sdk-httpclient
+ 2.5.1-SNAPSHOT
+
+
+
+
+```
+
+### Edit the configuration file
+
+Add the following configuration in the application client's `yml` configuration file.
+
+```yaml
+shenyu:
+ sdk:
+ enabled: true
+ register-type: zookeeper
+ server-lists: localhost:2181
+ props:
+ retry:
+ enable: true
+ period: 100
+ maxPeriod: 1000
+ maxAttempts: 5
+ algorithm: roundRobin
+ scheme: http
+
+# register-type: service registration type, fill in zookeeper.
+# server-lists: Enter the zookeeper address(es), separated by commas in English.
+# scheme: Request protocol.
+
+# retry: Configuration related to failure retries.
+# retry.period: Retry waiting time.
+# retry.maxPeriod: Maximum retry waiting time .
+# retry.maxAttempts: Maximum retry count.
+```
+
+## Writing the local interface for the SDK
+
+1. In the project startup class, annotate `@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")`, where `basePackages` maintains the package location of Shenyu-Sdk's corresponding maintained gateway API interface.
+
+2. Create an interface and use the `@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")` annotation to mark it, where `name` represents the gateway service name. If you need to define multiple beans to maintain the gateway's API, you can use `contextId` as the corresponding bean alias.
+
+3. In the defined interface, add the methods of the interface to be mapped to the shenyu gateway, where the `value` of `@xxMapping` corresponds to the path of the corresponding request in the gateway.
+
+**Example**
+
+Project startup class
+
+```java
+import org.apache.shenyu.sdk.spring.EnableShenyuClients;
+
+@SpringBootApplication
+@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api")
+public class ShenyuSdkHttpExampleApplication {
+
+ /**
+ * main.
+ *
+ * @param args args
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(ShenyuSdkHttpExampleApplication.class, args);
+ }
+}
+```
+
+Shenyu-SDK interface
+
+```java
+import org.apache.shenyu.sdk.spring.ShenyuClient;
+
+@ShenyuClient(name = "shenyu-gateway", contextId = "ShenyuSdkApiName")
+public interface ShenyuHttpClientApi {
+
+ /**
+ * findById.
+ * test Get.
+ *
+ * @param id id
+ * @return SdkTestDto
+ */
+ @GetMapping("/http/shenyu/client/findById")
+ SdkTestDto findById(@RequestParam("id") String id);
+}
+```
+
+For more information, refer to the sample project [shenyu-examples-sdk](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-sdk)
diff --git a/versioned_sidebars/version-2.6.1-sidebars.json b/versioned_sidebars/version-2.6.1-sidebars.json
new file mode 100644
index 00000000000..7ef4ca95ab0
--- /dev/null
+++ b/versioned_sidebars/version-2.6.1-sidebars.json
@@ -0,0 +1,8 @@
+{
+ "version-2.6.0/tutorialSidebar": [
+ {
+ "type": "autogenerated",
+ "dirName": "."
+ }
+ ]
+}
diff --git a/versions.json b/versions.json
index 0973190fa61..da31d6447a6 100755
--- a/versions.json
+++ b/versions.json
@@ -1,4 +1,5 @@
[
+ "2.6.1",
"2.6.0",
"2.5.1",
"2.5.0",