You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by il...@apache.org on 2018/07/03 11:16:35 UTC

[incubator-dubbo-website] branch asf-site updated: move user manual into its dedicate directory

This is an automated email from the ASF dual-hosted git repository.

iluo pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 7d40122  move user manual into its dedicate directory
7d40122 is described below

commit 7d401220ed4bca780b54ae02683db7564616354d
Author: beiwei30 <ia...@gmail.com>
AuthorDate: Tue Jul 3 19:16:00 2018 +0800

    move user manual into its dedicate directory
---
 build/page.js                                      |   4 +-
 docs/{zh-cn => en-us/user}/LICENSE                 |   0
 docs/en-us/{ => user}/README.md                    |   0
 docs/en-us/{ => user}/SUMMARY.md                   |   0
 docs/en-us/{ => user}/benchmark-tool.md            |   0
 docs/en-us/{ => user}/best-practice.md             |   0
 docs/en-us/{ => user}/capacity-plan.md             |   0
 docs/en-us/{ => user}/configuration/annotation.md  |   0
 docs/en-us/{ => user}/configuration/api.md         |   0
 docs/en-us/{ => user}/configuration/index.md       |   0
 docs/en-us/{ => user}/configuration/properties.md  |   0
 docs/en-us/{ => user}/configuration/xml.md         |   0
 docs/en-us/{ => user}/coveragence.md               |   0
 docs/en-us/{ => user}/demos/accesslog.md           |   0
 docs/en-us/{ => user}/demos/async-call.md          |   0
 docs/en-us/{ => user}/demos/attachment.md          |   0
 docs/en-us/{ => user}/demos/callback-parameter.md  |   0
 docs/en-us/{ => user}/demos/concurrency-control.md |   0
 docs/en-us/{ => user}/demos/config-connections.md  |   0
 docs/en-us/{ => user}/demos/config-rule.md         |   0
 docs/en-us/{ => user}/demos/context.md             |   0
 docs/en-us/{ => user}/demos/delay-publish.md       |   0
 .../{ => user}/demos/distributed-transaction.md    |   0
 docs/en-us/{ => user}/demos/dump.md                |   0
 docs/en-us/{ => user}/demos/echo-service.md        |   0
 docs/en-us/{ => user}/demos/events-notify.md       |   0
 docs/en-us/{ => user}/demos/explicit-target.md     |   0
 .../{ => user}/demos/fault-tolerent-strategy.md    |   0
 docs/en-us/{ => user}/demos/generic-reference.md   |   0
 docs/en-us/{ => user}/demos/generic-service.md     |   0
 docs/en-us/{ => user}/demos/graceful-shutdown.md   |   0
 docs/en-us/{ => user}/demos/group-merger.md        |   0
 docs/en-us/{ => user}/demos/hostname-binding.md    |   0
 docs/en-us/{ => user}/demos/index.md               |   0
 docs/en-us/{ => user}/demos/introduction.md        |   0
 docs/en-us/{ => user}/demos/lazy-connect.md        |   0
 docs/en-us/{ => user}/demos/loadbalance.md         |   0
 docs/en-us/{ => user}/demos/local-call.md          |   0
 docs/en-us/{ => user}/demos/local-mock.md          |   0
 docs/en-us/{ => user}/demos/local-stub.md          |   0
 docs/en-us/{ => user}/demos/logger-strategy.md     |   0
 docs/en-us/{ => user}/demos/multi-protocols.md     |   0
 docs/en-us/{ => user}/demos/multi-registry.md      |   0
 docs/en-us/{ => user}/demos/multi-versions.md      |   0
 docs/en-us/{ => user}/demos/netty4.md              |   0
 .../en-us/{ => user}/demos/parameter-validation.md |   0
 docs/en-us/{ => user}/demos/preflight-check.md     |   0
 .../{ => user}/demos/reference-config-cache.md     |   0
 docs/en-us/{ => user}/demos/registry-only.md       |   0
 docs/en-us/{ => user}/demos/result-cache.md        |   0
 docs/en-us/{ => user}/demos/routing-rule.md        |   0
 docs/en-us/{ => user}/demos/service-container.md   |   0
 docs/en-us/{ => user}/demos/service-downgrade.md   |   0
 docs/en-us/{ => user}/demos/service-group.md       |   0
 docs/en-us/{ => user}/demos/static-service.md      |   0
 docs/en-us/{ => user}/demos/stickiness.md          |   0
 docs/en-us/{ => user}/demos/subscribe-only.md      |   0
 docs/en-us/{ => user}/demos/thread-model.md        |   0
 docs/en-us/{ => user}/demos/token-authorization.md |   0
 docs/en-us/{ => user}/dependencies.md              |   0
 docs/en-us/{ => user}/maturity.md                  |   0
 docs/en-us/{ => user}/perf-test.md                 |   0
 docs/en-us/{ => user}/preface/architecture.md      |   0
 docs/en-us/{ => user}/preface/background.md        |   0
 docs/en-us/{ => user}/preface/index.md             |   0
 docs/en-us/{ => user}/preface/requirements.md      |   0
 docs/en-us/{ => user}/preface/usage.md             |   0
 docs/en-us/{ => user}/quick-start.md               |   0
 docs/en-us/{ => user}/recommend.md                 |   0
 docs/en-us/{ => user}/references/api.md            |   0
 docs/en-us/{ => user}/references/maven.md          |   0
 docs/en-us/{ => user}/references/protocol/dubbo.md |   0
 .../{ => user}/references/protocol/hessian.md      |   0
 docs/en-us/{ => user}/references/protocol/http.md  |   0
 .../{ => user}/references/protocol/introduction.md |   0
 .../{ => user}/references/protocol/memcached.md    |   0
 docs/en-us/{ => user}/references/protocol/redis.md |   0
 docs/en-us/{ => user}/references/protocol/rmi.md   |   0
 .../en-us/{ => user}/references/protocol/thrift.md |   0
 .../{ => user}/references/protocol/webservice.md   |   0
 .../{ => user}/references/registry/introduction.md |   0
 .../{ => user}/references/registry/multicast.md    |   0
 docs/en-us/{ => user}/references/registry/redis.md |   0
 .../en-us/{ => user}/references/registry/simple.md |   0
 .../{ => user}/references/registry/zookeeper.md    |   0
 docs/en-us/{ => user}/references/telnet.md         |   0
 .../{ => user}/references/xml/dubbo-application.md |   0
 .../{ => user}/references/xml/dubbo-argument.md    |   0
 .../{ => user}/references/xml/dubbo-consumer.md    |   0
 .../{ => user}/references/xml/dubbo-method.md      |   0
 .../{ => user}/references/xml/dubbo-module.md      |   0
 .../{ => user}/references/xml/dubbo-monitor.md     |   0
 .../{ => user}/references/xml/dubbo-parameter.md   |   0
 .../{ => user}/references/xml/dubbo-protocol.md    |   0
 .../{ => user}/references/xml/dubbo-provider.md    |   0
 .../{ => user}/references/xml/dubbo-reference.md   |   0
 .../{ => user}/references/xml/dubbo-registry.md    |   0
 .../{ => user}/references/xml/dubbo-service.md     |   0
 .../{ => user}/references/xml/introduction.md      |   0
 docs/en-us/{ => user}/simple-monitor.md            |   0
 .../{zh-cn => en-us/user}/sources/images/1kres.png | Bin
 .../{zh-cn => en-us/user}/sources/images/1ktps.png | Bin
 .../user}/sources/images/200kres.png               | Bin
 .../user}/sources/images/200ktps.png               | Bin
 .../user}/sources/images/50kres.png                | Bin
 .../user}/sources/images/50ktps.png                | Bin
 .../user}/sources/images/cluster.jpg               | Bin
 .../user}/sources/images/code-coverage.jpg         | Bin
 .../user}/sources/images/code-dependency.jpg       | Bin
 .../user}/sources/images/code-quality1.jpg         | Bin
 .../{ => user}/sources/images/code-quality2.jpg    | Bin
 .../{ => user}/sources/images/code-quality3.jpg    | Bin
 .../{ => user}/sources/images/code-quality4.jpg    | Bin
 .../user}/sources/images/code-quality5.jpg         | Bin
 .../{ => user}/sources/images/code-quality6.jpg    | Bin
 .../{ => user}/sources/images/code-quality7.jpg    | Bin
 .../user}/sources/images/code-tendency.jpg         | Bin
 .../user}/sources/images/context.png               | Bin
 .../sources/images/dubbo-architecture-future.jpg   | Bin
 .../sources/images/dubbo-architecture-roadmap.jpg  | Bin
 .../user}/sources/images/dubbo-architecture.jpg    | Bin
 .../user}/sources/images/dubbo-config-override.jpg | Bin
 .../user}/sources/images/dubbo-config.jpg          | Bin
 .../user}/sources/images/dubbo-directly.jpg        | Bin
 .../sources/images/dubbo-properties-override.jpg   | Bin
 .../user}/sources/images/dubbo-protocol.jpg        | Bin
 .../user}/sources/images/dubbo-redis-registry.jpg  | Bin
 .../sources/images/dubbo-service-governance.jpg    | Bin
 .../user}/sources/images/dubbo-token.jpg           | Bin
 .../user}/sources/images/future.jpg                | Bin
 .../user}/sources/images/jta-xa.jpg                | Bin
 .../user}/sources/images/lock-get-bean.jpg         | Bin
 .../user}/sources/images/lock-init-context.jpg     | Bin
 .../user}/sources/images/multicast.jpg             | Bin
 .../user}/sources/images/pojores.png               | Bin
 .../user}/sources/images/pojotps.png               | Bin
 docs/{zh-cn => en-us/user}/sources/images/stub.jpg | Bin
 .../user}/sources/images/subscribe-only.jpg        | Bin
 ...pg-version=1&modificationDate=1326468174000.jpg | Bin
 .../user}/sources/images/zookeeper.jpg             | Bin
 docs/{en-us => zh-cn/user}/LICENSE                 |   0
 docs/zh-cn/{ => user}/README.md                    |   0
 docs/zh-cn/{ => user}/SUMMARY.md                   |   0
 docs/zh-cn/{ => user}/benchmark-tool.md            |   0
 docs/zh-cn/{ => user}/best-practice.md             |   0
 docs/zh-cn/{ => user}/capacity-plan.md             |   0
 docs/zh-cn/{ => user}/configuration/annotation.md  |   0
 docs/zh-cn/{ => user}/configuration/api.md         |   0
 docs/zh-cn/{ => user}/configuration/index.md       |   0
 docs/zh-cn/{ => user}/configuration/properties.md  |   0
 docs/zh-cn/{ => user}/configuration/xml.md         |   0
 docs/zh-cn/{ => user}/coveragence.md               |   0
 docs/zh-cn/{ => user}/demos/accesslog.md           |   0
 docs/zh-cn/{ => user}/demos/async-call.md          |   0
 docs/zh-cn/{ => user}/demos/attachment.md          |   0
 docs/zh-cn/{ => user}/demos/callback-parameter.md  |   0
 docs/zh-cn/{ => user}/demos/concurrency-control.md |   0
 docs/zh-cn/{ => user}/demos/config-connections.md  |   0
 docs/zh-cn/{ => user}/demos/config-rule.md         |   0
 docs/zh-cn/{ => user}/demos/context.md             |   0
 docs/zh-cn/{ => user}/demos/delay-publish.md       |   0
 .../{ => user}/demos/distributed-transaction.md    |   0
 docs/zh-cn/{ => user}/demos/dump.md                |   0
 docs/zh-cn/{ => user}/demos/echo-service.md        |   0
 docs/zh-cn/{ => user}/demos/events-notify.md       |   0
 docs/zh-cn/{ => user}/demos/explicit-target.md     |   0
 .../{ => user}/demos/fault-tolerent-strategy.md    |   0
 docs/zh-cn/{ => user}/demos/generic-reference.md   |   0
 docs/zh-cn/{ => user}/demos/generic-service.md     |   0
 docs/zh-cn/{ => user}/demos/graceful-shutdown.md   |   0
 docs/zh-cn/{ => user}/demos/group-merger.md        |   0
 docs/zh-cn/{ => user}/demos/hostname-binding.md    |   0
 docs/zh-cn/{ => user}/demos/index.md               |   0
 docs/zh-cn/{ => user}/demos/introduction.md        |   0
 docs/zh-cn/{ => user}/demos/lazy-connect.md        |   0
 docs/zh-cn/{ => user}/demos/loadbalance.md         |   0
 docs/zh-cn/{ => user}/demos/local-call.md          |   0
 docs/zh-cn/{ => user}/demos/local-mock.md          |   0
 docs/zh-cn/{ => user}/demos/local-stub.md          |   0
 docs/zh-cn/{ => user}/demos/logger-strategy.md     |   0
 docs/zh-cn/{ => user}/demos/multi-protocols.md     |   0
 docs/zh-cn/{ => user}/demos/multi-registry.md      |   0
 docs/zh-cn/{ => user}/demos/multi-versions.md      |   0
 docs/zh-cn/{ => user}/demos/netty4.md              |   0
 .../zh-cn/{ => user}/demos/parameter-validation.md |   0
 docs/zh-cn/{ => user}/demos/preflight-check.md     |   0
 .../{ => user}/demos/reference-config-cache.md     |   0
 docs/zh-cn/{ => user}/demos/registry-only.md       |   0
 docs/zh-cn/{ => user}/demos/result-cache.md        |   0
 docs/zh-cn/{ => user}/demos/routing-rule.md        |   0
 docs/zh-cn/{ => user}/demos/serialization.md       |   0
 docs/zh-cn/{ => user}/demos/service-container.md   |   0
 docs/zh-cn/{ => user}/demos/service-downgrade.md   |   0
 docs/zh-cn/{ => user}/demos/service-group.md       |   0
 docs/zh-cn/{ => user}/demos/static-service.md      |   0
 docs/zh-cn/{ => user}/demos/stickiness.md          |   0
 docs/zh-cn/{ => user}/demos/subscribe-only.md      |   0
 docs/zh-cn/{ => user}/demos/thread-model.md        |   0
 docs/zh-cn/{ => user}/demos/token-authorization.md |   0
 docs/zh-cn/{ => user}/dependencies.md              |   0
 docs/zh-cn/{ => user}/maturity.md                  |   0
 docs/zh-cn/{ => user}/perf-test.md                 |   0
 docs/zh-cn/{ => user}/preface/architecture.md      |   0
 docs/zh-cn/{ => user}/preface/background.md        |   0
 docs/zh-cn/{ => user}/preface/index.md             |   0
 docs/zh-cn/{ => user}/preface/requirements.md      |   0
 docs/zh-cn/{ => user}/preface/usage.md             |   0
 docs/zh-cn/{ => user}/quick-start.md               |   0
 docs/zh-cn/{ => user}/recommend.md                 |   0
 docs/zh-cn/{ => user}/references/api.md            |   0
 docs/zh-cn/{ => user}/references/maven.md          |   0
 docs/zh-cn/{ => user}/references/protocol/dubbo.md |   0
 .../{ => user}/references/protocol/hessian.md      |   0
 docs/zh-cn/{ => user}/references/protocol/http.md  |   0
 .../{ => user}/references/protocol/introduction.md |   0
 .../{ => user}/references/protocol/memcached.md    |   0
 docs/zh-cn/{ => user}/references/protocol/redis.md |   0
 docs/zh-cn/{ => user}/references/protocol/rest.md  |   0
 docs/zh-cn/{ => user}/references/protocol/rmi.md   |   0
 .../zh-cn/{ => user}/references/protocol/thrift.md |   0
 .../{ => user}/references/protocol/webservice.md   |   0
 docs/zh-cn/{ => user}/references/qos.md            |   0
 .../{ => user}/references/registry/introduction.md |   0
 .../{ => user}/references/registry/multicast.md    |   0
 docs/zh-cn/{ => user}/references/registry/redis.md |   0
 .../zh-cn/{ => user}/references/registry/simple.md |   0
 .../{ => user}/references/registry/zookeeper.md    |   0
 docs/zh-cn/{ => user}/references/telnet.md         |   0
 .../{ => user}/references/xml/dubbo-application.md |   0
 .../{ => user}/references/xml/dubbo-argument.md    |   0
 .../{ => user}/references/xml/dubbo-consumer.md    |   0
 .../{ => user}/references/xml/dubbo-method.md      |   0
 .../{ => user}/references/xml/dubbo-module.md      |   0
 .../{ => user}/references/xml/dubbo-monitor.md     |   0
 .../{ => user}/references/xml/dubbo-parameter.md   |   0
 .../{ => user}/references/xml/dubbo-protocol.md    |   0
 .../{ => user}/references/xml/dubbo-provider.md    |   0
 .../{ => user}/references/xml/dubbo-reference.md   |   0
 .../{ => user}/references/xml/dubbo-registry.md    |   0
 .../{ => user}/references/xml/dubbo-service.md     |   0
 .../{ => user}/references/xml/introduction.md      |   0
 docs/zh-cn/{ => user}/rest.md                      |   0
 docs/zh-cn/{ => user}/serialization.md             |   0
 docs/zh-cn/{ => user}/simple-monitor.md            |   0
 .../{en-us => zh-cn/user}/sources/images/1kres.png | Bin
 .../{en-us => zh-cn/user}/sources/images/1ktps.png | Bin
 .../user}/sources/images/200kres.png               | Bin
 .../user}/sources/images/200ktps.png               | Bin
 .../user}/sources/images/50kres.png                | Bin
 .../user}/sources/images/50ktps.png                | Bin
 .../user}/sources/images/cluster.jpg               | Bin
 .../user}/sources/images/code-coverage.jpg         | Bin
 .../user}/sources/images/code-dependency.jpg       | Bin
 .../user}/sources/images/code-quality1.jpg         | Bin
 .../user}/sources/images/code-quality5.jpg         | Bin
 .../user}/sources/images/code-tendency.jpg         | Bin
 .../user}/sources/images/context.png               | Bin
 .../sources/images/dubbo-architecture-future.jpg   | Bin
 .../sources/images/dubbo-architecture-roadmap.jpg  | Bin
 .../user}/sources/images/dubbo-architecture.jpg    | Bin
 .../user}/sources/images/dubbo-config-override.jpg | Bin
 .../user}/sources/images/dubbo-config.jpg          | Bin
 .../user}/sources/images/dubbo-directly.jpg        | Bin
 .../sources/images/dubbo-properties-override.jpg   | Bin
 .../user}/sources/images/dubbo-protocol.jpg        | Bin
 .../user}/sources/images/dubbo-redis-registry.jpg  | Bin
 .../sources/images/dubbo-service-governance.jpg    | Bin
 .../user}/sources/images/dubbo-token.jpg           | Bin
 .../user}/sources/images/future.jpg                | Bin
 .../user}/sources/images/jta-xa.jpg                | Bin
 .../user}/sources/images/lock-get-bean.jpg         | Bin
 .../user}/sources/images/lock-init-context.jpg     | Bin
 .../user}/sources/images/multicast.jpg             | Bin
 .../user}/sources/images/pojores.png               | Bin
 .../user}/sources/images/pojotps.png               | Bin
 docs/{en-us => zh-cn/user}/sources/images/stub.jpg | Bin
 .../user}/sources/images/subscribe-only.jpg        | Bin
 ...pg-version=1&modificationDate=1326468174000.jpg | Bin
 .../user}/sources/images/zookeeper.jpg             | Bin
 md_json/docs.json                                  | 402 ++++++++++-----------
 site_config/docs.js                                | 368 +++++++++----------
 site_config/home.jsx                               |   8 +-
 site_config/site.js                                |  12 +-
 src/index.jsx                                      |   4 +-
 284 files changed, 399 insertions(+), 399 deletions(-)

diff --git a/build/page.js b/build/page.js
index 07a40f5..89ee072 100644
--- a/build/page.js
+++ b/build/page.js
@@ -1,6 +1,6 @@
-!function(s){function n(a){if(e[a])return e[a].exports;var t=e[a]={i:a,l:!1,exports:{}};return s[a].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var e={};n.m=s,n.c=e,n.i=function(s){return s},n.d=function(s,e,a){n.o(s,e)||Object.defineProperty(s,e,{configurable:!1,enumerable:!0,get:a})},n.n=function(s){var e=s&&s.__esModule?function(){return s.default}:function(){return s};return n.d(e,"a",e),e},n.o=function(s,n){return Object.prototype.hasOwnProperty.call(s,n)},n.p="/build/",n(n.s=43) [...]
+!function(s){function n(a){if(e[a])return e[a].exports;var t=e[a]={i:a,l:!1,exports:{}};return s[a].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var e={};n.m=s,n.c=e,n.i=function(s){return s},n.d=function(s,e,a){n.o(s,e)||Object.defineProperty(s,e,{configurable:!1,enumerable:!0,get:a})},n.n=function(s){var e=s&&s.__esModule?function(){return s.default}:function(){return s};return n.d(e,"a",e),e},n.o=function(s,n){return Object.prototype.hasOwnProperty.call(s,n)},n.p="/build/",n(n.s=43) [...]
   Copyright (c) 2016 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function e(){for(var s=[],n=0;n<arguments.length;n++){var a=arguments[n];if(a){var t=typeof a;if("string"===t||"number"===t)s.push(a);else if(Array.isArray(a))s.push(e.apply(null,a));else if("object"===t)for(var o in a)l.call(a,o)&&a[o]&&s.push(o)}}return s.join(" ")}var l={}.hasOwnProperty;void 0!==s&&s.exports?s.exports=e:(a=[],void 0!==(t=function(){return e}.apply(n,a))&&(s.exports=t))}()},function(s,n,e){"use strict";n.decode=n.parse=e(85),n.encode=n.stringi [...]
\ No newline at end of file
+!function(){"use strict";function e(){for(var s=[],n=0;n<arguments.length;n++){var a=arguments[n];if(a){var t=typeof a;if("string"===t||"number"===t)s.push(a);else if(Array.isArray(a))s.push(e.apply(null,a));else if("object"===t)for(var o in a)l.call(a,o)&&a[o]&&s.push(o)}}return s.join(" ")}var l={}.hasOwnProperty;void 0!==s&&s.exports?s.exports=e:(a=[],void 0!==(t=function(){return e}.apply(n,a))&&(s.exports=t))}()},function(s,n,e){"use strict";n.decode=n.parse=e(85),n.encode=n.stringi [...]
\ No newline at end of file
diff --git a/docs/zh-cn/LICENSE b/docs/en-us/user/LICENSE
similarity index 100%
rename from docs/zh-cn/LICENSE
rename to docs/en-us/user/LICENSE
diff --git a/docs/en-us/README.md b/docs/en-us/user/README.md
similarity index 100%
rename from docs/en-us/README.md
rename to docs/en-us/user/README.md
diff --git a/docs/en-us/SUMMARY.md b/docs/en-us/user/SUMMARY.md
similarity index 100%
rename from docs/en-us/SUMMARY.md
rename to docs/en-us/user/SUMMARY.md
diff --git a/docs/en-us/benchmark-tool.md b/docs/en-us/user/benchmark-tool.md
similarity index 100%
rename from docs/en-us/benchmark-tool.md
rename to docs/en-us/user/benchmark-tool.md
diff --git a/docs/en-us/best-practice.md b/docs/en-us/user/best-practice.md
similarity index 100%
rename from docs/en-us/best-practice.md
rename to docs/en-us/user/best-practice.md
diff --git a/docs/en-us/capacity-plan.md b/docs/en-us/user/capacity-plan.md
similarity index 100%
rename from docs/en-us/capacity-plan.md
rename to docs/en-us/user/capacity-plan.md
diff --git a/docs/en-us/configuration/annotation.md b/docs/en-us/user/configuration/annotation.md
similarity index 100%
rename from docs/en-us/configuration/annotation.md
rename to docs/en-us/user/configuration/annotation.md
diff --git a/docs/en-us/configuration/api.md b/docs/en-us/user/configuration/api.md
similarity index 100%
rename from docs/en-us/configuration/api.md
rename to docs/en-us/user/configuration/api.md
diff --git a/docs/en-us/configuration/index.md b/docs/en-us/user/configuration/index.md
similarity index 100%
rename from docs/en-us/configuration/index.md
rename to docs/en-us/user/configuration/index.md
diff --git a/docs/en-us/configuration/properties.md b/docs/en-us/user/configuration/properties.md
similarity index 100%
rename from docs/en-us/configuration/properties.md
rename to docs/en-us/user/configuration/properties.md
diff --git a/docs/en-us/configuration/xml.md b/docs/en-us/user/configuration/xml.md
similarity index 100%
rename from docs/en-us/configuration/xml.md
rename to docs/en-us/user/configuration/xml.md
diff --git a/docs/en-us/coveragence.md b/docs/en-us/user/coveragence.md
similarity index 100%
rename from docs/en-us/coveragence.md
rename to docs/en-us/user/coveragence.md
diff --git a/docs/en-us/demos/accesslog.md b/docs/en-us/user/demos/accesslog.md
similarity index 100%
rename from docs/en-us/demos/accesslog.md
rename to docs/en-us/user/demos/accesslog.md
diff --git a/docs/en-us/demos/async-call.md b/docs/en-us/user/demos/async-call.md
similarity index 100%
rename from docs/en-us/demos/async-call.md
rename to docs/en-us/user/demos/async-call.md
diff --git a/docs/en-us/demos/attachment.md b/docs/en-us/user/demos/attachment.md
similarity index 100%
rename from docs/en-us/demos/attachment.md
rename to docs/en-us/user/demos/attachment.md
diff --git a/docs/en-us/demos/callback-parameter.md b/docs/en-us/user/demos/callback-parameter.md
similarity index 100%
rename from docs/en-us/demos/callback-parameter.md
rename to docs/en-us/user/demos/callback-parameter.md
diff --git a/docs/en-us/demos/concurrency-control.md b/docs/en-us/user/demos/concurrency-control.md
similarity index 100%
rename from docs/en-us/demos/concurrency-control.md
rename to docs/en-us/user/demos/concurrency-control.md
diff --git a/docs/en-us/demos/config-connections.md b/docs/en-us/user/demos/config-connections.md
similarity index 100%
rename from docs/en-us/demos/config-connections.md
rename to docs/en-us/user/demos/config-connections.md
diff --git a/docs/en-us/demos/config-rule.md b/docs/en-us/user/demos/config-rule.md
similarity index 100%
rename from docs/en-us/demos/config-rule.md
rename to docs/en-us/user/demos/config-rule.md
diff --git a/docs/en-us/demos/context.md b/docs/en-us/user/demos/context.md
similarity index 100%
rename from docs/en-us/demos/context.md
rename to docs/en-us/user/demos/context.md
diff --git a/docs/en-us/demos/delay-publish.md b/docs/en-us/user/demos/delay-publish.md
similarity index 100%
rename from docs/en-us/demos/delay-publish.md
rename to docs/en-us/user/demos/delay-publish.md
diff --git a/docs/en-us/demos/distributed-transaction.md b/docs/en-us/user/demos/distributed-transaction.md
similarity index 100%
rename from docs/en-us/demos/distributed-transaction.md
rename to docs/en-us/user/demos/distributed-transaction.md
diff --git a/docs/en-us/demos/dump.md b/docs/en-us/user/demos/dump.md
similarity index 100%
rename from docs/en-us/demos/dump.md
rename to docs/en-us/user/demos/dump.md
diff --git a/docs/en-us/demos/echo-service.md b/docs/en-us/user/demos/echo-service.md
similarity index 100%
rename from docs/en-us/demos/echo-service.md
rename to docs/en-us/user/demos/echo-service.md
diff --git a/docs/en-us/demos/events-notify.md b/docs/en-us/user/demos/events-notify.md
similarity index 100%
rename from docs/en-us/demos/events-notify.md
rename to docs/en-us/user/demos/events-notify.md
diff --git a/docs/en-us/demos/explicit-target.md b/docs/en-us/user/demos/explicit-target.md
similarity index 100%
rename from docs/en-us/demos/explicit-target.md
rename to docs/en-us/user/demos/explicit-target.md
diff --git a/docs/en-us/demos/fault-tolerent-strategy.md b/docs/en-us/user/demos/fault-tolerent-strategy.md
similarity index 100%
rename from docs/en-us/demos/fault-tolerent-strategy.md
rename to docs/en-us/user/demos/fault-tolerent-strategy.md
diff --git a/docs/en-us/demos/generic-reference.md b/docs/en-us/user/demos/generic-reference.md
similarity index 100%
rename from docs/en-us/demos/generic-reference.md
rename to docs/en-us/user/demos/generic-reference.md
diff --git a/docs/en-us/demos/generic-service.md b/docs/en-us/user/demos/generic-service.md
similarity index 100%
rename from docs/en-us/demos/generic-service.md
rename to docs/en-us/user/demos/generic-service.md
diff --git a/docs/en-us/demos/graceful-shutdown.md b/docs/en-us/user/demos/graceful-shutdown.md
similarity index 100%
rename from docs/en-us/demos/graceful-shutdown.md
rename to docs/en-us/user/demos/graceful-shutdown.md
diff --git a/docs/en-us/demos/group-merger.md b/docs/en-us/user/demos/group-merger.md
similarity index 100%
rename from docs/en-us/demos/group-merger.md
rename to docs/en-us/user/demos/group-merger.md
diff --git a/docs/en-us/demos/hostname-binding.md b/docs/en-us/user/demos/hostname-binding.md
similarity index 100%
rename from docs/en-us/demos/hostname-binding.md
rename to docs/en-us/user/demos/hostname-binding.md
diff --git a/docs/en-us/demos/index.md b/docs/en-us/user/demos/index.md
similarity index 100%
rename from docs/en-us/demos/index.md
rename to docs/en-us/user/demos/index.md
diff --git a/docs/en-us/demos/introduction.md b/docs/en-us/user/demos/introduction.md
similarity index 100%
rename from docs/en-us/demos/introduction.md
rename to docs/en-us/user/demos/introduction.md
diff --git a/docs/en-us/demos/lazy-connect.md b/docs/en-us/user/demos/lazy-connect.md
similarity index 100%
rename from docs/en-us/demos/lazy-connect.md
rename to docs/en-us/user/demos/lazy-connect.md
diff --git a/docs/en-us/demos/loadbalance.md b/docs/en-us/user/demos/loadbalance.md
similarity index 100%
rename from docs/en-us/demos/loadbalance.md
rename to docs/en-us/user/demos/loadbalance.md
diff --git a/docs/en-us/demos/local-call.md b/docs/en-us/user/demos/local-call.md
similarity index 100%
rename from docs/en-us/demos/local-call.md
rename to docs/en-us/user/demos/local-call.md
diff --git a/docs/en-us/demos/local-mock.md b/docs/en-us/user/demos/local-mock.md
similarity index 100%
rename from docs/en-us/demos/local-mock.md
rename to docs/en-us/user/demos/local-mock.md
diff --git a/docs/en-us/demos/local-stub.md b/docs/en-us/user/demos/local-stub.md
similarity index 100%
rename from docs/en-us/demos/local-stub.md
rename to docs/en-us/user/demos/local-stub.md
diff --git a/docs/en-us/demos/logger-strategy.md b/docs/en-us/user/demos/logger-strategy.md
similarity index 100%
rename from docs/en-us/demos/logger-strategy.md
rename to docs/en-us/user/demos/logger-strategy.md
diff --git a/docs/en-us/demos/multi-protocols.md b/docs/en-us/user/demos/multi-protocols.md
similarity index 100%
rename from docs/en-us/demos/multi-protocols.md
rename to docs/en-us/user/demos/multi-protocols.md
diff --git a/docs/en-us/demos/multi-registry.md b/docs/en-us/user/demos/multi-registry.md
similarity index 100%
rename from docs/en-us/demos/multi-registry.md
rename to docs/en-us/user/demos/multi-registry.md
diff --git a/docs/en-us/demos/multi-versions.md b/docs/en-us/user/demos/multi-versions.md
similarity index 100%
rename from docs/en-us/demos/multi-versions.md
rename to docs/en-us/user/demos/multi-versions.md
diff --git a/docs/en-us/demos/netty4.md b/docs/en-us/user/demos/netty4.md
similarity index 100%
rename from docs/en-us/demos/netty4.md
rename to docs/en-us/user/demos/netty4.md
diff --git a/docs/en-us/demos/parameter-validation.md b/docs/en-us/user/demos/parameter-validation.md
similarity index 100%
rename from docs/en-us/demos/parameter-validation.md
rename to docs/en-us/user/demos/parameter-validation.md
diff --git a/docs/en-us/demos/preflight-check.md b/docs/en-us/user/demos/preflight-check.md
similarity index 100%
rename from docs/en-us/demos/preflight-check.md
rename to docs/en-us/user/demos/preflight-check.md
diff --git a/docs/en-us/demos/reference-config-cache.md b/docs/en-us/user/demos/reference-config-cache.md
similarity index 100%
rename from docs/en-us/demos/reference-config-cache.md
rename to docs/en-us/user/demos/reference-config-cache.md
diff --git a/docs/en-us/demos/registry-only.md b/docs/en-us/user/demos/registry-only.md
similarity index 100%
rename from docs/en-us/demos/registry-only.md
rename to docs/en-us/user/demos/registry-only.md
diff --git a/docs/en-us/demos/result-cache.md b/docs/en-us/user/demos/result-cache.md
similarity index 100%
rename from docs/en-us/demos/result-cache.md
rename to docs/en-us/user/demos/result-cache.md
diff --git a/docs/en-us/demos/routing-rule.md b/docs/en-us/user/demos/routing-rule.md
similarity index 100%
rename from docs/en-us/demos/routing-rule.md
rename to docs/en-us/user/demos/routing-rule.md
diff --git a/docs/en-us/demos/service-container.md b/docs/en-us/user/demos/service-container.md
similarity index 100%
rename from docs/en-us/demos/service-container.md
rename to docs/en-us/user/demos/service-container.md
diff --git a/docs/en-us/demos/service-downgrade.md b/docs/en-us/user/demos/service-downgrade.md
similarity index 100%
rename from docs/en-us/demos/service-downgrade.md
rename to docs/en-us/user/demos/service-downgrade.md
diff --git a/docs/en-us/demos/service-group.md b/docs/en-us/user/demos/service-group.md
similarity index 100%
rename from docs/en-us/demos/service-group.md
rename to docs/en-us/user/demos/service-group.md
diff --git a/docs/en-us/demos/static-service.md b/docs/en-us/user/demos/static-service.md
similarity index 100%
rename from docs/en-us/demos/static-service.md
rename to docs/en-us/user/demos/static-service.md
diff --git a/docs/en-us/demos/stickiness.md b/docs/en-us/user/demos/stickiness.md
similarity index 100%
rename from docs/en-us/demos/stickiness.md
rename to docs/en-us/user/demos/stickiness.md
diff --git a/docs/en-us/demos/subscribe-only.md b/docs/en-us/user/demos/subscribe-only.md
similarity index 100%
rename from docs/en-us/demos/subscribe-only.md
rename to docs/en-us/user/demos/subscribe-only.md
diff --git a/docs/en-us/demos/thread-model.md b/docs/en-us/user/demos/thread-model.md
similarity index 100%
rename from docs/en-us/demos/thread-model.md
rename to docs/en-us/user/demos/thread-model.md
diff --git a/docs/en-us/demos/token-authorization.md b/docs/en-us/user/demos/token-authorization.md
similarity index 100%
rename from docs/en-us/demos/token-authorization.md
rename to docs/en-us/user/demos/token-authorization.md
diff --git a/docs/en-us/dependencies.md b/docs/en-us/user/dependencies.md
similarity index 100%
rename from docs/en-us/dependencies.md
rename to docs/en-us/user/dependencies.md
diff --git a/docs/en-us/maturity.md b/docs/en-us/user/maturity.md
similarity index 100%
rename from docs/en-us/maturity.md
rename to docs/en-us/user/maturity.md
diff --git a/docs/en-us/perf-test.md b/docs/en-us/user/perf-test.md
similarity index 100%
rename from docs/en-us/perf-test.md
rename to docs/en-us/user/perf-test.md
diff --git a/docs/en-us/preface/architecture.md b/docs/en-us/user/preface/architecture.md
similarity index 100%
rename from docs/en-us/preface/architecture.md
rename to docs/en-us/user/preface/architecture.md
diff --git a/docs/en-us/preface/background.md b/docs/en-us/user/preface/background.md
similarity index 100%
rename from docs/en-us/preface/background.md
rename to docs/en-us/user/preface/background.md
diff --git a/docs/en-us/preface/index.md b/docs/en-us/user/preface/index.md
similarity index 100%
rename from docs/en-us/preface/index.md
rename to docs/en-us/user/preface/index.md
diff --git a/docs/en-us/preface/requirements.md b/docs/en-us/user/preface/requirements.md
similarity index 100%
rename from docs/en-us/preface/requirements.md
rename to docs/en-us/user/preface/requirements.md
diff --git a/docs/en-us/preface/usage.md b/docs/en-us/user/preface/usage.md
similarity index 100%
rename from docs/en-us/preface/usage.md
rename to docs/en-us/user/preface/usage.md
diff --git a/docs/en-us/quick-start.md b/docs/en-us/user/quick-start.md
similarity index 100%
rename from docs/en-us/quick-start.md
rename to docs/en-us/user/quick-start.md
diff --git a/docs/en-us/recommend.md b/docs/en-us/user/recommend.md
similarity index 100%
rename from docs/en-us/recommend.md
rename to docs/en-us/user/recommend.md
diff --git a/docs/en-us/references/api.md b/docs/en-us/user/references/api.md
similarity index 100%
rename from docs/en-us/references/api.md
rename to docs/en-us/user/references/api.md
diff --git a/docs/en-us/references/maven.md b/docs/en-us/user/references/maven.md
similarity index 100%
rename from docs/en-us/references/maven.md
rename to docs/en-us/user/references/maven.md
diff --git a/docs/en-us/references/protocol/dubbo.md b/docs/en-us/user/references/protocol/dubbo.md
similarity index 100%
rename from docs/en-us/references/protocol/dubbo.md
rename to docs/en-us/user/references/protocol/dubbo.md
diff --git a/docs/en-us/references/protocol/hessian.md b/docs/en-us/user/references/protocol/hessian.md
similarity index 100%
rename from docs/en-us/references/protocol/hessian.md
rename to docs/en-us/user/references/protocol/hessian.md
diff --git a/docs/en-us/references/protocol/http.md b/docs/en-us/user/references/protocol/http.md
similarity index 100%
rename from docs/en-us/references/protocol/http.md
rename to docs/en-us/user/references/protocol/http.md
diff --git a/docs/en-us/references/protocol/introduction.md b/docs/en-us/user/references/protocol/introduction.md
similarity index 100%
rename from docs/en-us/references/protocol/introduction.md
rename to docs/en-us/user/references/protocol/introduction.md
diff --git a/docs/en-us/references/protocol/memcached.md b/docs/en-us/user/references/protocol/memcached.md
similarity index 100%
rename from docs/en-us/references/protocol/memcached.md
rename to docs/en-us/user/references/protocol/memcached.md
diff --git a/docs/en-us/references/protocol/redis.md b/docs/en-us/user/references/protocol/redis.md
similarity index 100%
rename from docs/en-us/references/protocol/redis.md
rename to docs/en-us/user/references/protocol/redis.md
diff --git a/docs/en-us/references/protocol/rmi.md b/docs/en-us/user/references/protocol/rmi.md
similarity index 100%
rename from docs/en-us/references/protocol/rmi.md
rename to docs/en-us/user/references/protocol/rmi.md
diff --git a/docs/en-us/references/protocol/thrift.md b/docs/en-us/user/references/protocol/thrift.md
similarity index 100%
rename from docs/en-us/references/protocol/thrift.md
rename to docs/en-us/user/references/protocol/thrift.md
diff --git a/docs/en-us/references/protocol/webservice.md b/docs/en-us/user/references/protocol/webservice.md
similarity index 100%
rename from docs/en-us/references/protocol/webservice.md
rename to docs/en-us/user/references/protocol/webservice.md
diff --git a/docs/en-us/references/registry/introduction.md b/docs/en-us/user/references/registry/introduction.md
similarity index 100%
rename from docs/en-us/references/registry/introduction.md
rename to docs/en-us/user/references/registry/introduction.md
diff --git a/docs/en-us/references/registry/multicast.md b/docs/en-us/user/references/registry/multicast.md
similarity index 100%
rename from docs/en-us/references/registry/multicast.md
rename to docs/en-us/user/references/registry/multicast.md
diff --git a/docs/en-us/references/registry/redis.md b/docs/en-us/user/references/registry/redis.md
similarity index 100%
rename from docs/en-us/references/registry/redis.md
rename to docs/en-us/user/references/registry/redis.md
diff --git a/docs/en-us/references/registry/simple.md b/docs/en-us/user/references/registry/simple.md
similarity index 100%
rename from docs/en-us/references/registry/simple.md
rename to docs/en-us/user/references/registry/simple.md
diff --git a/docs/en-us/references/registry/zookeeper.md b/docs/en-us/user/references/registry/zookeeper.md
similarity index 100%
rename from docs/en-us/references/registry/zookeeper.md
rename to docs/en-us/user/references/registry/zookeeper.md
diff --git a/docs/en-us/references/telnet.md b/docs/en-us/user/references/telnet.md
similarity index 100%
rename from docs/en-us/references/telnet.md
rename to docs/en-us/user/references/telnet.md
diff --git a/docs/en-us/references/xml/dubbo-application.md b/docs/en-us/user/references/xml/dubbo-application.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-application.md
rename to docs/en-us/user/references/xml/dubbo-application.md
diff --git a/docs/en-us/references/xml/dubbo-argument.md b/docs/en-us/user/references/xml/dubbo-argument.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-argument.md
rename to docs/en-us/user/references/xml/dubbo-argument.md
diff --git a/docs/en-us/references/xml/dubbo-consumer.md b/docs/en-us/user/references/xml/dubbo-consumer.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-consumer.md
rename to docs/en-us/user/references/xml/dubbo-consumer.md
diff --git a/docs/en-us/references/xml/dubbo-method.md b/docs/en-us/user/references/xml/dubbo-method.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-method.md
rename to docs/en-us/user/references/xml/dubbo-method.md
diff --git a/docs/en-us/references/xml/dubbo-module.md b/docs/en-us/user/references/xml/dubbo-module.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-module.md
rename to docs/en-us/user/references/xml/dubbo-module.md
diff --git a/docs/en-us/references/xml/dubbo-monitor.md b/docs/en-us/user/references/xml/dubbo-monitor.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-monitor.md
rename to docs/en-us/user/references/xml/dubbo-monitor.md
diff --git a/docs/en-us/references/xml/dubbo-parameter.md b/docs/en-us/user/references/xml/dubbo-parameter.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-parameter.md
rename to docs/en-us/user/references/xml/dubbo-parameter.md
diff --git a/docs/en-us/references/xml/dubbo-protocol.md b/docs/en-us/user/references/xml/dubbo-protocol.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-protocol.md
rename to docs/en-us/user/references/xml/dubbo-protocol.md
diff --git a/docs/en-us/references/xml/dubbo-provider.md b/docs/en-us/user/references/xml/dubbo-provider.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-provider.md
rename to docs/en-us/user/references/xml/dubbo-provider.md
diff --git a/docs/en-us/references/xml/dubbo-reference.md b/docs/en-us/user/references/xml/dubbo-reference.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-reference.md
rename to docs/en-us/user/references/xml/dubbo-reference.md
diff --git a/docs/en-us/references/xml/dubbo-registry.md b/docs/en-us/user/references/xml/dubbo-registry.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-registry.md
rename to docs/en-us/user/references/xml/dubbo-registry.md
diff --git a/docs/en-us/references/xml/dubbo-service.md b/docs/en-us/user/references/xml/dubbo-service.md
similarity index 100%
rename from docs/en-us/references/xml/dubbo-service.md
rename to docs/en-us/user/references/xml/dubbo-service.md
diff --git a/docs/en-us/references/xml/introduction.md b/docs/en-us/user/references/xml/introduction.md
similarity index 100%
rename from docs/en-us/references/xml/introduction.md
rename to docs/en-us/user/references/xml/introduction.md
diff --git a/docs/en-us/simple-monitor.md b/docs/en-us/user/simple-monitor.md
similarity index 100%
rename from docs/en-us/simple-monitor.md
rename to docs/en-us/user/simple-monitor.md
diff --git a/docs/zh-cn/sources/images/1kres.png b/docs/en-us/user/sources/images/1kres.png
similarity index 100%
rename from docs/zh-cn/sources/images/1kres.png
rename to docs/en-us/user/sources/images/1kres.png
diff --git a/docs/zh-cn/sources/images/1ktps.png b/docs/en-us/user/sources/images/1ktps.png
similarity index 100%
rename from docs/zh-cn/sources/images/1ktps.png
rename to docs/en-us/user/sources/images/1ktps.png
diff --git a/docs/zh-cn/sources/images/200kres.png b/docs/en-us/user/sources/images/200kres.png
similarity index 100%
rename from docs/zh-cn/sources/images/200kres.png
rename to docs/en-us/user/sources/images/200kres.png
diff --git a/docs/zh-cn/sources/images/200ktps.png b/docs/en-us/user/sources/images/200ktps.png
similarity index 100%
rename from docs/zh-cn/sources/images/200ktps.png
rename to docs/en-us/user/sources/images/200ktps.png
diff --git a/docs/zh-cn/sources/images/50kres.png b/docs/en-us/user/sources/images/50kres.png
similarity index 100%
rename from docs/zh-cn/sources/images/50kres.png
rename to docs/en-us/user/sources/images/50kres.png
diff --git a/docs/zh-cn/sources/images/50ktps.png b/docs/en-us/user/sources/images/50ktps.png
similarity index 100%
rename from docs/zh-cn/sources/images/50ktps.png
rename to docs/en-us/user/sources/images/50ktps.png
diff --git a/docs/zh-cn/sources/images/cluster.jpg b/docs/en-us/user/sources/images/cluster.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/cluster.jpg
rename to docs/en-us/user/sources/images/cluster.jpg
diff --git a/docs/zh-cn/sources/images/code-coverage.jpg b/docs/en-us/user/sources/images/code-coverage.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/code-coverage.jpg
rename to docs/en-us/user/sources/images/code-coverage.jpg
diff --git a/docs/zh-cn/sources/images/code-dependency.jpg b/docs/en-us/user/sources/images/code-dependency.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/code-dependency.jpg
rename to docs/en-us/user/sources/images/code-dependency.jpg
diff --git a/docs/zh-cn/sources/images/code-quality1.jpg b/docs/en-us/user/sources/images/code-quality1.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/code-quality1.jpg
rename to docs/en-us/user/sources/images/code-quality1.jpg
diff --git a/docs/en-us/sources/images/code-quality2.jpg b/docs/en-us/user/sources/images/code-quality2.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality2.jpg
rename to docs/en-us/user/sources/images/code-quality2.jpg
diff --git a/docs/en-us/sources/images/code-quality3.jpg b/docs/en-us/user/sources/images/code-quality3.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality3.jpg
rename to docs/en-us/user/sources/images/code-quality3.jpg
diff --git a/docs/en-us/sources/images/code-quality4.jpg b/docs/en-us/user/sources/images/code-quality4.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality4.jpg
rename to docs/en-us/user/sources/images/code-quality4.jpg
diff --git a/docs/zh-cn/sources/images/code-quality5.jpg b/docs/en-us/user/sources/images/code-quality5.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/code-quality5.jpg
rename to docs/en-us/user/sources/images/code-quality5.jpg
diff --git a/docs/en-us/sources/images/code-quality6.jpg b/docs/en-us/user/sources/images/code-quality6.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality6.jpg
rename to docs/en-us/user/sources/images/code-quality6.jpg
diff --git a/docs/en-us/sources/images/code-quality7.jpg b/docs/en-us/user/sources/images/code-quality7.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality7.jpg
rename to docs/en-us/user/sources/images/code-quality7.jpg
diff --git a/docs/zh-cn/sources/images/code-tendency.jpg b/docs/en-us/user/sources/images/code-tendency.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/code-tendency.jpg
rename to docs/en-us/user/sources/images/code-tendency.jpg
diff --git a/docs/zh-cn/sources/images/context.png b/docs/en-us/user/sources/images/context.png
similarity index 100%
rename from docs/zh-cn/sources/images/context.png
rename to docs/en-us/user/sources/images/context.png
diff --git a/docs/zh-cn/sources/images/dubbo-architecture-future.jpg b/docs/en-us/user/sources/images/dubbo-architecture-future.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-architecture-future.jpg
rename to docs/en-us/user/sources/images/dubbo-architecture-future.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-architecture-roadmap.jpg b/docs/en-us/user/sources/images/dubbo-architecture-roadmap.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-architecture-roadmap.jpg
rename to docs/en-us/user/sources/images/dubbo-architecture-roadmap.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-architecture.jpg b/docs/en-us/user/sources/images/dubbo-architecture.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-architecture.jpg
rename to docs/en-us/user/sources/images/dubbo-architecture.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-config-override.jpg b/docs/en-us/user/sources/images/dubbo-config-override.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-config-override.jpg
rename to docs/en-us/user/sources/images/dubbo-config-override.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-config.jpg b/docs/en-us/user/sources/images/dubbo-config.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-config.jpg
rename to docs/en-us/user/sources/images/dubbo-config.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-directly.jpg b/docs/en-us/user/sources/images/dubbo-directly.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-directly.jpg
rename to docs/en-us/user/sources/images/dubbo-directly.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-properties-override.jpg b/docs/en-us/user/sources/images/dubbo-properties-override.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-properties-override.jpg
rename to docs/en-us/user/sources/images/dubbo-properties-override.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-protocol.jpg b/docs/en-us/user/sources/images/dubbo-protocol.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-protocol.jpg
rename to docs/en-us/user/sources/images/dubbo-protocol.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-redis-registry.jpg b/docs/en-us/user/sources/images/dubbo-redis-registry.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-redis-registry.jpg
rename to docs/en-us/user/sources/images/dubbo-redis-registry.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-service-governance.jpg b/docs/en-us/user/sources/images/dubbo-service-governance.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-service-governance.jpg
rename to docs/en-us/user/sources/images/dubbo-service-governance.jpg
diff --git a/docs/zh-cn/sources/images/dubbo-token.jpg b/docs/en-us/user/sources/images/dubbo-token.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/dubbo-token.jpg
rename to docs/en-us/user/sources/images/dubbo-token.jpg
diff --git a/docs/zh-cn/sources/images/future.jpg b/docs/en-us/user/sources/images/future.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/future.jpg
rename to docs/en-us/user/sources/images/future.jpg
diff --git a/docs/zh-cn/sources/images/jta-xa.jpg b/docs/en-us/user/sources/images/jta-xa.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/jta-xa.jpg
rename to docs/en-us/user/sources/images/jta-xa.jpg
diff --git a/docs/zh-cn/sources/images/lock-get-bean.jpg b/docs/en-us/user/sources/images/lock-get-bean.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/lock-get-bean.jpg
rename to docs/en-us/user/sources/images/lock-get-bean.jpg
diff --git a/docs/zh-cn/sources/images/lock-init-context.jpg b/docs/en-us/user/sources/images/lock-init-context.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/lock-init-context.jpg
rename to docs/en-us/user/sources/images/lock-init-context.jpg
diff --git a/docs/zh-cn/sources/images/multicast.jpg b/docs/en-us/user/sources/images/multicast.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/multicast.jpg
rename to docs/en-us/user/sources/images/multicast.jpg
diff --git a/docs/zh-cn/sources/images/pojores.png b/docs/en-us/user/sources/images/pojores.png
similarity index 100%
rename from docs/zh-cn/sources/images/pojores.png
rename to docs/en-us/user/sources/images/pojores.png
diff --git a/docs/zh-cn/sources/images/pojotps.png b/docs/en-us/user/sources/images/pojotps.png
similarity index 100%
rename from docs/zh-cn/sources/images/pojotps.png
rename to docs/en-us/user/sources/images/pojotps.png
diff --git a/docs/zh-cn/sources/images/stub.jpg b/docs/en-us/user/sources/images/stub.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/stub.jpg
rename to docs/en-us/user/sources/images/stub.jpg
diff --git a/docs/zh-cn/sources/images/subscribe-only.jpg b/docs/en-us/user/sources/images/subscribe-only.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/subscribe-only.jpg
rename to docs/en-us/user/sources/images/subscribe-only.jpg
diff --git a/docs/zh-cn/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg b/docs/en-us/user/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg
rename to docs/en-us/user/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg
diff --git a/docs/zh-cn/sources/images/zookeeper.jpg b/docs/en-us/user/sources/images/zookeeper.jpg
similarity index 100%
rename from docs/zh-cn/sources/images/zookeeper.jpg
rename to docs/en-us/user/sources/images/zookeeper.jpg
diff --git a/docs/en-us/LICENSE b/docs/zh-cn/user/LICENSE
similarity index 100%
rename from docs/en-us/LICENSE
rename to docs/zh-cn/user/LICENSE
diff --git a/docs/zh-cn/README.md b/docs/zh-cn/user/README.md
similarity index 100%
rename from docs/zh-cn/README.md
rename to docs/zh-cn/user/README.md
diff --git a/docs/zh-cn/SUMMARY.md b/docs/zh-cn/user/SUMMARY.md
similarity index 100%
rename from docs/zh-cn/SUMMARY.md
rename to docs/zh-cn/user/SUMMARY.md
diff --git a/docs/zh-cn/benchmark-tool.md b/docs/zh-cn/user/benchmark-tool.md
similarity index 100%
rename from docs/zh-cn/benchmark-tool.md
rename to docs/zh-cn/user/benchmark-tool.md
diff --git a/docs/zh-cn/best-practice.md b/docs/zh-cn/user/best-practice.md
similarity index 100%
rename from docs/zh-cn/best-practice.md
rename to docs/zh-cn/user/best-practice.md
diff --git a/docs/zh-cn/capacity-plan.md b/docs/zh-cn/user/capacity-plan.md
similarity index 100%
rename from docs/zh-cn/capacity-plan.md
rename to docs/zh-cn/user/capacity-plan.md
diff --git a/docs/zh-cn/configuration/annotation.md b/docs/zh-cn/user/configuration/annotation.md
similarity index 100%
rename from docs/zh-cn/configuration/annotation.md
rename to docs/zh-cn/user/configuration/annotation.md
diff --git a/docs/zh-cn/configuration/api.md b/docs/zh-cn/user/configuration/api.md
similarity index 100%
rename from docs/zh-cn/configuration/api.md
rename to docs/zh-cn/user/configuration/api.md
diff --git a/docs/zh-cn/configuration/index.md b/docs/zh-cn/user/configuration/index.md
similarity index 100%
rename from docs/zh-cn/configuration/index.md
rename to docs/zh-cn/user/configuration/index.md
diff --git a/docs/zh-cn/configuration/properties.md b/docs/zh-cn/user/configuration/properties.md
similarity index 100%
rename from docs/zh-cn/configuration/properties.md
rename to docs/zh-cn/user/configuration/properties.md
diff --git a/docs/zh-cn/configuration/xml.md b/docs/zh-cn/user/configuration/xml.md
similarity index 100%
rename from docs/zh-cn/configuration/xml.md
rename to docs/zh-cn/user/configuration/xml.md
diff --git a/docs/zh-cn/coveragence.md b/docs/zh-cn/user/coveragence.md
similarity index 100%
rename from docs/zh-cn/coveragence.md
rename to docs/zh-cn/user/coveragence.md
diff --git a/docs/zh-cn/demos/accesslog.md b/docs/zh-cn/user/demos/accesslog.md
similarity index 100%
rename from docs/zh-cn/demos/accesslog.md
rename to docs/zh-cn/user/demos/accesslog.md
diff --git a/docs/zh-cn/demos/async-call.md b/docs/zh-cn/user/demos/async-call.md
similarity index 100%
rename from docs/zh-cn/demos/async-call.md
rename to docs/zh-cn/user/demos/async-call.md
diff --git a/docs/zh-cn/demos/attachment.md b/docs/zh-cn/user/demos/attachment.md
similarity index 100%
rename from docs/zh-cn/demos/attachment.md
rename to docs/zh-cn/user/demos/attachment.md
diff --git a/docs/zh-cn/demos/callback-parameter.md b/docs/zh-cn/user/demos/callback-parameter.md
similarity index 100%
rename from docs/zh-cn/demos/callback-parameter.md
rename to docs/zh-cn/user/demos/callback-parameter.md
diff --git a/docs/zh-cn/demos/concurrency-control.md b/docs/zh-cn/user/demos/concurrency-control.md
similarity index 100%
rename from docs/zh-cn/demos/concurrency-control.md
rename to docs/zh-cn/user/demos/concurrency-control.md
diff --git a/docs/zh-cn/demos/config-connections.md b/docs/zh-cn/user/demos/config-connections.md
similarity index 100%
rename from docs/zh-cn/demos/config-connections.md
rename to docs/zh-cn/user/demos/config-connections.md
diff --git a/docs/zh-cn/demos/config-rule.md b/docs/zh-cn/user/demos/config-rule.md
similarity index 100%
rename from docs/zh-cn/demos/config-rule.md
rename to docs/zh-cn/user/demos/config-rule.md
diff --git a/docs/zh-cn/demos/context.md b/docs/zh-cn/user/demos/context.md
similarity index 100%
rename from docs/zh-cn/demos/context.md
rename to docs/zh-cn/user/demos/context.md
diff --git a/docs/zh-cn/demos/delay-publish.md b/docs/zh-cn/user/demos/delay-publish.md
similarity index 100%
rename from docs/zh-cn/demos/delay-publish.md
rename to docs/zh-cn/user/demos/delay-publish.md
diff --git a/docs/zh-cn/demos/distributed-transaction.md b/docs/zh-cn/user/demos/distributed-transaction.md
similarity index 100%
rename from docs/zh-cn/demos/distributed-transaction.md
rename to docs/zh-cn/user/demos/distributed-transaction.md
diff --git a/docs/zh-cn/demos/dump.md b/docs/zh-cn/user/demos/dump.md
similarity index 100%
rename from docs/zh-cn/demos/dump.md
rename to docs/zh-cn/user/demos/dump.md
diff --git a/docs/zh-cn/demos/echo-service.md b/docs/zh-cn/user/demos/echo-service.md
similarity index 100%
rename from docs/zh-cn/demos/echo-service.md
rename to docs/zh-cn/user/demos/echo-service.md
diff --git a/docs/zh-cn/demos/events-notify.md b/docs/zh-cn/user/demos/events-notify.md
similarity index 100%
rename from docs/zh-cn/demos/events-notify.md
rename to docs/zh-cn/user/demos/events-notify.md
diff --git a/docs/zh-cn/demos/explicit-target.md b/docs/zh-cn/user/demos/explicit-target.md
similarity index 100%
rename from docs/zh-cn/demos/explicit-target.md
rename to docs/zh-cn/user/demos/explicit-target.md
diff --git a/docs/zh-cn/demos/fault-tolerent-strategy.md b/docs/zh-cn/user/demos/fault-tolerent-strategy.md
similarity index 100%
rename from docs/zh-cn/demos/fault-tolerent-strategy.md
rename to docs/zh-cn/user/demos/fault-tolerent-strategy.md
diff --git a/docs/zh-cn/demos/generic-reference.md b/docs/zh-cn/user/demos/generic-reference.md
similarity index 100%
rename from docs/zh-cn/demos/generic-reference.md
rename to docs/zh-cn/user/demos/generic-reference.md
diff --git a/docs/zh-cn/demos/generic-service.md b/docs/zh-cn/user/demos/generic-service.md
similarity index 100%
rename from docs/zh-cn/demos/generic-service.md
rename to docs/zh-cn/user/demos/generic-service.md
diff --git a/docs/zh-cn/demos/graceful-shutdown.md b/docs/zh-cn/user/demos/graceful-shutdown.md
similarity index 100%
rename from docs/zh-cn/demos/graceful-shutdown.md
rename to docs/zh-cn/user/demos/graceful-shutdown.md
diff --git a/docs/zh-cn/demos/group-merger.md b/docs/zh-cn/user/demos/group-merger.md
similarity index 100%
rename from docs/zh-cn/demos/group-merger.md
rename to docs/zh-cn/user/demos/group-merger.md
diff --git a/docs/zh-cn/demos/hostname-binding.md b/docs/zh-cn/user/demos/hostname-binding.md
similarity index 100%
rename from docs/zh-cn/demos/hostname-binding.md
rename to docs/zh-cn/user/demos/hostname-binding.md
diff --git a/docs/zh-cn/demos/index.md b/docs/zh-cn/user/demos/index.md
similarity index 100%
rename from docs/zh-cn/demos/index.md
rename to docs/zh-cn/user/demos/index.md
diff --git a/docs/zh-cn/demos/introduction.md b/docs/zh-cn/user/demos/introduction.md
similarity index 100%
rename from docs/zh-cn/demos/introduction.md
rename to docs/zh-cn/user/demos/introduction.md
diff --git a/docs/zh-cn/demos/lazy-connect.md b/docs/zh-cn/user/demos/lazy-connect.md
similarity index 100%
rename from docs/zh-cn/demos/lazy-connect.md
rename to docs/zh-cn/user/demos/lazy-connect.md
diff --git a/docs/zh-cn/demos/loadbalance.md b/docs/zh-cn/user/demos/loadbalance.md
similarity index 100%
rename from docs/zh-cn/demos/loadbalance.md
rename to docs/zh-cn/user/demos/loadbalance.md
diff --git a/docs/zh-cn/demos/local-call.md b/docs/zh-cn/user/demos/local-call.md
similarity index 100%
rename from docs/zh-cn/demos/local-call.md
rename to docs/zh-cn/user/demos/local-call.md
diff --git a/docs/zh-cn/demos/local-mock.md b/docs/zh-cn/user/demos/local-mock.md
similarity index 100%
rename from docs/zh-cn/demos/local-mock.md
rename to docs/zh-cn/user/demos/local-mock.md
diff --git a/docs/zh-cn/demos/local-stub.md b/docs/zh-cn/user/demos/local-stub.md
similarity index 100%
rename from docs/zh-cn/demos/local-stub.md
rename to docs/zh-cn/user/demos/local-stub.md
diff --git a/docs/zh-cn/demos/logger-strategy.md b/docs/zh-cn/user/demos/logger-strategy.md
similarity index 100%
rename from docs/zh-cn/demos/logger-strategy.md
rename to docs/zh-cn/user/demos/logger-strategy.md
diff --git a/docs/zh-cn/demos/multi-protocols.md b/docs/zh-cn/user/demos/multi-protocols.md
similarity index 100%
rename from docs/zh-cn/demos/multi-protocols.md
rename to docs/zh-cn/user/demos/multi-protocols.md
diff --git a/docs/zh-cn/demos/multi-registry.md b/docs/zh-cn/user/demos/multi-registry.md
similarity index 100%
rename from docs/zh-cn/demos/multi-registry.md
rename to docs/zh-cn/user/demos/multi-registry.md
diff --git a/docs/zh-cn/demos/multi-versions.md b/docs/zh-cn/user/demos/multi-versions.md
similarity index 100%
rename from docs/zh-cn/demos/multi-versions.md
rename to docs/zh-cn/user/demos/multi-versions.md
diff --git a/docs/zh-cn/demos/netty4.md b/docs/zh-cn/user/demos/netty4.md
similarity index 100%
rename from docs/zh-cn/demos/netty4.md
rename to docs/zh-cn/user/demos/netty4.md
diff --git a/docs/zh-cn/demos/parameter-validation.md b/docs/zh-cn/user/demos/parameter-validation.md
similarity index 100%
rename from docs/zh-cn/demos/parameter-validation.md
rename to docs/zh-cn/user/demos/parameter-validation.md
diff --git a/docs/zh-cn/demos/preflight-check.md b/docs/zh-cn/user/demos/preflight-check.md
similarity index 100%
rename from docs/zh-cn/demos/preflight-check.md
rename to docs/zh-cn/user/demos/preflight-check.md
diff --git a/docs/zh-cn/demos/reference-config-cache.md b/docs/zh-cn/user/demos/reference-config-cache.md
similarity index 100%
rename from docs/zh-cn/demos/reference-config-cache.md
rename to docs/zh-cn/user/demos/reference-config-cache.md
diff --git a/docs/zh-cn/demos/registry-only.md b/docs/zh-cn/user/demos/registry-only.md
similarity index 100%
rename from docs/zh-cn/demos/registry-only.md
rename to docs/zh-cn/user/demos/registry-only.md
diff --git a/docs/zh-cn/demos/result-cache.md b/docs/zh-cn/user/demos/result-cache.md
similarity index 100%
rename from docs/zh-cn/demos/result-cache.md
rename to docs/zh-cn/user/demos/result-cache.md
diff --git a/docs/zh-cn/demos/routing-rule.md b/docs/zh-cn/user/demos/routing-rule.md
similarity index 100%
rename from docs/zh-cn/demos/routing-rule.md
rename to docs/zh-cn/user/demos/routing-rule.md
diff --git a/docs/zh-cn/demos/serialization.md b/docs/zh-cn/user/demos/serialization.md
similarity index 100%
rename from docs/zh-cn/demos/serialization.md
rename to docs/zh-cn/user/demos/serialization.md
diff --git a/docs/zh-cn/demos/service-container.md b/docs/zh-cn/user/demos/service-container.md
similarity index 100%
rename from docs/zh-cn/demos/service-container.md
rename to docs/zh-cn/user/demos/service-container.md
diff --git a/docs/zh-cn/demos/service-downgrade.md b/docs/zh-cn/user/demos/service-downgrade.md
similarity index 100%
rename from docs/zh-cn/demos/service-downgrade.md
rename to docs/zh-cn/user/demos/service-downgrade.md
diff --git a/docs/zh-cn/demos/service-group.md b/docs/zh-cn/user/demos/service-group.md
similarity index 100%
rename from docs/zh-cn/demos/service-group.md
rename to docs/zh-cn/user/demos/service-group.md
diff --git a/docs/zh-cn/demos/static-service.md b/docs/zh-cn/user/demos/static-service.md
similarity index 100%
rename from docs/zh-cn/demos/static-service.md
rename to docs/zh-cn/user/demos/static-service.md
diff --git a/docs/zh-cn/demos/stickiness.md b/docs/zh-cn/user/demos/stickiness.md
similarity index 100%
rename from docs/zh-cn/demos/stickiness.md
rename to docs/zh-cn/user/demos/stickiness.md
diff --git a/docs/zh-cn/demos/subscribe-only.md b/docs/zh-cn/user/demos/subscribe-only.md
similarity index 100%
rename from docs/zh-cn/demos/subscribe-only.md
rename to docs/zh-cn/user/demos/subscribe-only.md
diff --git a/docs/zh-cn/demos/thread-model.md b/docs/zh-cn/user/demos/thread-model.md
similarity index 100%
rename from docs/zh-cn/demos/thread-model.md
rename to docs/zh-cn/user/demos/thread-model.md
diff --git a/docs/zh-cn/demos/token-authorization.md b/docs/zh-cn/user/demos/token-authorization.md
similarity index 100%
rename from docs/zh-cn/demos/token-authorization.md
rename to docs/zh-cn/user/demos/token-authorization.md
diff --git a/docs/zh-cn/dependencies.md b/docs/zh-cn/user/dependencies.md
similarity index 100%
rename from docs/zh-cn/dependencies.md
rename to docs/zh-cn/user/dependencies.md
diff --git a/docs/zh-cn/maturity.md b/docs/zh-cn/user/maturity.md
similarity index 100%
rename from docs/zh-cn/maturity.md
rename to docs/zh-cn/user/maturity.md
diff --git a/docs/zh-cn/perf-test.md b/docs/zh-cn/user/perf-test.md
similarity index 100%
rename from docs/zh-cn/perf-test.md
rename to docs/zh-cn/user/perf-test.md
diff --git a/docs/zh-cn/preface/architecture.md b/docs/zh-cn/user/preface/architecture.md
similarity index 100%
rename from docs/zh-cn/preface/architecture.md
rename to docs/zh-cn/user/preface/architecture.md
diff --git a/docs/zh-cn/preface/background.md b/docs/zh-cn/user/preface/background.md
similarity index 100%
rename from docs/zh-cn/preface/background.md
rename to docs/zh-cn/user/preface/background.md
diff --git a/docs/zh-cn/preface/index.md b/docs/zh-cn/user/preface/index.md
similarity index 100%
rename from docs/zh-cn/preface/index.md
rename to docs/zh-cn/user/preface/index.md
diff --git a/docs/zh-cn/preface/requirements.md b/docs/zh-cn/user/preface/requirements.md
similarity index 100%
rename from docs/zh-cn/preface/requirements.md
rename to docs/zh-cn/user/preface/requirements.md
diff --git a/docs/zh-cn/preface/usage.md b/docs/zh-cn/user/preface/usage.md
similarity index 100%
rename from docs/zh-cn/preface/usage.md
rename to docs/zh-cn/user/preface/usage.md
diff --git a/docs/zh-cn/quick-start.md b/docs/zh-cn/user/quick-start.md
similarity index 100%
rename from docs/zh-cn/quick-start.md
rename to docs/zh-cn/user/quick-start.md
diff --git a/docs/zh-cn/recommend.md b/docs/zh-cn/user/recommend.md
similarity index 100%
rename from docs/zh-cn/recommend.md
rename to docs/zh-cn/user/recommend.md
diff --git a/docs/zh-cn/references/api.md b/docs/zh-cn/user/references/api.md
similarity index 100%
rename from docs/zh-cn/references/api.md
rename to docs/zh-cn/user/references/api.md
diff --git a/docs/zh-cn/references/maven.md b/docs/zh-cn/user/references/maven.md
similarity index 100%
rename from docs/zh-cn/references/maven.md
rename to docs/zh-cn/user/references/maven.md
diff --git a/docs/zh-cn/references/protocol/dubbo.md b/docs/zh-cn/user/references/protocol/dubbo.md
similarity index 100%
rename from docs/zh-cn/references/protocol/dubbo.md
rename to docs/zh-cn/user/references/protocol/dubbo.md
diff --git a/docs/zh-cn/references/protocol/hessian.md b/docs/zh-cn/user/references/protocol/hessian.md
similarity index 100%
rename from docs/zh-cn/references/protocol/hessian.md
rename to docs/zh-cn/user/references/protocol/hessian.md
diff --git a/docs/zh-cn/references/protocol/http.md b/docs/zh-cn/user/references/protocol/http.md
similarity index 100%
rename from docs/zh-cn/references/protocol/http.md
rename to docs/zh-cn/user/references/protocol/http.md
diff --git a/docs/zh-cn/references/protocol/introduction.md b/docs/zh-cn/user/references/protocol/introduction.md
similarity index 100%
rename from docs/zh-cn/references/protocol/introduction.md
rename to docs/zh-cn/user/references/protocol/introduction.md
diff --git a/docs/zh-cn/references/protocol/memcached.md b/docs/zh-cn/user/references/protocol/memcached.md
similarity index 100%
rename from docs/zh-cn/references/protocol/memcached.md
rename to docs/zh-cn/user/references/protocol/memcached.md
diff --git a/docs/zh-cn/references/protocol/redis.md b/docs/zh-cn/user/references/protocol/redis.md
similarity index 100%
rename from docs/zh-cn/references/protocol/redis.md
rename to docs/zh-cn/user/references/protocol/redis.md
diff --git a/docs/zh-cn/references/protocol/rest.md b/docs/zh-cn/user/references/protocol/rest.md
similarity index 100%
rename from docs/zh-cn/references/protocol/rest.md
rename to docs/zh-cn/user/references/protocol/rest.md
diff --git a/docs/zh-cn/references/protocol/rmi.md b/docs/zh-cn/user/references/protocol/rmi.md
similarity index 100%
rename from docs/zh-cn/references/protocol/rmi.md
rename to docs/zh-cn/user/references/protocol/rmi.md
diff --git a/docs/zh-cn/references/protocol/thrift.md b/docs/zh-cn/user/references/protocol/thrift.md
similarity index 100%
rename from docs/zh-cn/references/protocol/thrift.md
rename to docs/zh-cn/user/references/protocol/thrift.md
diff --git a/docs/zh-cn/references/protocol/webservice.md b/docs/zh-cn/user/references/protocol/webservice.md
similarity index 100%
rename from docs/zh-cn/references/protocol/webservice.md
rename to docs/zh-cn/user/references/protocol/webservice.md
diff --git a/docs/zh-cn/references/qos.md b/docs/zh-cn/user/references/qos.md
similarity index 100%
rename from docs/zh-cn/references/qos.md
rename to docs/zh-cn/user/references/qos.md
diff --git a/docs/zh-cn/references/registry/introduction.md b/docs/zh-cn/user/references/registry/introduction.md
similarity index 100%
rename from docs/zh-cn/references/registry/introduction.md
rename to docs/zh-cn/user/references/registry/introduction.md
diff --git a/docs/zh-cn/references/registry/multicast.md b/docs/zh-cn/user/references/registry/multicast.md
similarity index 100%
rename from docs/zh-cn/references/registry/multicast.md
rename to docs/zh-cn/user/references/registry/multicast.md
diff --git a/docs/zh-cn/references/registry/redis.md b/docs/zh-cn/user/references/registry/redis.md
similarity index 100%
rename from docs/zh-cn/references/registry/redis.md
rename to docs/zh-cn/user/references/registry/redis.md
diff --git a/docs/zh-cn/references/registry/simple.md b/docs/zh-cn/user/references/registry/simple.md
similarity index 100%
rename from docs/zh-cn/references/registry/simple.md
rename to docs/zh-cn/user/references/registry/simple.md
diff --git a/docs/zh-cn/references/registry/zookeeper.md b/docs/zh-cn/user/references/registry/zookeeper.md
similarity index 100%
rename from docs/zh-cn/references/registry/zookeeper.md
rename to docs/zh-cn/user/references/registry/zookeeper.md
diff --git a/docs/zh-cn/references/telnet.md b/docs/zh-cn/user/references/telnet.md
similarity index 100%
rename from docs/zh-cn/references/telnet.md
rename to docs/zh-cn/user/references/telnet.md
diff --git a/docs/zh-cn/references/xml/dubbo-application.md b/docs/zh-cn/user/references/xml/dubbo-application.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-application.md
rename to docs/zh-cn/user/references/xml/dubbo-application.md
diff --git a/docs/zh-cn/references/xml/dubbo-argument.md b/docs/zh-cn/user/references/xml/dubbo-argument.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-argument.md
rename to docs/zh-cn/user/references/xml/dubbo-argument.md
diff --git a/docs/zh-cn/references/xml/dubbo-consumer.md b/docs/zh-cn/user/references/xml/dubbo-consumer.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-consumer.md
rename to docs/zh-cn/user/references/xml/dubbo-consumer.md
diff --git a/docs/zh-cn/references/xml/dubbo-method.md b/docs/zh-cn/user/references/xml/dubbo-method.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-method.md
rename to docs/zh-cn/user/references/xml/dubbo-method.md
diff --git a/docs/zh-cn/references/xml/dubbo-module.md b/docs/zh-cn/user/references/xml/dubbo-module.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-module.md
rename to docs/zh-cn/user/references/xml/dubbo-module.md
diff --git a/docs/zh-cn/references/xml/dubbo-monitor.md b/docs/zh-cn/user/references/xml/dubbo-monitor.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-monitor.md
rename to docs/zh-cn/user/references/xml/dubbo-monitor.md
diff --git a/docs/zh-cn/references/xml/dubbo-parameter.md b/docs/zh-cn/user/references/xml/dubbo-parameter.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-parameter.md
rename to docs/zh-cn/user/references/xml/dubbo-parameter.md
diff --git a/docs/zh-cn/references/xml/dubbo-protocol.md b/docs/zh-cn/user/references/xml/dubbo-protocol.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-protocol.md
rename to docs/zh-cn/user/references/xml/dubbo-protocol.md
diff --git a/docs/zh-cn/references/xml/dubbo-provider.md b/docs/zh-cn/user/references/xml/dubbo-provider.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-provider.md
rename to docs/zh-cn/user/references/xml/dubbo-provider.md
diff --git a/docs/zh-cn/references/xml/dubbo-reference.md b/docs/zh-cn/user/references/xml/dubbo-reference.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-reference.md
rename to docs/zh-cn/user/references/xml/dubbo-reference.md
diff --git a/docs/zh-cn/references/xml/dubbo-registry.md b/docs/zh-cn/user/references/xml/dubbo-registry.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-registry.md
rename to docs/zh-cn/user/references/xml/dubbo-registry.md
diff --git a/docs/zh-cn/references/xml/dubbo-service.md b/docs/zh-cn/user/references/xml/dubbo-service.md
similarity index 100%
rename from docs/zh-cn/references/xml/dubbo-service.md
rename to docs/zh-cn/user/references/xml/dubbo-service.md
diff --git a/docs/zh-cn/references/xml/introduction.md b/docs/zh-cn/user/references/xml/introduction.md
similarity index 100%
rename from docs/zh-cn/references/xml/introduction.md
rename to docs/zh-cn/user/references/xml/introduction.md
diff --git a/docs/zh-cn/rest.md b/docs/zh-cn/user/rest.md
similarity index 100%
rename from docs/zh-cn/rest.md
rename to docs/zh-cn/user/rest.md
diff --git a/docs/zh-cn/serialization.md b/docs/zh-cn/user/serialization.md
similarity index 100%
rename from docs/zh-cn/serialization.md
rename to docs/zh-cn/user/serialization.md
diff --git a/docs/zh-cn/simple-monitor.md b/docs/zh-cn/user/simple-monitor.md
similarity index 100%
rename from docs/zh-cn/simple-monitor.md
rename to docs/zh-cn/user/simple-monitor.md
diff --git a/docs/en-us/sources/images/1kres.png b/docs/zh-cn/user/sources/images/1kres.png
similarity index 100%
rename from docs/en-us/sources/images/1kres.png
rename to docs/zh-cn/user/sources/images/1kres.png
diff --git a/docs/en-us/sources/images/1ktps.png b/docs/zh-cn/user/sources/images/1ktps.png
similarity index 100%
rename from docs/en-us/sources/images/1ktps.png
rename to docs/zh-cn/user/sources/images/1ktps.png
diff --git a/docs/en-us/sources/images/200kres.png b/docs/zh-cn/user/sources/images/200kres.png
similarity index 100%
rename from docs/en-us/sources/images/200kres.png
rename to docs/zh-cn/user/sources/images/200kres.png
diff --git a/docs/en-us/sources/images/200ktps.png b/docs/zh-cn/user/sources/images/200ktps.png
similarity index 100%
rename from docs/en-us/sources/images/200ktps.png
rename to docs/zh-cn/user/sources/images/200ktps.png
diff --git a/docs/en-us/sources/images/50kres.png b/docs/zh-cn/user/sources/images/50kres.png
similarity index 100%
rename from docs/en-us/sources/images/50kres.png
rename to docs/zh-cn/user/sources/images/50kres.png
diff --git a/docs/en-us/sources/images/50ktps.png b/docs/zh-cn/user/sources/images/50ktps.png
similarity index 100%
rename from docs/en-us/sources/images/50ktps.png
rename to docs/zh-cn/user/sources/images/50ktps.png
diff --git a/docs/en-us/sources/images/cluster.jpg b/docs/zh-cn/user/sources/images/cluster.jpg
similarity index 100%
rename from docs/en-us/sources/images/cluster.jpg
rename to docs/zh-cn/user/sources/images/cluster.jpg
diff --git a/docs/en-us/sources/images/code-coverage.jpg b/docs/zh-cn/user/sources/images/code-coverage.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-coverage.jpg
rename to docs/zh-cn/user/sources/images/code-coverage.jpg
diff --git a/docs/en-us/sources/images/code-dependency.jpg b/docs/zh-cn/user/sources/images/code-dependency.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-dependency.jpg
rename to docs/zh-cn/user/sources/images/code-dependency.jpg
diff --git a/docs/en-us/sources/images/code-quality1.jpg b/docs/zh-cn/user/sources/images/code-quality1.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality1.jpg
rename to docs/zh-cn/user/sources/images/code-quality1.jpg
diff --git a/docs/en-us/sources/images/code-quality5.jpg b/docs/zh-cn/user/sources/images/code-quality5.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-quality5.jpg
rename to docs/zh-cn/user/sources/images/code-quality5.jpg
diff --git a/docs/en-us/sources/images/code-tendency.jpg b/docs/zh-cn/user/sources/images/code-tendency.jpg
similarity index 100%
rename from docs/en-us/sources/images/code-tendency.jpg
rename to docs/zh-cn/user/sources/images/code-tendency.jpg
diff --git a/docs/en-us/sources/images/context.png b/docs/zh-cn/user/sources/images/context.png
similarity index 100%
rename from docs/en-us/sources/images/context.png
rename to docs/zh-cn/user/sources/images/context.png
diff --git a/docs/en-us/sources/images/dubbo-architecture-future.jpg b/docs/zh-cn/user/sources/images/dubbo-architecture-future.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-architecture-future.jpg
rename to docs/zh-cn/user/sources/images/dubbo-architecture-future.jpg
diff --git a/docs/en-us/sources/images/dubbo-architecture-roadmap.jpg b/docs/zh-cn/user/sources/images/dubbo-architecture-roadmap.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-architecture-roadmap.jpg
rename to docs/zh-cn/user/sources/images/dubbo-architecture-roadmap.jpg
diff --git a/docs/en-us/sources/images/dubbo-architecture.jpg b/docs/zh-cn/user/sources/images/dubbo-architecture.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-architecture.jpg
rename to docs/zh-cn/user/sources/images/dubbo-architecture.jpg
diff --git a/docs/en-us/sources/images/dubbo-config-override.jpg b/docs/zh-cn/user/sources/images/dubbo-config-override.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-config-override.jpg
rename to docs/zh-cn/user/sources/images/dubbo-config-override.jpg
diff --git a/docs/en-us/sources/images/dubbo-config.jpg b/docs/zh-cn/user/sources/images/dubbo-config.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-config.jpg
rename to docs/zh-cn/user/sources/images/dubbo-config.jpg
diff --git a/docs/en-us/sources/images/dubbo-directly.jpg b/docs/zh-cn/user/sources/images/dubbo-directly.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-directly.jpg
rename to docs/zh-cn/user/sources/images/dubbo-directly.jpg
diff --git a/docs/en-us/sources/images/dubbo-properties-override.jpg b/docs/zh-cn/user/sources/images/dubbo-properties-override.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-properties-override.jpg
rename to docs/zh-cn/user/sources/images/dubbo-properties-override.jpg
diff --git a/docs/en-us/sources/images/dubbo-protocol.jpg b/docs/zh-cn/user/sources/images/dubbo-protocol.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-protocol.jpg
rename to docs/zh-cn/user/sources/images/dubbo-protocol.jpg
diff --git a/docs/en-us/sources/images/dubbo-redis-registry.jpg b/docs/zh-cn/user/sources/images/dubbo-redis-registry.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-redis-registry.jpg
rename to docs/zh-cn/user/sources/images/dubbo-redis-registry.jpg
diff --git a/docs/en-us/sources/images/dubbo-service-governance.jpg b/docs/zh-cn/user/sources/images/dubbo-service-governance.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-service-governance.jpg
rename to docs/zh-cn/user/sources/images/dubbo-service-governance.jpg
diff --git a/docs/en-us/sources/images/dubbo-token.jpg b/docs/zh-cn/user/sources/images/dubbo-token.jpg
similarity index 100%
rename from docs/en-us/sources/images/dubbo-token.jpg
rename to docs/zh-cn/user/sources/images/dubbo-token.jpg
diff --git a/docs/en-us/sources/images/future.jpg b/docs/zh-cn/user/sources/images/future.jpg
similarity index 100%
rename from docs/en-us/sources/images/future.jpg
rename to docs/zh-cn/user/sources/images/future.jpg
diff --git a/docs/en-us/sources/images/jta-xa.jpg b/docs/zh-cn/user/sources/images/jta-xa.jpg
similarity index 100%
rename from docs/en-us/sources/images/jta-xa.jpg
rename to docs/zh-cn/user/sources/images/jta-xa.jpg
diff --git a/docs/en-us/sources/images/lock-get-bean.jpg b/docs/zh-cn/user/sources/images/lock-get-bean.jpg
similarity index 100%
rename from docs/en-us/sources/images/lock-get-bean.jpg
rename to docs/zh-cn/user/sources/images/lock-get-bean.jpg
diff --git a/docs/en-us/sources/images/lock-init-context.jpg b/docs/zh-cn/user/sources/images/lock-init-context.jpg
similarity index 100%
rename from docs/en-us/sources/images/lock-init-context.jpg
rename to docs/zh-cn/user/sources/images/lock-init-context.jpg
diff --git a/docs/en-us/sources/images/multicast.jpg b/docs/zh-cn/user/sources/images/multicast.jpg
similarity index 100%
rename from docs/en-us/sources/images/multicast.jpg
rename to docs/zh-cn/user/sources/images/multicast.jpg
diff --git a/docs/en-us/sources/images/pojores.png b/docs/zh-cn/user/sources/images/pojores.png
similarity index 100%
rename from docs/en-us/sources/images/pojores.png
rename to docs/zh-cn/user/sources/images/pojores.png
diff --git a/docs/en-us/sources/images/pojotps.png b/docs/zh-cn/user/sources/images/pojotps.png
similarity index 100%
rename from docs/en-us/sources/images/pojotps.png
rename to docs/zh-cn/user/sources/images/pojotps.png
diff --git a/docs/en-us/sources/images/stub.jpg b/docs/zh-cn/user/sources/images/stub.jpg
similarity index 100%
rename from docs/en-us/sources/images/stub.jpg
rename to docs/zh-cn/user/sources/images/stub.jpg
diff --git a/docs/en-us/sources/images/subscribe-only.jpg b/docs/zh-cn/user/sources/images/subscribe-only.jpg
similarity index 100%
rename from docs/en-us/sources/images/subscribe-only.jpg
rename to docs/zh-cn/user/sources/images/subscribe-only.jpg
diff --git a/docs/en-us/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg b/docs/zh-cn/user/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg
similarity index 100%
rename from docs/en-us/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg
rename to docs/zh-cn/user/sources/images/subscribe-only.jpg-version=1&modificationDate=1326468174000.jpg
diff --git a/docs/en-us/sources/images/zookeeper.jpg b/docs/zh-cn/user/sources/images/zookeeper.jpg
similarity index 100%
rename from docs/en-us/sources/images/zookeeper.jpg
rename to docs/zh-cn/user/sources/images/zookeeper.jpg
diff --git a/md_json/docs.json b/md_json/docs.json
index 1c62a4c..111303b 100644
--- a/md_json/docs.json
+++ b/md_json/docs.json
@@ -1,809 +1,809 @@
 {
   "zh-cn": [
     {
-      "filename": "README.md",
+      "filename": "user/README.md",
       "__html": "<p>这篇文档详细讲解了<code>dubbo</code>的使用,基本涵盖<code>dubbo</code>的所有功能特性。</p>\n<p>如果你正依赖<code>dubbo</code>作为你业务工程的RPC通信框架,这里可以作为你的参考手册</p>\n"
     },
     {
-      "filename": "SUMMARY.md",
+      "filename": "user/SUMMARY.md",
       "__html": "<h1>Summary</h1>\n<ul>\n<li><a href=\"./preface/index.md\">1 入门</a>\n<ul>\n<li><a href=\"./preface/background.md\">1.1 背景</a></li>\n<li><a href=\"./preface/requirements.md\">1.2 需求</a></li>\n<li><a href=\"./preface/architecture.md\">1.3 架构</a></li>\n<li><a href=\"./preface/usage.md\">1.4 用法</a></li>\n</ul>\n</li>\n<li><a href=\"./quick-start.md\">2 快速启动</a></li>\n<li><a href=\"./dependencies.md\">3 依赖</a></li>\n<li><a href=\"./maturity.md\">4 成熟度</a></li>\n<li><a href=\" [...]
     },
     {
-      "filename": "benchmark-tool.md",
+      "filename": "user/benchmark-tool.md",
       "__html": "<h1>基准测试工具包</h1>\n<ul>\n<li>下载源码: git clone <a href=\"https://github.com/apache/incubator-dubbo.git\">https://github.com/apache/incubator-dubbo.git</a></li>\n<li>编译benchmark: cd incubator-dubbo/dubbo-test/dubbo-test-benchmark; mvn clean install</li>\n<li>解压 benchmark压缩包: incubator-dubbo/dubbo-test/dubbo-test-benchmark/target/dubbo-test-benchmark-2.6.2-SNAPSHOT.tar.gz</li>\n</ul>\n<p>阅读ReadMe.txt(内容如下,请以压缩包内的为准)</p>\n<ul>\n<li>\n<p>新建一个benchmark工程,如demo.benchmark</p>\n</l [...]
     },
     {
-      "filename": "best-practice.md",
+      "filename": "user/best-practice.md",
       "__html": "<h1>服务化最佳实践</h1>\n<h2>分包</h2>\n<p>建议将服务接口,服务模型,服务异常等均放在 API 包中,因为服务模型及异常也是 API 的一部分,同时,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。</p>\n<p>如果需要,也可以考虑在 API 包中放置一份 spring 的引用配置,这样使用方,只需在 spring 加载过程中引用此配置即可,配置建议放在模块的包目录下,以免冲突,如:<code>com/alibaba/china/xxx/dubbo-reference.xml</code>。</p>\n<h2>粒度</h2>\n<p>服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题,Dubbo 暂未提供分布式事务支持。</p>\n<p>服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸。</p>\n<p>不建议使用过于抽象的通用接口,如:<code>Map query(Ma
 p)</code>,这样的接口没有明确语义 [...]
     },
     {
-      "filename": "capacity-plan.md",
+      "filename": "user/capacity-plan.md",
       "__html": "<h1>容量规划</h1>\n<p>以下数据供参考:</p>\n<h2>使用 Dubbo 的会员服务项目</h2>\n<ul>\n<li>每天接收 4 亿次远程调用</li>\n<li>使用 12 台网站标配机器提供服务(8 核 CPU, 8G 内存)</li>\n<li>平均负载在 1 以下(对于 8 核 CPU 负载很低)</li>\n<li>平均响应时间 2.3 到 2.5 毫秒,网络开销约占 1.5 到 1.6 毫秒(和数据包大小有关)</li>\n</ul>\n<h2>使用 Dubbo 的产品授权服务项目</h2>\n<ul>\n<li>每天接收 3 亿次远程调用</li>\n<li>使用 8 台网站标配机器提供服务(8 核CPU,8G 内存)</li>\n<li>平均负载在 1 以下(对于 8 核 CPU 负载很低)</li>\n<li>平均响应时间 1.4 到 2.8 毫秒,网络开销约占 1.0 到 1.1 毫秒(和数据包大小有关)</li>\n</ul>\n"
     },
     {
-      "filename": "configuration/annotation.md",
+      "filename": "user/configuration/annotation.md",
       "__html": "<h1>注解配置</h1>\n<p>需要 <code>2.5.7</code> 及以上版本支持</p>\n<h2>服务提供方</h2>\n<h3><code>Service</code>注解暴露服务</h3>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">import</span> com.alibaba.dubbo.config.annotation.Service;\n \n<span class=\"hljs-meta\">@Service</span>(timeout = <span class=\"hljs-number\">5000</span>)\n<span class=\"hljs-keyword\">public</span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class</span> <span class=\"hljs-title\">AnnotateS [...]
     },
     {
-      "filename": "configuration/api.md",
+      "filename": "user/configuration/api.md",
       "__html": "<h1>API 配置</h1>\n<p>API 属性与配置项一对一,各属性含义,请参见:<a href=\"../references/xml/introduction.md\">配置参考手册</a>,比如:<code>ApplicationConfig.setName(&quot;xxx&quot;)</code> 对应  <code>&lt;dubbo:application name=&quot;xxx&quot; /&gt;</code> <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<h2>服务提供者</h2>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">import</span> com.alibaba.dubbo.rpc.config.ApplicationConfig;\n<span class=\"hljs-keyword\" [...]
     },
     {
-      "filename": "configuration/index.md",
+      "filename": "user/configuration/index.md",
       "__html": "<h1>配置</h1>\n"
     },
     {
-      "filename": "configuration/properties.md",
+      "filename": "user/configuration/properties.md",
       "__html": "<h1>属性配置</h1>\n<p>如果公共配置很简单,没有多注册中心,多协议等情况,或者想多个 Spring 容器想共享配置,可以使用 dubbo.properties 作为缺省配置。</p>\n<p>Dubbo 将自动加载 classpath 根目录下的 dubbo.properties,可以通过JVM启动参数 <code>-Ddubbo.properties.file=xxx.properties</code> 改变缺省配置位置。<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<h2>映射规则</h2>\n<p>将 XML 配置的标签名,加属性名,用点分隔,多个属性拆成多行</p>\n<ul>\n<li>比如:<code>dubbo.application.name=foo</code>等价于<code>&lt;dubbo:application name=&quot;foo&quot; /&gt;</code></li>\ [...]
     },
     {
-      "filename": "configuration/xml.md",
+      "filename": "user/configuration/xml.md",
       "__html": "<h1>XML 配置</h1>\n<p>有关 XML 的详细配置项,请参见:<a href=\"../references/xml/introduction.md\">配置参考手册</a>。如果不想使用 Spring 配置,而希望通过 API 的方式进行调用,请参见:<a href=\"./api.md\">API配置</a>。想知道如何使用配置,请参见:<a href=\"../quick-start.md\">快速启动</a>。</p>\n<h2>provider.xml 示例</h2>\n<pre><code class=\"language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?</span>xml version=<span class=\"hljs-string\">\"1.0\"</span> encoding=<span class=\"hljs-string\">\"UTF-8\"</span><span class=\"hljs-meta\" [...]
     },
     {
-      "filename": "coveragence.md",
+      "filename": "user/coveragence.md",
       "__html": "<h1>测试覆盖率报告</h1>\n<p>基于 <code>2.0.12</code> 版本,统计于 2012-02-03</p>\n<p><img src=\"sources/images/code-quality1.jpg\" alt=\"/sources/images/code-quality1.jpg\"></p>\n<p><img src=\"sources/images/code-quality5.jpg\" alt=\"/sources/images/code-quality5.jpg\"></p>\n<p><img src=\"sources/images/code-coverage.jpg\" alt=\"/sources/images/code-coverage.jpg\"></p>\n<p><img src=\"sources/images/code-tendency.jpg\" alt=\"/sources/images/code-tendency.jpg\"></p>\n<p><img src=\"source [...]
     },
     {
-      "filename": "demos/accesslog.md",
+      "filename": "user/demos/accesslog.md",
       "__html": "<h1>访问日志</h1>\n<p>如果你想记录每一次请求信息,可开启访问日志,类似于apache的访问日志。<strong>注意</strong>:此日志量比较大,请注意磁盘容量。</p>\n<p>将访问日志输出到当前应用的log4j日志:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">accesslog</span>=<span class=\"hljs-string\">\"true\"</span> /&gt;</span>\n</code></pre>\n<p>将访问日志输出到指定文件:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:prot [...]
     },
     {
-      "filename": "demos/async-call.md",
+      "filename": "user/demos/async-call.md",
       "__html": "<h1>异步调用</h1>\n<p>基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<p><img src=\"../sources/images/future.jpg\" alt=\"/user-guide/images/future.jpg\"></p>\n<p>在 consumer.xml 中配置:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:reference</span> <span class=\"hljs-attr\">id</span>=<span class=\"hljs-string\">\"fooService\"</span> <span cla [...]
     },
     {
-      "filename": "demos/attachment.md",
+      "filename": "user/demos/attachment.md",
       "__html": "<h1>隐式参数</h1>\n<p>可以通过 <code>RpcContext</code> 上的 <code>setAttachment</code> 和 <code>getAttachment</code> 在服务消费方和提供方之间进行参数的隐式传递。 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<p><img src=\"../sources/images/context.png\" alt=\"/user-guide/images/context.png\"></p>\n<h4>在服务消费方端设置隐式参数</h4>\n<p><code>setAttachment</code> 设置的 KV 对,在完成下面一次远程调用会被清空,即多次远程调用要多次设置。</p>\n<pre><code class=\"language-xml\">RpcContext.getContext().setAttachment(\"index [...]
     },
     {
-      "filename": "demos/callback-parameter.md",
+      "filename": "user/demos/callback-parameter.md",
       "__html": "<h1>参数回调</h1>\n<p>参数回调方式与调用本地 callback 或 listener 相同,只需要在 Spring 的配置文件中声明哪个参数是 callback 类型即可。Dubbo 将基于长连接生成反向代理,这样就可以从服务器端调用客户端逻辑 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。可以参考 <a href=\"https://github.com/apache/incubator-dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/callback\">dubbo 项目中的示例代码</a>。</p>\n<h4>服务接口示例</h4>\n<h6>CallbackService.java</h6>\n<pre><code class=\"language-java\"><span class= [...]
     },
     {
-      "filename": "demos/concurrency-control.md",
+      "filename": "user/demos/concurrency-control.md",
       "__html": "<h1>并发控制</h1>\n<h2>配置样例</h2>\n<h3>样例 1</h3>\n<p>限制 <code>com.foo.BarService</code> 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\">\"com.foo.BarService\"</span> <span class=\"hljs-attr\">executes</span>=<span class=\"hljs-string\">\"10\"</span> /&gt;</span>\n</code></pre>\n<h3>样例 2</h3>\n<p>限制 <code> [...]
     },
     {
-      "filename": "demos/config-connections.md",
+      "filename": "user/demos/config-connections.md",
       "__html": "<h1>连接控制</h1>\n<h2>服务端连接控制</h2>\n<p>限制服务器端接受的连接不能超过 10 个 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:provider</span> <span class=\"hljs-attr\">protocol</span>=<span class=\"hljs-string\">\"dubbo\"</span> <span class=\"hljs-attr\">accepts</span>=<span class=\"hljs-string\">\"10\"</span> /&gt;</span>\n</code></pre>\n<p>或</p>\n<pre><code class=\" [...]
     },
     {
-      "filename": "demos/config-rule.md",
+      "filename": "user/demos/config-rule.md",
       "__html": "<h1>配置规则</h1>\n<p>向注册中心写入动态配置覆盖规则 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。该功能通常由监控中心或治理中心的页面完成。</p>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10.20.153.10:2181\"</span>));\nregistry.register(URL.valueOf(<span class=\"hljs-string\ [...]
     },
     {
-      "filename": "demos/context.md",
+      "filename": "user/demos/context.md",
       "__html": "<h1>上下文信息</h1>\n<p>上下文中存放的是当前调用过程中所需的环境信息。所有配置信息都将转换为 URL 的参数,参见 <a href=\"../references/xml/introduction.md\">schema 配置参考手册</a> 中的<strong>对应URL参数</strong>一列。</p>\n<p>RpcContext 是一个 ThreadLocal 的临时状态记录器,当接收到 RPC 请求,或发起 RPC 请求时,RpcContext 的状态都会变化。比如:A 调 B,B 再调 C,则 B 机器上,在 B 调 C 之前,RpcContext 记录的是 A 调 B 的信息,在 B 调 C 之后,RpcContext 记录的是 B 调 C 的信息。</p>\n<h2>服务消费方</h2>\n<pre><code class=\"language-java\"><span class=\"hljs-comment\">// 远程调用</span>\nxxxService.xxx();\n<span clas [...]
     },
     {
-      "filename": "demos/delay-publish.md",
+      "filename": "user/demos/delay-publish.md",
       "__html": "<h1>延迟暴露</h1>\n<p>如果你的服务需要预热时间,比如初始化缓存,等待相关资源就位等,可以使用 delay 进行延迟暴露。</p>\n<h2>延迟 5 秒暴露服务</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">delay</span>=<span class=\"hljs-string\">\"5000\"</span> /&gt;</span>\n</code></pre>\n<h2>延迟到 Spring 初始化完成后,再暴露服务 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></h2>\n<pre><code class=\"language-xml\"><span class=\"hljs [...]
     },
     {
-      "filename": "demos/distributed-transaction.md",
+      "filename": "user/demos/distributed-transaction.md",
       "__html": "<h1>分布式事务</h1>\n<p>分布式事务基于 JTA/XA 规范实现 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。</p>\n<p>两阶段提交:</p>\n<p><img src=\"../sources/images/jta-xa.jpg\" alt=\"/user-guide/images/jta-xa.jpg\"></p>\n<hr class=\"footnotes-sep\">\n<section class=\"footnotes\">\n<ol class=\"footnotes-list\">\n<li id=\"fn1\" class=\"footnote-item\"><p>本功能暂未实现 <a href=\"#fnref1\" class=\"footnote-backref\">↩︎</a></p>\n</li>\n</ol>\n</section>\n"
     },
     {
-      "filename": "demos/dump.md",
+      "filename": "user/demos/dump.md",
       "__html": "<p>当业务线程池满时,我们需要知道线程都在等待哪些资源、条件,以找到系统的瓶颈点或异常点。dubbo通过Jstack自动导出线程堆栈来保留现场,方便排查问题</p>\n<p>默认策略:</p>\n<ul>\n<li>导出路径,user.home标识的用户主目录</li>\n<li>导出间隔,最短间隔允许每隔10分钟导出一次</li>\n</ul>\n<p>指定导出路径:</p>\n<pre><code class=\"language-properties\"># dubbo.properties\ndubbo.application.dump.directory=/tmp\n</code></pre>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:application</span> <span class=\"hljs-attr\">...</span>&gt;</span>\n     [...]
     },
     {
-      "filename": "demos/echo-service.md",
+      "filename": "user/demos/echo-service.md",
       "__html": "<h1>回声测试</h1>\n<p>回声测试用于检测服务是否可用,回声测试按照正常请求流程执行,能够测试整个调用是否通畅,可用于监控。</p>\n<p>所有服务自动实现 <code>EchoService</code> 接口,只需将任意服务引用强制转型为 <code>EchoService</code>,即可使用。</p>\n<p>Spring 配置:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:reference</span> <span class=\"hljs-attr\">id</span>=<span class=\"hljs-string\">\"memberService\"</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\">\"com.xxx.MemberServ [...]
     },
     {
-      "filename": "demos/events-notify.md",
+      "filename": "user/demos/events-notify.md",
       "__html": "<h1>事件通知</h1>\n<p>在调用之前、调用之后、出现异常时,会触发 <code>oninvoke</code>、<code>onreturn</code>、<code>onthrow</code> 三个事件,可以配置当事件发生时,通知哪个类的哪个方法 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。</p>\n<h4>服务提供者与消费者共享服务接口</h4>\n<pre><code class=\"language-java\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">interface</span> <span class=\"hljs-title\">IDemoService</span> </span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public</spa [...]
     },
     {
-      "filename": "demos/explicit-target.md",
+      "filename": "user/demos/explicit-target.md",
       "__html": "<h1>直连提供者</h1>\n<p>在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。</p>\n<p><img src=\"../sources/images/dubbo-directly.jpg\" alt=\"/user-guide/images/dubbo-directly.jpg\"></p>\n<h2>通过 XML 配置</h2>\n<p>如果是线上需求需要点对点,可在 <code>&lt;dubbo:reference&gt;</code> 中配置 url 指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下  <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-xml\"><span class=\" [...]
     },
     {
-      "filename": "demos/fault-tolerent-strategy.md",
+      "filename": "user/demos/fault-tolerent-strategy.md",
       "__html": "<h1>集群容错</h1>\n<p>在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。</p>\n<p><img src=\"../sources/images/cluster.jpg\" alt=\"cluster\"></p>\n<p>各节点关系:</p>\n<ul>\n<li>这里的 <code>Invoker</code> 是 <code>Provider</code> 的一个可调用 <code>Service</code> 的抽象,<code>Invoker</code> 封装了 <code>Provider</code> 地址及 <code>Service</code> 接口信息</li>\n<li><code>Directory</code> 代表多个 <code>Invoker</code>,可以把它看成 <code>List&lt;Invoker&gt;</code> ,但与 <code>List</code> 不同的是,它的值可能是动态变化的,比如注册中心推送变更</li>\n<li> [...]
     },
     {
-      "filename": "demos/generic-reference.md",
+      "filename": "user/demos/generic-reference.md",
       "__html": "<h1>使用泛化调用</h1>\n<p>泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 <code>Map</code> 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 <code>GenericService</code> 调用所有服务实现。</p>\n<h2>通过 Spring 使用泛化调用</h2>\n<p>在 Spring 配置申明 <code>generic=&quot;true&quot;</code>:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:reference</span> <span class=\"hljs-attr\">id</span>=<span class=\"hljs-string\">\"barService\"</span> <span class=\"hljs-attr\ [...]
     },
     {
-      "filename": "demos/generic-service.md",
+      "filename": "user/demos/generic-service.md",
       "__html": "<h1>实现泛化调用</h1>\n<p>泛接口实现方式主要用于服务器端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的远程服务Mock框架,可通过实现GenericService接口处理所有服务请求。</p>\n<p>在 Java 代码中实现 <code>GenericService</code> 接口:</p>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">package</span> com.foo;\n<span class=\"hljs-keyword\">public</span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class</span> <span class=\"hljs-title\">MyGenericService</span> <span class=\"hljs-keyword\">im [...]
     },
     {
-      "filename": "demos/graceful-shutdown.md",
+      "filename": "user/demos/graceful-shutdown.md",
       "__html": "<h1>优雅停机</h1>\n<p>Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果用户使用 <code>kill -9 PID</code> 等强制关闭指令,是不会执行优雅停机的,只有通过 <code>kill PID</code> 时,才会执行。</p>\n<h2>原理</h2>\n<h3>服务提供方</h3>\n<ul>\n<li>停止时,先标记为不接收新请求,新请求过来时直接报错,让客户端重试其它机器。</li>\n<li>然后,检测线程池中的线程是否正在运行,如果有,等待所有线程执行完成,除非超时,则强制关闭。</li>\n</ul>\n<h3>服务消费方</h3>\n<ul>\n<li>停止时,不再发起新的调用请求,所有新的调用在客户端即报错。</li>\n<li>然后,检测有没有请求的响应还没有返回,等待响应返回,除非超时,则强制关闭。</li>\n</ul>\n<h2>设置方式</h2>\n<p>设置优雅停机超时时间,缺省超时时间是 10 秒,如果超时则强制关闭。</p>\n<pre> [...]
     },
     {
-      "filename": "demos/group-merger.md",
+      "filename": "user/demos/group-merger.md",
       "__html": "<h1>分组聚合</h1>\n<p>按组合并返回结果 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。</p>\n<p>相关代码可以参考 <a href=\"https://github.com/apache/incubator-dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/merge\">dubbo 项目中的示例</a></p>\n<h2>配置</h2>\n<p>搜索所有分组</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">du [...]
     },
     {
-      "filename": "demos/hostname-binding.md",
+      "filename": "user/demos/hostname-binding.md",
       "__html": "<h1>主机绑定</h1>\n<h2>查找顺序</h2>\n<p>缺省主机 IP 查找顺序:</p>\n<ul>\n<li>通过 <code>LocalHost.getLocalHost()</code> 获取本机地址。</li>\n<li>如果是 <code>127.*</code> 等 loopback 地址,则扫描各网卡,获取网卡 IP。</li>\n</ul>\n<h2>主机配置</h2>\n<p>注册的地址如果获取不正确,比如需要注册公网地址,可以:</p>\n<ol>\n<li>\n<p>可以在 <code>/etc/hosts</code> 中加入:机器名 公网 IP,比如:</p>\n<pre><code>test1 205.182.23.201\n</code></pre>\n</li>\n<li>\n<p>在 <code>dubbo.xml</code> 中加入主机地址的配置:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<s [...]
     },
     {
-      "filename": "demos/index.md",
+      "filename": "user/demos/index.md",
       "__html": "<h1>示例</h1>\n"
     },
     {
-      "filename": "demos/introduction.md",
+      "filename": "user/demos/introduction.md",
       "__html": "<blockquote>\n<p><img src=\"../sources/images/check.gif\" alt=\"warning\">想完整的运行起来,请参见:<a href=\"quickstart.md\">快速启动</a>,这里只列出各种场景的配置方式。\n<img src=\"../sources/images/check.gif\" alt=\"warning\">以下示例全部使用基于Spring的<a href=\"../configuration/xml.md\">Xml配置</a>作为参考,如果不想使用Spring,而希望通过API的方式进行调用,请参见:<a href=\"../configuration/api.md\">API配置</a></p>\n</blockquote>\n"
     },
     {
-      "filename": "demos/lazy-connect.md",
+      "filename": "user/demos/lazy-connect.md",
       "__html": "<h1>延迟连接</h1>\n<p>延迟连接用于减少长连接数。当有调用发起时,再创建长连接。<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">name</span>=<span class=\"hljs-string\">\"dubbo\"</span> <span class=\"hljs-attr\">lazy</span>=<span class=\"hljs-string\">\"true\"</span> /&gt;</span>\n</code></pre>\n<hr class=\"footnotes-sep\">\n<section class=\ [...]
     },
     {
-      "filename": "demos/loadbalance.md",
+      "filename": "user/demos/loadbalance.md",
       "__html": "<h1>负载均衡</h1>\n<p>在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 <code>random</code> 随机调用。</p>\n<p>可以自行扩展负载均衡策略,参见:<a href=\"http://dubbo.apache.org/books/dubbo-dev-book/impls/load-balance.html\">负载均衡扩展</a></p>\n<h2>负载均衡策略</h2>\n<h3>Random LoadBalance</h3>\n<ul>\n<li><strong>随机</strong>,按权重设置随机概率。</li>\n<li>在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。</li>\n</ul>\n<h3>RoundRobin LoadBalance</h3>\n<ul>\n<li><strong>轮循</strong>,按公约后的权重设置轮循比率。</li>\n<li>存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没 [...]
     },
     {
-      "filename": "demos/local-call.md",
+      "filename": "user/demos/local-call.md",
       "__html": "<h1>本地调用</h1>\n<p>本地调用使用了 injvm 协议,是一个伪协议,它不开启端口,不发起远程调用,只在 JVM 内直接关联,但执行 Dubbo 的 Filter 链。</p>\n<h2>配置</h2>\n<p>定义 injvm 协议</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">name</span>=<span class=\"hljs-string\">\"injvm\"</span> /&gt;</span>\n</code></pre>\n<p>设置默认协议</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:provider</sp [...]
     },
     {
-      "filename": "demos/local-mock.md",
+      "filename": "user/demos/local-mock.md",
       "__html": "<h1>本地伪装</h1>\n<p>本地伪装 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 通常用于服务降级,比如某验权服务,当服务提供方全部挂掉后,客户端不抛出异常,而是通过 Mock 数据返回授权失败。</p>\n<p>在 spring 配置文件中按以下方式配置:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:reference</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\">\"com.foo.BarService\"</span> <span class=\"hljs-attr\">mock</span>=<span class=\"hljs-string\">\"true [...]
     },
     {
-      "filename": "demos/local-stub.md",
+      "filename": "user/demos/local-stub.md",
       "__html": "<h1>本地存根</h1>\n<p>远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。</p>\n<p><img src=\"../sources/images/stub.jpg\" alt=\"/user-guide/images/stub.jpg\"></p>\n<p>在 spring 配置文件中按以下方式配置:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hl [...]
     },
     {
-      "filename": "demos/logger-strategy.md",
+      "filename": "user/demos/logger-strategy.md",
       "__html": "<h1>日志适配</h1>\n<p>自 <code>2.2.1</code> 开始,dubbo 开始内置 log4j、slf4j、jcl、jdk 这些日志框架的适配 [^1],也可以通过以下方式显示配置日志输出策略:</p>\n<ol start=\"0\">\n<li>\n<p>命令行</p>\n<pre><code class=\"language-sh\"></code></pre>\n</li>\n</ol>\n<p>java -Ddubbo.application.logger=log4j</p>\n<pre><code>\n0. 在 `dubbo.properties` 中指定\n\n    ```\ndubbo.application.logger=log4j\n</code></pre>\n<ol start=\"0\">\n<li>\n<p>在 <code>dubbo.xml</code> 中配置</p>\n<pre><code class=\"language-xml\"></code></pre>\n</li>\n [...]
     },
     {
-      "filename": "demos/multi-protocols.md",
+      "filename": "user/demos/multi-protocols.md",
       "__html": "<h1>多协议</h1>\n<p>Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。</p>\n<h2>不同服务不同协议</h2>\n<p>不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议</p>\n<pre><code class=\"language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?</span>xml version=<span class=\"hljs-string\">\"1.0\"</span> encoding=<span class=\"hljs-string\">\"UTF-8\"</span><span class=\"hljs-meta\">?&gt;</span></span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">beans</span> <span class=\"hljs-attr\ [...]
     },
     {
-      "filename": "demos/multi-registry.md",
+      "filename": "user/demos/multi-registry.md",
       "__html": "<h1>多注册中心</h1>\n<p>Dubbo 支持同一服务向多注册中心同时注册,或者不同服务分别注册到不同的注册中心上去,甚至可以同时引用注册在不同注册中心上的同名服务。另外,注册中心是支持自定义扩展的 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。</p>\n<h2>多注册中心注册</h2>\n<p>比如:中文站有些服务来不及在青岛部署,只在杭州部署,而青岛的其它应用需要引用此服务,就可以将服务同时注册到两个注册中心。</p>\n<pre><code class=\"language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?</span>xml version=<span class=\"hljs-string\">\"1.0\"</span> encoding=<span class=\"hljs-string\">\"UTF-8\"</span><span [...]
     },
     {
-      "filename": "demos/multi-versions.md",
+      "filename": "user/demos/multi-versions.md",
       "__html": "<h1>多版本</h1>\n<p>当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。</p>\n<p>可以按照以下的步骤进行版本迁移:</p>\n<ol start=\"0\">\n<li>在低压力时间段,先升级一半提供者为新版本</li>\n<li>再将所有消费者升级为新版本</li>\n<li>然后将剩下的一半提供者升级为新版本</li>\n</ol>\n<p>老版本服务提供者配置:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\">\"com.foo.BarService\"</span> <span class=\"hljs-attr\">version</span>=<span  [...]
     },
     {
-      "filename": "demos/netty4.md",
+      "filename": "user/demos/netty4.md",
       "__html": "<p>dubbo 2.5.6版本新增了对netty4通信模块的支持,启用方式如下</p>\n<p>provider端:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">server</span>=<span class=\"hljs-string\">\"netty4\"</span> /&gt;</span>\n</code></pre>\n<p>或</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:provider</span> <span class=\"hljs-attr\">server</span>=<span class=\"hljs-stri [...]
     },
     {
-      "filename": "demos/parameter-validation.md",
+      "filename": "user/demos/parameter-validation.md",
       "__html": "<h1>参数验证</h1>\n<p>参数验证功能 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 是基于 <a href=\"https://jcp.org/en/jsr/detail?id=303\">JSR303</a> 实现的,用户只需标识 JSR303 标准的验证 annotation,并通过声明 filter 来实现验证 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>Maven 依赖</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency</span>&gt;</span>\n    <span class=\"hljs-tag\">&lt;<span cla [...]
     },
     {
-      "filename": "demos/preflight-check.md",
+      "filename": "user/demos/preflight-check.md",
       "__html": "<h1>启动时检查</h1>\n<p>Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认  <code>check=&quot;true&quot;</code>。</p>\n<p>可以通过 <code>check=&quot;false&quot;</code> 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。</p>\n<p>另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,拿到 null 引用,如果 <code>check=&quot;false&quot;</code>,总是会返回引用,当服务恢复时,能自动连上。</p>\n<h2>示例</h2>\n<h3>通过 spring 配置文件</h3>\n<p>关闭某个服务的启动时检查 (没有提供者时报错):</p>\n<pre><code class=\"language-xml\">< [...]
     },
     {
-      "filename": "demos/reference-config-cache.md",
+      "filename": "user/demos/reference-config-cache.md",
       "__html": "<h1>ReferenceConfig 缓存</h1>\n<p><code>ReferenceConfig</code> 实例很重,封装了与注册中心的连接以及与提供者的连接,需要缓存。否则重复生成 <code>ReferenceConfig</code> 可能造成性能问题并且会有内存和连接泄漏。在 API 方式编程时,容易忽略此问题。</p>\n<p>因此,自 <code>2.4.0</code> 版本开始, dubbo 提供了简单的工具类 <code>ReferenceConfigCache</code>用于缓存 <code>ReferenceConfig</code> 实例。</p>\n<p>使用方式如下:</p>\n<pre><code class=\"language-java\">ReferenceConfig&lt;XxxService&gt; reference = <span class=\"hljs-keyword\">new</span> ReferenceConfig&lt;XxxService&gt;();\nr [...]
     },
     {
-      "filename": "demos/registry-only.md",
+      "filename": "user/demos/registry-only.md",
       "__html": "<h1>只注册</h1>\n<p>如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务。这个时候,可以让服务提供者方只注册服务到另一注册中心,而不从另一注册中心订阅服务。</p>\n<p>禁用订阅配置</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:registry</span> <span class=\"hljs-attr\">id</span>=<span class=\"hljs-string\">\"hzRegistry\"</span> <span class=\"hljs-attr\">address</span>=<span class=\"hljs-string\">\"10.20.153.10:9090\"</span> /&gt;</span>\n<span class=\"h [...]
     },
     {
-      "filename": "demos/result-cache.md",
+      "filename": "user/demos/result-cache.md",
       "__html": "<h1>结果缓存</h1>\n<p>结果缓存 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>,用于加速热门数据的访问速度,Dubbo 提供声明式缓存,以减少用户加缓存的工作量 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>缓存类型</h2>\n<ul>\n<li><code>lru</code> 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。</li>\n<li><code>threadlocal</code> 当前线程缓存,比如一个页面渲染,用到很多 portal,每个 portal 都要去查用户信息,通过线程缓存,可以减少这种多余访问。</li>\n<li><code>jcache</code> 与 <a href=\"http://jcp.org/en/jsr/detail?id=107%27\">JSR1 [...]
     },
     {
-      "filename": "demos/routing-rule.md",
+      "filename": "user/demos/routing-rule.md",
       "__html": "<h1>路由规则</h1>\n<p>路由规则 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 决定一次 dubbo 服务调用的目标服务器,分为条件路由规则和脚本路由规则,并且支持可扩展 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>写入路由规则</h2>\n<p>向注册中心写入路由规则的操作通常由监控中心或治理中心的页面完成</p>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegist [...]
     },
     {
-      "filename": "demos/serialization.md",
+      "filename": "user/demos/serialization.md",
       "__html": "<h1>在Dubbo中使用高效的Java序列化(Kryo和FST)</h1>\n<h2>启用Kryo和FST</h2>\n<p>使用Kryo和FST非常简单,只需要在dubbo RPC的XML配置中添加一个属性即可:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">name</span>=<span class=\"hljs-string\">\"dubbo\"</span> <span class=\"hljs-attr\">serialization</span>=<span class=\"hljs-string\">\"kryo\"</span>/&gt;</span>\n</code></pre>\n<pre><code class=\"language-xml\"><span class=\" [...]
     },
     {
-      "filename": "demos/service-container.md",
+      "filename": "user/demos/service-container.md",
       "__html": "<h1>服务容器</h1>\n<p>服务容器是一个 standalone 的启动程序,因为后台服务不需要 Tomcat 或 JBoss 等 Web 容器的功能,如果硬要用 Web 容器去加载服务提供方,增加复杂性,也浪费资源。</p>\n<p>服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。</p>\n<p>服务容器的加载内容可以扩展,内置了 spring, jetty, log4j 等加载,可通过<a href=\"http://dubbo.apache.org/books/dubbo-dev-book/impls/container.html\">容器扩展点</a>进行扩展。配置配在 java 命令的 -D 参数或者 <code>dubbo.properties</code> 中。</p>\n<h2>容器类型</h2>\n<h3>Spring Container</h3>\n<ul>\n<li>\n<p>自动加载 <code>META-INF/spring</code> 目录下的所有 Sp [...]
     },
     {
-      "filename": "demos/service-downgrade.md",
+      "filename": "user/demos/service-downgrade.md",
       "__html": "<h1>服务降级</h1>\n<p>可以通过服务降级功能 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。</p>\n<p>向注册中心写入动态配置覆盖规则:</p>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10.20.153.10:2181\"</span>));\nregistry.register(URL.valueOf( [...]
     },
     {
-      "filename": "demos/service-group.md",
+      "filename": "user/demos/service-group.md",
       "__html": "<h1>服务分组</h1>\n<p>当一个接口有多种实现时,可以用 group 区分。</p>\n<h2>服务</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">group</span>=<span class=\"hljs-string\">\"feedback\"</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\">\"com.xxx.IndexService\"</span> /&gt;</span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr [...]
     },
     {
-      "filename": "demos/static-service.md",
+      "filename": "user/demos/static-service.md",
       "__html": "<h1>静态服务</h1>\n<p>有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:registry</span> <span class=\"hljs-attr\">address</span>=<span class=\"hljs-string\">\"10.20.141.150:9090\"</span> <span class=\"hljs-attr\">dynamic</span>=<span class=\"hljs-string\">\"false\"</span> /&gt;</span>\n</code></pre>\n<p>或者</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class= [...]
     },
     {
-      "filename": "demos/stickiness.md",
+      "filename": "user/demos/stickiness.md",
       "__html": "<h1>粘滞连接</h1>\n<p>粘滞连接用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非该提供者挂了,再连另一台。</p>\n<p>粘滞连接将自动开启<a href=\"./lazy-connect.md\">延迟连接</a>,以减少长连接数。</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">name</span>=<span class=\"hljs-string\">\"dubbo\"</span> <span class=\"hljs-attr\">sticky</span>=<span class=\"hljs-string\">\"true\"</span> /&gt;</span>\n</code></pre>\n"
     },
     {
-      "filename": "demos/subscribe-only.md",
+      "filename": "user/demos/subscribe-only.md",
       "__html": "<h1>只订阅</h1>\n<p>为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。</p>\n<p>可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。</p>\n<p><img src=\"../sources/images/subscribe-only.jpg\" alt=\"/user-guide/images/subscribe-only.jpg\"></p>\n<p>禁用注册配置</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:registry</span> <span class=\"hljs-attr\">address</span>=<span class=\"hljs-string\">\"10.20.153.10:909 [...]
     },
     {
-      "filename": "demos/thread-model.md",
+      "filename": "user/demos/thread-model.md",
       "__html": "<h1>线程模型</h1>\n<p>如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。</p>\n<p>但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。</p>\n<p>如果用 IO 线程处理事件,又在事件处理过程中发起新的 IO 请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。</p>\n<p><img src=\"../sources/images/dubbo-protocol.jpg\" alt=\"dubbo-protocol\"></p>\n<p>因此,需要通过不同的派发策略和不同的线程池配置的组合来应对不同的场景:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:pro [...]
     },
     {
-      "filename": "demos/token-authorization.md",
+      "filename": "user/demos/token-authorization.md",
       "__html": "<h1>令牌验证</h1>\n<p>通过令牌验证在注册中心控制权限,以决定要不要下发令牌给消费者,可以防止消费者绕过注册中心访问提供者,另外通过注册中心可灵活改变授权方式,而不需修改或升级提供者</p>\n<p><img src=\"../sources/images/dubbo-token.jpg\" alt=\"/user-guide/images/dubbo-token.jpg\"></p>\n<p>可以全局设置开启令牌验证:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-comment\">&lt;!--随机token令牌,使用UUID生成--&gt;</span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:provider</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\"> [...]
     },
     {
-      "filename": "dependencies.md",
+      "filename": "user/dependencies.md",
       "__html": "<h1>依赖</h1>\n<h2>必须依赖</h2>\n<p>JDK 1.6+ <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<h2>缺省依赖</h2>\n<p>通过 <code>mvn dependency:tree &gt; dep.log</code> 命令分析,Dubbo 缺省依赖以下三方库:</p>\n<pre><code>[INFO] +- com.alibaba:dubbo:jar:2.5.9-SNAPSHOT:compile\n[INFO] |  +- org.springframework:spring-context:jar:4.3.10.RELEASE:compile\n[INFO] |  +- org.javassist:javassist:jar:3.21.0-GA:compile\n[INFO] |  \\- org.jboss.netty:netty:jar:3.2.5.Final:compile\ [...]
     },
     {
-      "filename": "maturity.md",
+      "filename": "user/maturity.md",
       "__html": "<h1>成熟度</h1>\n<h2>功能成熟度</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>Maturity</th>\n<th>Strength</th>\n<th>Problem</th>\n<th>Advise</th>\n<th>User</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>并发控制</td>\n<td>Tested</td>\n<td>并发控制</td>\n<td></td>\n<td>试用</td>\n<td></td>\n</tr>\n<tr>\n<td>连接控制</td>\n<td>Tested</td>\n<td>连接数控制</td>\n<td></td>\n<td>试用</td>\n<td></td>\n</tr>\n<tr>\n<td>直连提供者</td>\n<td>Tested</td>\n<td>点对点直连服务提供方,用于测试</td>\n<td></td>\n<td>测试环境使用</td>\n<td>A [...]
     },
     {
-      "filename": "perf-test.md",
+      "filename": "user/perf-test.md",
       "__html": "<h1>性能测试报告</h1>\n<h2>测试说明</h2>\n<ol start=\"0\">\n<li>本次性能测试,测试了 dubbo 2.0 所有支持的协议在不同大小和数据类型下的表现,并与 dubbo 1.0 进行了对比。</li>\n<li>整体性能相比 1.0 有了提升,平均提升 10%,使用 dubbo 2.0 新增的 dubbo 序列化还能获得 10%~50% 的性能提升,详见下面的性能数据。</li>\n<li>稳定性测试中由于将底层通信框架从 mina 换成 netty,old 区对象的增长大大减少,50 小时运行,增长不到 200m,无 fullgc。</li>\n<li>存在的问题:在 50k 数据的时候 2.0 性能不如 1.0,怀疑可能是缓冲区设置的问题,下版本会进一步确认。</li>\n</ol>\n<h2>测试环境</h2>\n<h3>硬件部署与参数调整</h3>\n<table>\n<thead>\n<tr>\n<th>机型</th>\n<th>CPU</th>\n<th>内存</th>\n<th>网 [...]
     },
     {
-      "filename": "preface/architecture.md",
+      "filename": "user/preface/architecture.md",
       "__html": "<h1>架构</h1>\n<p><img src=\"../sources/images/dubbo-architecture.jpg\" alt=\"dubbo-architucture\"></p>\n<h5>节点角色说明</h5>\n<table>\n<thead>\n<tr>\n<th>节点</th>\n<th>角色说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Provider</code></td>\n<td>暴露服务的服务提供方</td>\n</tr>\n<tr>\n<td><code>Consumer</code></td>\n<td>调用远程服务的服务消费方</td>\n</tr>\n<tr>\n<td><code>Registry</code></td>\n<td>服务注册与发现的注册中心</td>\n</tr>\n<tr>\n<td><code>Monitor</code></td>\n<td>统计服务的调用次数和调用时间的监控中心</td>\n</tr>\n< [...]
     },
     {
-      "filename": "preface/background.md",
+      "filename": "user/preface/background.md",
       "__html": "<h1>背景</h1>\n<p>随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。</p>\n<p><img src=\"../sources/images/dubbo-architecture-roadmap.jpg\" alt=\"image\"></p>\n<h4>单一应用架构</h4>\n<p>当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。</p>\n<h4>垂直应用架构</h4>\n<p>当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。</p>\n<h4>分布式服务架构</h4>\n<p>当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,�
 ��渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时 [...]
     },
     {
-      "filename": "preface/index.md",
+      "filename": "user/preface/index.md",
       "__html": "<h1>入门</h1>\n"
     },
     {
-      "filename": "preface/requirements.md",
+      "filename": "user/preface/requirements.md",
       "__html": "<h1>需求</h1>\n<p><img src=\"../sources/images/dubbo-service-governance.jpg\" alt=\"image\"></p>\n<p>在大规模服务化之前,应用可能只是通过 RMI 或 Hessian 等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过 F5 等硬件进行负载均衡。</p>\n<p><strong>当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。</strong> 此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和 Failover,降低对 F5 硬件负载均衡器的依赖,也能减少部分成本。</p>\n<p><strong>当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。</strong>  这时,需要自动画出应用间的依
 赖关系图,以帮助架构师理清理关系。</ [...]
     },
     {
-      "filename": "preface/usage.md",
+      "filename": "user/preface/usage.md",
       "__html": "<h1>用法</h1>\n<h2>本地服务 Spring 配置</h2>\n<p>local.xml:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">bean</span> <span class=\"hljs-attr\">id</span>=<span class=\"hljs-string\">“xxxService”</span> <span class=\"hljs-attr\">class</span>=<span class=\"hljs-string\">“com.xxx.XxxServiceImpl”</span> /&gt;</span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">bean</span> <span class=\"hljs-attr\">id</span>=<span class=\"hlj [...]
     },
     {
-      "filename": "quick-start.md",
+      "filename": "user/quick-start.md",
       "__html": "<h1>快速启动</h1>\n<p>Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展进行加载。</p>\n<p>如果不想使用 Spring 配置,可以通过 <a href=\"./configuration/api.md\">API 的方式</a> 进行调用。</p>\n<h2>服务提供者</h2>\n<p>完整安装步骤,请参见:<a href=\"http://dubbo.apache.org/books/dubbo-admin-book/install/provider-demo.html\">示例提供者安装</a></p>\n<h3>定义服务接口</h3>\n<p>DemoService.java <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class [...]
     },
     {
-      "filename": "recommend.md",
+      "filename": "user/recommend.md",
       "__html": "<h1>推荐用法</h1>\n<h2>在 Provider 上尽量多配置 Consumer 端属性</h2>\n<p>原因如下:</p>\n<ul>\n<li>作服务的提供者,比服务使用方更清楚服务性能参数,如调用的超时时间,合理的重试次数,等等</li>\n<li>在 Provider 配置后,Consumer 不配置则会使用 Provider 的配置值,即 Provider 配置可以作为 Consumer 的缺省值 [^1]。否则,Consumer 会使用 Consumer 端的全局设置,这对于 Provider 不可控的,并且往往是不合理的</li>\n</ul>\n<p>Provider 上尽量多配置 Consumer 端的属性,让 Provider 实现者一开始就思考 Provider 服务特点、服务质量的问题。</p>\n<p>示例:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">du [...]
     },
     {
-      "filename": "references/api.md",
+      "filename": "user/references/api.md",
       "__html": "<h1>API 参考手册</h1>\n<p>Dubbo 的常规功能,都保持零侵入,但有些功能不得不用 API 侵入才能实现 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。</p>\n<p>API 汇总如下:</p>\n<h2>配置 API</h2>\n<pre><code>com.alibaba.dubbo.config.ServiceConfig\ncom.alibaba.dubbo.config.ReferenceConfig\ncom.alibaba.dubbo.config.ProtocolConfig\ncom.alibaba.dubbo.config.RegistryConfig\ncom.alibaba.dubbo.config.MonitorConfig\ncom.alibaba.dubbo.config.ApplicationConfig\ncom.alibaba.dubbo.config.ModuleConfig\nc [...]
     },
     {
-      "filename": "references/maven.md",
+      "filename": "user/references/maven.md",
       "__html": "<h1>Maven 插件参考手册</h1>\n<h2>启动一个简易注册中心</h2>\n<p>以指定的9099端口启动一个简易注册中心 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-sh\">mvn dubbo:registry -Dport=9099 \n</code></pre>\n<h2>生成demo服务提供者应用</h2>\n<p>生成指定接口和版本的服务提供者应用:</p>\n<pre><code class=\"language-sh\">mvn dubbo:create -Dapplication=xxx -Dpackage=com.alibaba.xxx -Dservice=XxxService,YyyService -Dversion=1.0.0 \n</code></pre>\n<hr class=\"footnotes-sep\">\n<sectio [...]
     },
     {
-      "filename": "references/protocol/dubbo.md",
+      "filename": "user/references/protocol/dubbo.md",
       "__html": "<h1>dubbo://</h1>\n<p>Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。</p>\n<p>反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。</p>\n<p><img src=\"../../sources/images/dubbo-protocol.jpg\" alt=\"dubbo-protocol.jpg\"></p>\n<ul>\n<li>Transporter: mina, netty, grizzy</li>\n<li>Serialization: dubbo, hessian2, java, json</li>\n<li>Dispatcher: all, direct, message, execution, connection</li>\n<li>ThreadPool: fixed, cached</li>\n</ul>\n<h2>特性</h2>\n<p>缺省协议,使用基 [...]
     },
     {
-      "filename": "references/protocol/hessian.md",
+      "filename": "user/references/protocol/hessian.md",
       "__html": "<h1>hessian://</h1>\n<p>Hessian <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。</p>\n<p>Dubbo 的 Hessian 协议可以和原生 Hessian 服务互操作,即:</p>\n<ul>\n<li>提供者用 Dubbo 的 Hessian 协议暴露服务,消费者直接用标准 Hessian 接口调用</li>\n<li>或者提供方用标准 Hessian 暴露服务,消费方用 Dubbo 的 Hessian 协议调用。</li>\n</ul>\n<h2>特性</h2>\n<ul>\n<li>连接个数:多连接</li>\n<li>连接方式:短连接</li>\n<li>传输协议:HTTP</li>\n<li>传输方式:同步传输</li>\n<li>序 [...]
     },
     {
-      "filename": "references/protocol/http.md",
+      "filename": "user/references/protocol/http.md",
       "__html": "<h1>http://</h1>\n<p>基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<h2>特性</h2>\n<ul>\n<li>连接个数:多连接</li>\n<li>连接方式:短连接</li>\n<li>传输协议:HTTP</li>\n<li>传输方式:同步传输</li>\n<li>序列化:表单序列化</li>\n<li>适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。</li>\n<li>适用场景:需同时给应用程序和浏览器 JS 使用的服务。</li>\n</ul>\n<h2>约束</h2>\n<ul>\n<li>参数及返回值需符合 Bean 规范</li>\n</ul>\n<h2>配置</h2>\n<p>配置协议:</p>\n<pre><code class=\ [...]
     },
     {
-      "filename": "references/protocol/introduction.md",
+      "filename": "user/references/protocol/introduction.md",
       "__html": "<h1>协议参考手册</h1>\n<p>推荐使用 Dubbo 协议。各协议的性能情况,请参见:<a href=\"../../perf-test.md\">性能测试报告</a></p>\n"
     },
     {
-      "filename": "references/protocol/memcached.md",
+      "filename": "user/references/protocol/memcached.md",
       "__html": "<h1>memcached://</h1>\n<p>基于 memcached <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 实现的 RPC 协议 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>注册 memcached 服务的地址</h2>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zo [...]
     },
     {
-      "filename": "references/protocol/redis.md",
+      "filename": "user/references/protocol/redis.md",
       "__html": "<h1>redis://</h1>\n<p>基于 Redis <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 实现的 RPC 协议 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>注册 redis 服务的地址</h2>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10 [...]
     },
     {
-      "filename": "references/protocol/rest.md",
+      "filename": "user/references/protocol/rest.md",
       "__html": "<h1>rest://</h1>\n<p>基于标准的Java REST API——JAX-RS 2.0(Java API for RESTful Web Services的简写)实现的REST调用支持</p>\n<h2>快速入门</h2>\n<p>在dubbo中开发一个REST风格的服务会比较简单,下面以一个注册用户的简单服务为例说明。</p>\n<p>这个服务要实现的功能是提供如下URL(注:这个URL不是完全符合REST的风格,但是更简单实用):</p>\n<pre><code>http://localhost:8080/users/register\n</code></pre>\n<p>而任何客户端都可以将包含用户信息的JSON字符串POST到以上URL来完成用户注册。</p>\n<p>首先,开发服务的接口:</p>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">public</span> <span class=\"hljs-class\"><s [...]
     },
     {
-      "filename": "references/protocol/rmi.md",
+      "filename": "user/references/protocol/rmi.md",
       "__html": "<h1>rmi://</h1>\n<p>RMI 协议采用 JDK 标准的 <code>java.rmi.*</code> 实现,采用阻塞式短连接和 JDK 标准序列化方式。</p>\n<p>注意:如果正在使用 RMI 提供服务给外部访问 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>,同时应用里依赖了老的 common-collections 包 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup> 的情况下,存在反序列化安全风险 <sup class=\"footnote-ref\"><a href=\"#fn3\" id=\"fnref3\">[3]</a></sup>。</p>\n<h2>特性</h2>\n<ul>\n<li>连接个数:多连接</li>\n<li>连接方式:短连接</li>\n<li>传输协议:TCP</li>\n<li>传输方 [...]
     },
     {
-      "filename": "references/protocol/thrift.md",
+      "filename": "user/references/protocol/thrift.md",
       "__html": "<h1>thrift://</h1>\n<p>当前 dubbo 支持 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>的 thrift 协议是对 thrift 原生协议 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup> 的扩展,在原生协议的基础上添加了一些额外的头信息,比如 service name,magic number 等。</p>\n<p>使用 dubbo thrift 协议同样需要使用 thrift 的 idl compiler 编译生成相应的 java 代码,后续版本中会在这方面做一些增强。</p>\n<h2>依赖</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency</span> [...]
     },
     {
-      "filename": "references/protocol/webservice.md",
+      "filename": "user/references/protocol/webservice.md",
       "__html": "<h1>webservice://</h1>\n<p>基于 WebService 的远程调用协议,基于 <a href=\"http://cxf.apache.org\">Apache CXF</a> <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 的 <code>frontend-simple</code> 和 <code>transports-http</code> 实现 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<p>可以和原生 WebService 服务互操作,即:</p>\n<ul>\n<li>提供者用 Dubbo 的 WebService 协议暴露服务,消费者直接用标准 WebService 接口调用,</li>\n<li>或者提供方用标准 WebService 暴露服务,消费方用 Dubbo 的 WebServi [...]
     },
     {
-      "filename": "references/qos.md",
+      "filename": "user/references/qos.md",
       "__html": "<h1>新版本 telnet 命令使用说明</h1>\n<p>dubbo 2.5.8 新版本重构了 telnet 模块,提供了新的 telnet 命令支持。</p>\n<h3>端口</h3>\n<p>新版本的 telnet 端口 与 dubbo 协议的端口是不同的端口,默认为 <code>22222</code>,可通过配置文件<code>dubbo.properties</code> 修改:</p>\n<pre><code>dubbo.application.qos.port=33333\n</code></pre>\n<p>或者通过设置 JVM 参数:</p>\n<pre><code>-Ddubbo.application.qos.port=33333\n</code></pre>\n<h3>安全</h3>\n<p>默认情况下,dubbo 接收任何主机发起的命令,可通过配置文件<code>dubbo.properties</code> 修改:</p>\n<pre><code>dubbo.application.qos.accept. [...]
     },
     {
-      "filename": "references/registry/introduction.md",
+      "filename": "user/references/registry/introduction.md",
       "__html": "<h2>注册中心参考手册</h2>\n<p>推荐使用 <a href=\"./zookeeper.md\">Zookeeper 注册中心</a></p>\n"
     },
     {
-      "filename": "references/registry/multicast.md",
+      "filename": "user/references/registry/multicast.md",
       "__html": "<h1>Multicast 注册中心</h1>\n<p>Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。</p>\n<p><img src=\"../../sources/images/multicast.jpg\" alt=\"/user-guide/images/multicast.jpg\"></p>\n<ol start=\"0\">\n<li>提供方启动时广播自己的地址</li>\n<li>消费方启动时广播订阅请求</li>\n<li>提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了 <code>unicast=false</code>,则广播给订阅者</li>\n<li>消费方收到提供方地址时,连接该地址进行 RPC 调用。</li>\n</ol>\n<p>组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.255.255</p>\n<h2>配置</h2>\n<pre><code class=\"language-xml\"> [...]
     },
     {
-      "filename": "references/registry/redis.md",
+      "filename": "user/references/registry/redis.md",
       "__html": "<h1>Redis 注册中心</h1>\n<p>基于 Redis <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 实现的注册中心 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<p><img src=\"../../sources/images/dubbo-redis-registry.jpg\" alt=\"/user-guide/images/dubbo-redis-registry.jpg\"></p>\n<p>使用 Redis 的 Key/Map 结构存储数据结构:</p>\n<ul>\n<li>主 Key 为服务名和类型</li>\n<li>Map 中的 Key 为 URL 地址</li>\n<li>Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除 <sup class=\"footnote-r [...]
     },
     {
-      "filename": "references/registry/simple.md",
+      "filename": "user/references/registry/simple.md",
       "__html": "<h1>Simple 注册中心</h1>\n<p>Simple 注册中心本身就是一个普通的 Dubbo 服务,可以减少第三方依赖,使整体通讯方式一致。</p>\n<h2>配置</h2>\n<p>将 Simple 注册中心暴露成 Dubbo 服务:</p>\n<pre><code class=\"language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?</span>xml version=<span class=\"hljs-string\">\"1.0\"</span> encoding=<span class=\"hljs-string\">\"UTF-8\"</span><span class=\"hljs-meta\">?&gt;</span></span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">beans</span> <span class=\"hljs-attr\">xmlns [...]
     },
     {
-      "filename": "references/registry/zookeeper.md",
+      "filename": "user/references/registry/zookeeper.md",
       "__html": "<h1>zookeeper 注册中心</h1>\n<p><a href=\"http://zookeeper.apache.org\">Zookeeper</a> 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。</p>\n<p><img src=\"../../sources/images/zookeeper.jpg\" alt=\"/user-guide/images/zookeeper.jpg\"></p>\n<p>流程说明:</p>\n<ul>\n<li>服务提供者启动时: 向 <code>/dubbo/com.foo.BarService/providers</code> 目录下写入自己的 URL 地址</li>\n<li>服务消费者启动时: 订阅 <code>/dubbo [...]
     },
     {
-      "filename": "references/telnet.md",
+      "filename": "user/references/telnet.md",
       "__html": "<h1>Telnet 命令参考手册</h1>\n<p>从 <code>2.0.5</code> 版本开始,dubbo 开始支持通过 telnet 命令来进行服务治理。</p>\n<h2>使用</h2>\n<pre><code class=\"language-sh\">telnet localhost 20880\n</code></pre>\n<p>或者:</p>\n<pre><code class=\"language-sh\"><span class=\"hljs-built_in\">echo</span> status | nc -i 1 localhost 20880\n</code></pre>\n<p>status命令所检查的资源也可以扩展,参见:<a href=\"http://dubbo.apache.org/books/dubbo-dev-book/impls/status-checker.html\">扩展参考手册</a>。</p>\n<h2>命令</h2>\n<p>以下展示了 dubbo 内建的 telnet  [...]
     },
     {
-      "filename": "references/xml/dubbo-application.md",
+      "filename": "user/references/xml/dubbo-application.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-argument.md",
+      "filename": "user/references/xml/dubbo-argument.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-consumer.md",
+      "filename": "user/references/xml/dubbo-consumer.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-method.md",
+      "filename": "user/references/xml/dubbo-method.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-module.md",
+      "filename": "user/references/xml/dubbo-module.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-monitor.md",
+      "filename": "user/references/xml/dubbo-monitor.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-parameter.md",
+      "filename": "user/references/xml/dubbo-parameter.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-protocol.md",
+      "filename": "user/references/xml/dubbo-protocol.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-provider.md",
+      "filename": "user/references/xml/dubbo-provider.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-reference.md",
+      "filename": "user/references/xml/dubbo-reference.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-registry.md",
+      "filename": "user/references/xml/dubbo-registry.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-service.md",
+      "filename": "user/references/xml/dubbo-service.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/introduction.md",
+      "filename": "user/references/xml/introduction.md",
       "__html": "<h1>schema 配置参考手册</h1>\n<p>这里以 XML Config <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 为准,列举所有配置项 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。其它配置方式,请参见相应转换关系:<a href=\"../../configuration/properties.md\">属性配置</a>,<a href=\"../../configuration/annotation.md\">注解配置</a>,<a href=\"../../configuration/api.md\">API 配置</a>。</p>\n<p>所有配置项分为三大类,参见下表中的&quot;作用&quot; 一列。</p>\n<ul>\n<li>服务发现:表示该配置项用于服务的注册与发现,目的是让消费方找到提供方。</li [...]
     },
     {
-      "filename": "rest.md",
+      "filename": "user/rest.md",
       "__html": "<h1>在Dubbo中开发REST风格的远程调用(RESTful Remoting)</h1>\n<p><strong>作者:沈理</strong></p>\n<p><strong>文档版权:<a href=\"http://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0许可证 署名-禁止演绎</a></strong></p>\n<p>完善中……</p>\n<blockquote>\n<p>本文篇幅较长,因为REST本身涉及面较多。另外,本文参照Spring等的文档风格,不仅仅局限于框架用法的阐述,同时也努力呈现框架的设计理念和优良应用的架构思想。</p>\n</blockquote>\n<blockquote>\n<p>对于想粗略了解dubbo和REST的人,只需浏览 <code>概述</code> 至 <code>标准Java REST API:JAX-RS简介</code> 几节即可。</p>\n</blockquote>\n<p>TODO 生成可点击的目录</p>\n<h2>目录 [...]
     },
     {
-      "filename": "serialization.md",
+      "filename": "user/serialization.md",
       "__html": "<h1>在Dubbo中使用高效的Java序列化(Kryo和FST)</h1>\n<p><strong>作者:沈理</strong></p>\n<p><strong>文档版权:<a href=\"http://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0许可证 署名-禁止演绎</a></strong></p>\n<p>完善中……</p>\n<p>TODO 生成可点击的目录</p>\n<h2>目录</h2>\n<ul>\n<li>序列化漫谈</li>\n<li>启用Kryo和FST</li>\n<li>注册被序列化类</li>\n<li>无参构造函数和Serializable接口</li>\n<li>序列化性能分析与测试\n<ul>\n<li>测试环境</li>\n<li>测试脚本</li>\n<li>Dubbo RPC中不同序列化生成字节大小比较</li>\n<li>Dubbo RPC中不同序列化响应时间和吞吐量对比</li>\n</ul>\n</li>\n<li>未来</li>\n</ [...]
     },
     {
-      "filename": "simple-monitor.md",
+      "filename": "user/simple-monitor.md",
       "__html": "<blockquote>\n<p><img src=\"sources/images/check.gif\" alt=\"warning\">监控中心也是一个标准的Dubbo服务,可以通过注册中心发现,也可以直连。</p>\n</blockquote>\n<blockquote>\n<p><img src=\"sources/images/check.gif\" alt=\"warning\"><a href=\"admin-guide-install-manual#%E7%AE%80%E6%98%93%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E5%AE%89%E8%A3%85\">简易注册中心安装</a></p>\n</blockquote>\n<ol start=\"0\">\n<li>\n<p>暴露一个简单监控中心服务到注册中心: (如果是用安装包,不需要自己写这个配置,如果是自己实现监控中心,则需要)</p>\n<pre><code class=\"language-xml\"></code></ [...]
     }
   ],
   "en-us": [
     {
-      "filename": "README.md",
+      "filename": "user/README.md",
       "__html": "<h1>dubbo-user-book</h1>\n<p>The dubbo cookbook, covering almost all features of dubbo framework.</p>\n"
     },
     {
-      "filename": "SUMMARY.md",
+      "filename": "user/SUMMARY.md",
       "__html": "<h1>Summary</h1>\n<ul>\n<li><a href=\"./preface/index.md\">1 Preface</a>\n<ul>\n<li><a href=\"./preface/background.md\">1.1 Background</a></li>\n<li><a href=\"./preface/requirements.md\">1.2 Requirements</a></li>\n<li><a href=\"./preface/architecture.md\">1.3 Architecture</a></li>\n<li><a href=\"./preface/usage.md\">1.4 Usage</a></li>\n</ul>\n</li>\n<li><a href=\"./quick-start.md\">2 Quick start</a></li>\n<li><a href=\"./dependencies.md\">3 Dependencies</a></li>\n<li><a  [...]
     },
     {
-      "filename": "benchmark-tool.md",
+      "filename": "user/benchmark-tool.md",
       "__html": "<h1>Beanchmark testing tool installer</h1>\n<ul>\n<li>download: git clone <a href=\"https://github.com/apache/incubator-dubbo.git\">https://github.com/apache/incubator-dubbo.git</a></li>\n<li>compile benchmark: cd incubator-dubbo/dubbo-test/dubbo-test-benchmark; mvn clean install</li>\n<li>uncompress benchmark: incubator-dubbo/dubbo-test/dubbo-test-benchmark/target/dubbo-test-benchmark-2.6.2-SNAPSHOT.tar.gz</li>\n</ul>\n<p>Read ReadMe.txt (the contents are as follows, in [...]
     },
     {
-      "filename": "best-practice.md",
+      "filename": "user/best-practice.md",
       "__html": "<h1>Servitization best practice</h1>\n<h2>Modularization</h2>\n<p>It is recommended to put service interfaces, service models, service exceptions, and so on in the API package,Because the service model and exception are part of the API, it is also in conformity with the modularization principle:Reusing the publish equivalence principle (REP) and the Common Reuse Principle (CRP).</p>\n<p>If you need, you can also consider placing a spring reference configuration in the AP [...]
     },
     {
-      "filename": "capacity-plan.md",
+      "filename": "user/capacity-plan.md",
       "__html": "<h1>Capacity plan</h1>\n<p>The following data for reference:</p>\n<h2>Use member service project of Dubbo</h2>\n<ul>\n<li>Receive 400,000,000 remote calls one day</li>\n<li>Use 12 standard servers to provide services (CPU:8 core, memory: 8G)</li>\n<li>The average load is less than 1 (For 8 core CPU, the load is very low)</li>\n<li>The average response time is 2.3 to 2.5 ms,Network cost about 1.5 to 1.6 ms(Related to the size of the packet )</li>\n</ul>\n<h2>Use product a [...]
     },
     {
-      "filename": "configuration/annotation.md",
+      "filename": "user/configuration/annotation.md",
       "__html": "<h1>Annotation Configuration</h1>\n<p>Requires<code>2.5.7</code> or higher</p>\n<h2>Provider Side</h2>\n<h3><code>Service</code> annotation for exporting</h3>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">import</span> com.alibaba.dubbo.config.annotation.Service;\n \n<span class=\"hljs-meta\">@Service</span>(timeout = <span class=\"hljs-number\">5000</span>)\n<span class=\"hljs-keyword\">public</span> <span class=\"hljs-class\"><span class=\"hljs-keywo [...]
     },
     {
-      "filename": "configuration/api.md",
+      "filename": "user/configuration/api.md",
       "__html": "<h1>API Configuration</h1>\n<p>All API properties have counterparts in XML, see <a href=\"../references/xml/introduction.md\">XML References</a> for details. For example <code>ApplicationConfig.setName(&quot;xxx&quot;)</code> equals to  <code>&lt;dubbo:application name=&quot;xxx&quot; /&gt;</code> <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<h2>Provider Side</h2>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">import</sp [...]
     },
     {
-      "filename": "configuration/index.md",
+      "filename": "user/configuration/index.md",
       "__html": "<h1>Configuration</h1>\n"
     },
     {
-      "filename": "configuration/properties.md",
+      "filename": "user/configuration/properties.md",
       "__html": "<h1>Properties Configuration</h1>\n<p>If your application is simple enough, say, you do not need multi-registries or multi-protocols, and you want to share configuration among Spring containers. You can use <code>dubbo.properties</code> as default configuration.</p>\n<p>Dubbo will load dubbo.properties under the root of classpath automatically, you can also specify the path for loading this file by using JVM parameter: <code>-Ddubbo.properties.file=xxx.properties</code>. [...]
     },
     {
-      "filename": "configuration/xml.md",
+      "filename": "user/configuration/xml.md",
       "__html": "<h1>XML Configuration</h1>\n<p>About the XML configuration items, see:<a href=\"../references/xml/introduction.md\">XML References</a>. If you prefer use API directly instead of using Spring, see <a href=\"./api.md\">API Configuration</a>. Want a example of how to use configuration, see <a href=\"../quick-start.md\">Quick Start</a>。</p>\n<h2>provider.xml demo</h2>\n<pre><code class=\"language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?</span>xml version=<sp [...]
     },
     {
-      "filename": "coveragence.md",
+      "filename": "user/coveragence.md",
       "__html": "<h1>Test coverage report</h1>\n<p>Based on version <code>2.0.12</code>,Statistics on 2012-02-03</p>\n<p><img src=\"sources/images/code-quality1.jpg\" alt=\"/sources/images/code-quality1.jpg\"></p>\n<p><img src=\"sources/images/code-quality2.jpg\" alt=\"/sources/images/code-quality2.jpg\"></p>\n<p><img src=\"sources/images/code-quality3.jpg\" alt=\"/sources/images/code-quality3.jpg\"></p>\n<p><img src=\"sources/images/code-quality4.jpg\" alt=\"/sources/images/code-quality [...]
     },
     {
-      "filename": "demos/accesslog.md",
+      "filename": "user/demos/accesslog.md",
       "__html": "<h1>Access Log</h1>\n<p>If you want to logging the access information for each provide service,you can turn on the <code>accesslog</code> switch,which like the access log of <code>Apache</code>.</p>\n<p><strong>Note:</strong>\nThe size of the access log maybe too much,please check the disk capacity.\nNow I will show you how to config the access log.</p>\n<h2>Logging by logging framework</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hl [...]
     },
     {
-      "filename": "demos/async-call.md",
+      "filename": "user/demos/async-call.md",
       "__html": "<h1>Asynchronous Call</h1>\n<p>As dubbo is based on a non-blocking NIO network layer, the client can start parallel call to multiple remote services without explicitly starting mulithreads, which costs relatively fewer resources.</p>\n<p><img src=\"../sources/images/future.jpg\" alt=\"/user-guide/images/future.jpg\"></p>\n<p>You can config at <code>consumer.xml</code> for setup asynchronous call some remote service.</p>\n<pre><code class=\"language-xml\"><span class=\"hl [...]
     },
     {
-      "filename": "demos/attachment.md",
+      "filename": "user/demos/attachment.md",
       "__html": "<h1>Implicit parameters</h1>\n<p>You can implicitly pass parameters between service consumers and providers via <code>setAttachment</code> and<code>getAttachment</code> on <code>RpcContext</code>.\n<img src=\"../sources/images/context.png\" alt=\"/user-guide/images/context.png\"></p>\n<h2>Set the implicit parameters at service consumer side</h2>\n<p>Via <code>setAttachment</code> on <code>RpcContext</code> set key/value pair for implicitly pass parameters.When finished o [...]
     },
     {
-      "filename": "demos/callback-parameter.md",
+      "filename": "user/demos/callback-parameter.md",
       "__html": "<h1>Callback parameter</h1>\n<p>The parameter callback is the same as calling a local callback or listener, just declare which parameter is a callback type in Spring's configuration file, and Dubbo will generate a reverse proxy based on the long connection so that client logic can be called from the server.Can ref to <a href=\"https://github.com/apache/incubator-dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/callback\">Sample co [...]
     },
     {
-      "filename": "demos/concurrency-control.md",
+      "filename": "user/demos/concurrency-control.md",
       "__html": "<h1>Parallel control</h1>\n<h2>Example of configuration</h2>\n<ul>\n<li>Example 1: Control the concurrency of all method for a specified service interface at server-side</li>\n</ul>\n<p>Limit each method of <code>com.foo.BarService</code> to no more than 10 concurrent server-side executions (or take up thread pool threads):</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">interfac [...]
     },
     {
-      "filename": "demos/config-connections.md",
+      "filename": "user/demos/config-connections.md",
       "__html": "<h1>Config connections</h1>\n<h2>Control connections at server-side</h2>\n<p>Limit server-side accept to no more than 10 connections</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:provider</span> <span class=\"hljs-attr\">protocol</span>=<span class=\"hljs-string\">\"dubbo\"</span> <span class=\"hljs-attr\">accepts</span>=<span class=\"hljs-string\">\"10\"</span> /&gt;</span>\n</code></pre>\n<p>OR</p>\n<pre><code class [...]
     },
     {
-      "filename": "demos/config-rule.md",
+      "filename": "user/demos/config-rule.md",
       "__html": "<h1>Configure rule</h1>\n<p>Write then dynamic configuration to the registry center,This feature is usually done by the monitoring center or the center's page.</p>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10.20.153.10:2181\"</span>));\nregistry.register(URL.val [...]
     },
     {
-      "filename": "demos/context.md",
+      "filename": "user/demos/context.md",
       "__html": "<h1>Context Information</h1>\n<p>All environment information of during the current call will put into the context,and all configuration information will convert the parameters of <code>URL</code> instance,Ref to the column of <strong>URL parameters</strong> at the <a href=\"../references/xml/introduction.md\">schema configuration reference book</a></p>\n<p><code>RpcContext</code> is a temporary status recorder of <code>ThreadLocal</code>,when accept <code>RPC</code> requ [...]
     },
     {
-      "filename": "demos/delay-publish.md",
+      "filename": "user/demos/delay-publish.md",
       "__html": "<h1>Delay publish service</h1>\n<p>If your service need time to warm up.such as:initialization cache,or another reference resources has to be <a href=\"http://ready.so\">ready.so</a> you can use the delay feature for delay publish service.</p>\n<h2>Delay five second publish</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">delay</span>=<span class=\"hljs-string\">\"5000\"</span> / [...]
     },
     {
-      "filename": "demos/distributed-transaction.md",
+      "filename": "user/demos/distributed-transaction.md",
       "__html": "<h1>Distributed transaction</h1>\n<p>Distributed transactions are based on the JTA / XA specification(this feature has not yet been implemented)</p>\n<p>Two-phase commit:</p>\n<p><img src=\"../sources/images/jta-xa.jpg\" alt=\"/user-guide/images/jta-xa.jpg\"></p>\n"
     },
     {
-      "filename": "demos/dump.md",
+      "filename": "user/demos/dump.md",
       "__html": "<h1>Dump</h1>\n<p>When the business thread pool is full, we need to know what resources/conditions are waiting for the thread , to find the bottleneck point of the system or abnormal point. <code>dubbo</code> automatically export thread stack through <code>Jstack</code> to keep the scene for easy to troubleshoot the problem.</p>\n<p>Default policy:</p>\n<ul>\n<li>Export file path,user.home directory</li>\n<li>Export interval,The shortest interval allows you to export eve [...]
     },
     {
-      "filename": "demos/echo-service.md",
+      "filename": "user/demos/echo-service.md",
       "__html": "<h1>Echo Testing</h1>\n<p>Echo testing is used for check the service is available,Echo testing is performed according to the normal request flow and is able to test whether the entire call is unobstructed and can be used for monitoring.</p>\n<p>All the services will be automatically implemented <code>EchoService</code> interface,just cast any service reference to <code>EchoService</code> to use it.</p>\n<p>Spring configuration:</p>\n<pre><code class=\"language-xml\"><spa [...]
     },
     {
-      "filename": "demos/events-notify.md",
+      "filename": "user/demos/events-notify.md",
       "__html": "<h1>Event Notify</h1>\n<p>Before calling, after calling, when an exception occurs,will trigger <code>oninvoke</code>, <code>onreturn</code>, <code>onthrow</code> events.You can configure which method to notify when an event occurs.</p>\n<h2>Service Interface</h2>\n<pre><code class=\"language-java\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">interface</span> <span class=\"hljs-title\">IDemoService</span> </span>{\n    <span class=\"hljs-function\"><span class [...]
     },
     {
-      "filename": "demos/explicit-target.md",
+      "filename": "user/demos/explicit-target.md",
       "__html": "<h1>Explicit target</h1>\n<p>In the development and testing environment, it is often necessary to bypass the registry and test only designated service providers. In this case, point-to-point direct connection may be required, and the service provider will ignore the list of provider registration providers. The interface A configure Point-to-point, does not affect the B interface to obtain a list from the registry.</p>\n<p><img src=\"../sources/images/dubbo-directly.jpg\" [...]
     },
     {
-      "filename": "demos/fault-tolerent-strategy.md",
+      "filename": "user/demos/fault-tolerent-strategy.md",
       "__html": "<h1>Fault Tolerance Strategy</h1>\n<p>Dubbo offers a variety of fault-tolerant scenarios when a cluster call fails, with a default failover retry.</p>\n<p><img src=\"../sources/images/cluster.jpg\" alt=\"cluster\"></p>\n<p>The relationship between nodes:</p>\n<ul>\n<li>This <code>Invoker</code> is the callable Service's abstract of the<code>Provider</code>, and the <code>Invoker</code> packaging the<code>Provider</code>'s address and <code>Service</code>'s interface.</li [...]
     },
     {
-      "filename": "demos/generic-reference.md",
+      "filename": "user/demos/generic-reference.md",
       "__html": "<h1>Generic Reference</h1>\n<p>Generic invocation is mainly used when the client does not have API interface or model class,  all POJOs in parameters and return values are represented by <code>Map</code>.Commonly used for framework integration such as: implementing a common service testing framework, all service implementations can be invoked via <code>GenericService</code>.</p>\n<h2>Use generic invocation via Spring</h2>\n<p>Declared in the Spring configuration file <co [...]
     },
     {
-      "filename": "demos/generic-service.md",
+      "filename": "user/demos/generic-service.md",
       "__html": "<h1>Generic Service</h1>\n<p>The implementation of the generic interface is mainly used when there is no API interface and model class on the server side. All POJOs in the parameters and return values are represented by the Map and are usually used for framework integration. For example, to implement a universal remote service Mock framework, handle all service requests by implementing the GenericService interface.</p>\n<p>In Java code, implement <code>GenericService</co [...]
     },
     {
-      "filename": "demos/graceful-shutdown.md",
+      "filename": "user/demos/graceful-shutdown.md",
       "__html": "<h1>Graceful Shutdown</h1>\n<p>Dubbo is graceful shutdown through the <code>ShutdownHook</code> of the JDK, so graceful shutdowns are not performed if you force shutdown the command, such as <code>kill -9 PID</code>, and will only be executed if <code>kill PID</code> is passed.</p>\n<h2>Howto</h2>\n<h3>Service provider</h3>\n<ul>\n<li>When stop, first marked as not receiving new requests, the new request directly return the error, so that the client retries other machine [...]
     },
     {
-      "filename": "demos/group-merger.md",
+      "filename": "user/demos/group-merger.md",
       "__html": "<h1>Group Merger</h1>\n<p>According to the group to invoke server and return the merge result <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>, such as the menu service, the same interface, but there are a variety of implementations, using group distinction, consumers call each group and get the results, the merger can merge the resules, so that you can achieve aggregation Menu Item.</p>\n<p>Related code can refer to <a href=\"https://github.com/a [...]
     },
     {
-      "filename": "demos/hostname-binding.md",
+      "filename": "user/demos/hostname-binding.md",
       "__html": "<h1>Hostname Binding</h1>\n<h2>Lookup order</h2>\n<p>Default host IP lookup order:</p>\n<ul>\n<li>Get local address via <code>LocalHost.getLocalHost()</code>.</li>\n<li>If it is <code>127. *</code> loopback address, then scan the network for host IP</li>\n</ul>\n<h2>Host configuration</h2>\n<p>Registered address if it is not correct, such as the need to register public address, you can do this:</p>\n<ol>\n<li>\n<p>edit <code>/etc/hosts</code> : add machinename and public [...]
     },
     {
-      "filename": "demos/index.md",
+      "filename": "user/demos/index.md",
       "__html": "<h1>Example</h1>\n"
     },
     {
-      "filename": "demos/introduction.md",
+      "filename": "user/demos/introduction.md",
       "__html": "<blockquote>\n<p><img src=\"../sources/images/check.gif\" alt=\"warning\">To complete run, please see:<a href=\"quickstart.md\">Quickstart</a>, here just lists the configuration of various scenarios\n<img src=\"../sources/images/check.gif\" alt=\"warning\">The following examples are all based on Spring configuration:<a href=\"../configuration/xml.md\">Xml configuration</a> for reference, if you do not want to use Spring, but want to be use it via the directly API, please [...]
     },
     {
-      "filename": "demos/lazy-connect.md",
+      "filename": "user/demos/lazy-connect.md",
       "__html": "<h1>Lazy Connect</h1>\n<p>Lazy connect can reduce the number of keep-alive connections. When a call is initiated, create a keep-alive connection.<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">name</span>=<span class=\"hljs-string\">\"dubbo\"</span> <span class=\"hljs-attr\">lazy</span>=<span class=\"hljs-s [...]
     },
     {
-      "filename": "demos/loadbalance.md",
+      "filename": "user/demos/loadbalance.md",
       "__html": "<h1>LoadBalance</h1>\n<p>Dubbo offers a number of balancing strategies for cluster load balancing, which defaults to <code>random</code>.</p>\n<p>You can extend the load balancing strategy by yourself, see:<a href=\"http://dubbo.apache.org/books/dubbo-dev-book-en/impls/load-balance.html\">LoadBalance extension</a></p>\n<h2>LoadBalance strategy</h2>\n<h3>Random LoadBalance</h3>\n<ul>\n<li><strong>Ramdom</strong>, set random probabilities by weight.</li>\n<li>The probabili [...]
     },
     {
-      "filename": "demos/local-call.md",
+      "filename": "user/demos/local-call.md",
       "__html": "<h1>Local call</h1>\n<p>The local call uses the <code>injvm</code> protocol, a pseudo-protocol that does not turn on the port, does not initiate remote calls, is directly associated within the JVM, but executes the Dubbo Filter chain.</p>\n<h2>Configuration</h2>\n<p>Configure <code>injvm</code> protocol</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">name</span>=<span class=\"hl [...]
     },
     {
-      "filename": "demos/local-mock.md",
+      "filename": "user/demos/local-mock.md",
       "__html": "<h1>Local mock</h1>\n<p>Local mock <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> is usually used for service downgrade, such as a verification service, the client does not throw an exception when the service provider hangs up all the time, but returns the authorization failed through the Mock data.</p>\n<p>Configured in the spring configuration file as follows:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hl [...]
     },
     {
-      "filename": "demos/local-stub.md",
+      "filename": "user/demos/local-stub.md",
       "__html": "<h1>Local stub</h1>\n<p>When using rpc, the client usually only the interface, but sometimes the client also want to perform part of the logic in the client. For example: do ThreadLocal cache, verify parameters, return mock data when call fails., etc.</p>\n<p>To solve this problem, you can configure the stub in the API, so that when the client generates the proxy instance, it passes the proxy to the <code>Stub</code> via the constructor <sup class=\"footnote-ref\"><a hre [...]
     },
     {
-      "filename": "demos/logger-strategy.md",
+      "filename": "user/demos/logger-strategy.md",
       "__html": "<h1>Logger adapter</h1>\n<p><code>2.2.1</code> or later, dubbo support log4j、slf4j、jcl、jdk adapters <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>, you can also explicitly configure the log output policy in the following ways:</p>\n<ol start=\"0\">\n<li>\n<p>Command</p>\n<pre><code class=\"language-sh\">java -Ddubbo.application.logger=log4j\n</code></pre>\n</li>\n<li>\n<p>Configure in <code>dubbo.properties</code></p>\n<pre><code class=\"languag [...]
     },
     {
-      "filename": "demos/multi-protocols.md",
+      "filename": "user/demos/multi-protocols.md",
       "__html": "<h1>Multiple protocols</h1>\n<p>Dubbo allows you to configure multiple protocols, support different protocols on different services, or support multiple protocols on the same service.</p>\n<h2>Every service export to one specific protocol separately</h2>\n<p>Different protocol performance is not the same. Such as big data should use short connection protocol, small data and concurrent should use long connection protocol.</p>\n<pre><code class=\"language-xml\"><span class [...]
     },
     {
-      "filename": "demos/multi-registry.md",
+      "filename": "user/demos/multi-registry.md",
       "__html": "<h1>Multiple registries</h1>\n<p>Dubbo supports the same service to register multiple registries, or different services were registered to different registries, or even reference the same name service from different registries. In addition, the registry supports custom extensions <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>。</p>\n<h2>One service register to multiple registries</h2>\n<p>For example: Alibaba some services are not deployed in Qin [...]
     },
     {
-      "filename": "demos/multi-versions.md",
+      "filename": "user/demos/multi-versions.md",
       "__html": "<h1>Multi versions</h1>\n<p>When an interface to achieve an incompatible upgrade, you can use the version number transition. Different versions of the services do not reference each other.</p>\n<p>You can follow the steps below for version migration:</p>\n<ol start=\"0\">\n<li>In the low pressure period, upgrade to half of the provider to the new version</li>\n<li>Then upgrade all consumers to the new version</li>\n<li>Then upgrade the remaining half providers to the new [...]
     },
     {
-      "filename": "demos/netty4.md",
+      "filename": "user/demos/netty4.md",
       "__html": "<p>Add support for netty4 communication module in 2.5.6 version of dubbo, enabled as follows:</p>\n<p>provider:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> <span class=\"hljs-attr\">server</span>=<span class=\"hljs-string\">\"netty4\"</span> /&gt;</span>\n</code></pre>\n<p>or</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:provider</span> <span clas [...]
     },
     {
-      "filename": "demos/parameter-validation.md",
+      "filename": "user/demos/parameter-validation.md",
       "__html": "<h1>Parameter Validation</h1>\n<p>The parameter validation <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> is based on [JSR303] (<a href=\"https://jcp.org/en/jsr/detail?id=303\">https://jcp.org/en/jsr/detail?id=303</a>). The user simply add the validation annotation of the JSR303 and declares the filter for validation <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>.</p>\n<h2>Maven Dependency</h2>\n<pre><code class=\"langu [...]
     },
     {
-      "filename": "demos/preflight-check.md",
+      "filename": "user/demos/preflight-check.md",
       "__html": "<h1>Check on start up</h1>\n<p>By default dubbo will check if the dependent service is available at startup . It will throw an exception to prevent Spring complete initialization when it is not available, so that you can find the problems early before publishing you application, the default setting: <code>check=true</code>.</p>\n<p>You can turn off checking by <code>check=false</code>. For example, some services do not care it when you run testing, or you must have one s [...]
     },
     {
-      "filename": "demos/reference-config-cache.md",
+      "filename": "user/demos/reference-config-cache.md",
       "__html": "<h1>ReferenceConfig Cache</h1>\n<p>The instance of <code>ReferenceConfig</code> is heavy. It encapsulates the connection to the registry and the connection to the provider, so it need to be cached. Otherwise, repeatedly generating <code>ReferenceConfig</code> may cause performance problems , memory and connection leaks. This problem is easy to ignored when programming in API mode.</p>\n<p>Therefore, since <code>2.4.0</code>, dubbo provides a simple utility ReferenceConfi [...]
     },
     {
-      "filename": "demos/registry-only.md",
+      "filename": "user/demos/registry-only.md",
       "__html": "<h1>Register only</h1>\n<p>You have two mirroring environments, two registries.\nYou have deployed one service at only one of the registries, another registries have not had time to deploy, and other applications at both registries need to rely on the service.\nAt this time, the service provider registers service to another registrar, but the service consumers do not consume the service from another registrar.</p>\n<p>Disable subscription configuration</p>\n<pre><code cl [...]
     },
     {
-      "filename": "demos/result-cache.md",
+      "filename": "user/demos/result-cache.md",
       "__html": "<h1>Cache Result</h1>\n<p>Cache Result <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> is used to speed up access to popular data. Dubbo provides declarative caching to reduce the user work of adding cache <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>Cache Type</h2>\n<ul>\n<li><code>lru</code> Delete excess cache Based on the principle of least recently used.  The hottest data is cached.</li>\n<li><code>threa [...]
     },
     {
-      "filename": "demos/routing-rule.md",
+      "filename": "user/demos/routing-rule.md",
       "__html": "<h1>Routing Rules</h1>\n<p>The routing rules <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> determine the target server of one service call. It has two kinds of routing rules: conditional routing rules and script routing rules. It also support extension<sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>.</p>\n<h2>Write Routing Rules</h2>\n<p>Writing routing rules to the registry is usually done by the monitoring center or th [...]
     },
     {
-      "filename": "demos/service-container.md",
+      "filename": "user/demos/service-container.md",
       "__html": "<h1>Service container</h1>\n<p>The service container is a standalone launcher because the backend service does not require the functionality of a Web container ,such as Tomcat or JBoss. If you insist on using web containers to load service providers, that increase complexity and is waste of resources.</p>\n<p>The service container is just a simple Main method and loads a simple Spring container to expose the service.</p>\n<p>The content of Service container can be extend [...]
     },
     {
-      "filename": "demos/service-downgrade.md",
+      "filename": "user/demos/service-downgrade.md",
       "__html": "<h1>Service-Downgrade</h1>\n<p>You can temporarilly shield a non-critical service through the service downgrade and define the return policy for it.</p>\n<p>Publish dynamic configuration rule to the registry:</p>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10.20.1 [...]
     },
     {
-      "filename": "demos/service-group.md",
+      "filename": "user/demos/service-group.md",
       "__html": "<h1>Service Group</h1>\n<p>When you have multi-impls of a interface,you can distinguish them with the group.</p>\n<h2>Service</h2>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:service</span> <span class=\"hljs-attr\">group</span>=<span class=\"hljs-string\">\"feedback\"</span> <span class=\"hljs-attr\">interface</span>=<span class=\"hljs-string\">\"com.xxx.IndexService\"</span> /&gt;</span>\n<span class=\"hljs-tag\">&lt; [...]
     },
     {
-      "filename": "demos/static-service.md",
+      "filename": "user/demos/static-service.md",
       "__html": "<h1>Static Service</h1>\n<ul>\n<li>Sometimes we want to manually manage the registration and deregistration for service provider, we need to set registry to non-dynamoic mode.</li>\n</ul>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:registry</span> <span class=\"hljs-attr\">address</span>=<span class=\"hljs-string\">\"10.20.141.150:9090\"</span> <span class=\"hljs-attr\">dynamic</span>=<span class=\"hljs-string\">\"false [...]
     },
     {
-      "filename": "demos/stickiness.md",
+      "filename": "user/demos/stickiness.md",
       "__html": "<h1>stickiness</h1>\n<p>Sticky connections are used for stateful services, as much as possible so that clients always make calls to the same provider, unless the provider hangs up and connects to the other one.</p>\n<p>Sticky connections will automatically open <a href=\"./lazy-connect.md\">Delayed Connections</a> to reduce the number of long connections.</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dubbo:protocol</span> < [...]
     },
     {
-      "filename": "demos/subscribe-only.md",
+      "filename": "user/demos/subscribe-only.md",
       "__html": "<h1>Subscribe only</h1>\n<p>To facilitate the development of tests, it is common to have a registry of all services available in develop environment.And the registration of a service provider under development may affect consumers' inability to run.</p>\n<p>You can let service provider developers only subscribe to services only (services developed may rely on other services) ,don't register services under development and testing services under development with directly c [...]
     },
     {
-      "filename": "demos/thread-model.md",
+      "filename": "user/demos/thread-model.md",
       "__html": "<h1>Thread Model</h1>\n<h2>Thread Model</h2>\n<ul>\n<li>If events handing can be executed quickly without sending new request like marking in memory. Events should be handled by I/O thread since it reduces thread dispatching.</li>\n<li>If event handling will be executed slowly or needs to send new I/O request like querying from database, events should be handled in thread pool. Otherwise, I/O thread will be blocked and then will be not able to receive requests.</li>\n<li [...]
     },
     {
-      "filename": "demos/token-authorization.md",
+      "filename": "user/demos/token-authorization.md",
       "__html": "<h1>Token Authorization</h1>\n<p>Through the token authorization control center at the registry to decide whether to issue tokens to consumers, you can prevent consumers from bypassing the registry access provider, another through the registry can flexibly change the authorization without modification or upgrade provider</p>\n<p><img src=\"../sources/images/dubbo-token.jpg\" alt=\"/user-guide/images/dubbo-token.jpg\"></p>\n<p>You can turn on token authentication globally [...]
     },
     {
-      "filename": "dependencies.md",
+      "filename": "user/dependencies.md",
       "__html": "<h1>Dependencies</h1>\n<h2>Necessary dependencies</h2>\n<p>JDK 1.6+ <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<h2>Default dependencies</h2>\n<p>use <code>mvn dependency:tree &gt; dep.log</code>  command to analysis,Dubbo default depends on the following 3rd party libraries:</p>\n<pre><code>[INFO] +- com.alibaba:dubbo:jar:2.5.9-SNAPSHOT:compile\n[INFO] |  +- org.springframework:spring-context:jar:4.3.10.RELEASE:compile\n[INFO] |  +- org [...]
     },
     {
-      "filename": "maturity.md",
+      "filename": "user/maturity.md",
       "__html": "<h1>Maturity</h1>\n<h2>Function maturity</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>Maturity</th>\n<th>Strength</th>\n<th>Problem</th>\n<th>Advise</th>\n<th>User</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Concurrency control</td>\n<td>Tested</td>\n<td>concurrency control</td>\n<td></td>\n<td>On trial</td>\n<td></td>\n</tr>\n<tr>\n<td>Connection control</td>\n<td>Tested</td>\n<td>connection number control</td>\n<td></td>\n<td>On trial</td>\n<td></td>\n</tr>\n<tr>\ [...]
     },
     {
-      "filename": "perf-test.md",
+      "filename": "user/perf-test.md",
       "__html": "<h1>Performance test report</h1>\n<h2>Test instructions</h2>\n<ol start=\"0\">\n<li>In this performance test, the performance of all Dubbo 2.0 supported protocols in different sizes and data types is tested and compared with the Dubbo 1.0.</li>\n<li>The overall performance is increased by 1.0 compared with 10%, and the average increase is 10%. The performance improvement of 10%~50% can also be achieved by using the new Dubbo serialization of Dubbo 2.0 .</li>\n<li>In the  [...]
     },
     {
-      "filename": "preface/architecture.md",
+      "filename": "user/preface/architecture.md",
       "__html": "<h1>Architecture</h1>\n<p><img src=\"../sources/images/dubbo-architecture.jpg\" alt=\"dubbo-architucture\"></p>\n<h5>Specification of Node's Role</h5>\n<table>\n<thead>\n<tr>\n<th>Node</th>\n<th>Role Spec</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Provider</code></td>\n<td>The provider exposes remote services</td>\n</tr>\n<tr>\n<td><code>Consumer</code></td>\n<td>The consumer calls the remote services</td>\n</tr>\n<tr>\n<td><code>Registry</code></td>\n<td>The regist [...]
     },
     {
-      "filename": "preface/background.md",
+      "filename": "user/preface/background.md",
       "__html": "<h1>Background</h1>\n<p>With the fast development of Internet, the scale of web applications expands unceasingly, and finally we find that the traditional vertical architecture(monolithic) can not handle this any more. Distributed service architecture and the flow computing architecture are imperative, and a governance system is urgently needed to ensure an orderly evolution of the architecture.</p>\n<p><img src=\"../sources/images/dubbo-architecture-roadmap.jpg\" alt=\" [...]
     },
     {
-      "filename": "preface/index.md",
+      "filename": "user/preface/index.md",
       "__html": "<h1>Introduction</h1>\n"
     },
     {
-      "filename": "preface/requirements.md",
+      "filename": "user/preface/requirements.md",
       "__html": "<h1>Requirements</h1>\n<p><img src=\"../sources/images/dubbo-service-governance.jpg\" alt=\"image\"></p>\n<p>Before the advent of large-scare services, an application might just exposes or references remote service by using RMI or Hessian, the call is done by configuring serive URL, and load balance is done through hardwares, like F5.</p>\n<p><strong>When there are more and more services, it becomes very difficult to configure the service URL, the single point pressure o [...]
     },
     {
-      "filename": "preface/usage.md",
+      "filename": "user/preface/usage.md",
       "__html": "<h1>Usage</h1>\n<h2>Spring configuration of local service</h2>\n<p>local.xml:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">bean</span> <span class=\"hljs-attr\">id</span>=<span class=\"hljs-string\">“xxxService”</span> <span class=\"hljs-attr\">class</span>=<span class=\"hljs-string\">“com.xxx.XxxServiceImpl”</span> /&gt;</span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">bean</span> <span class=\"hljs-attr\">i [...]
     },
     {
-      "filename": "quick-start.md",
+      "filename": "user/quick-start.md",
       "__html": "<h1>Quick start</h1>\n<p>Dubbo uses a full Spring configuration, transparent access application,No API intrusion to your application,Just load the Dubbo configuration with Spring,Dubbo is loaded on the spring based schema extension.</p>\n<p>If you don't want to use the Spring configuration, you can call it by <a href=\"./configuration/api.md\">the way of API</a>.</p>\n<h2>Service provider</h2>\n<p>Complete installation steps, see:<a href=\"http://dubbo.apache.org/books/d [...]
     },
     {
-      "filename": "recommend.md",
+      "filename": "user/recommend.md",
       "__html": "<h1>Recommended usage</h1>\n<h2>Configuring the attributes of the consumer side as much as possible on the provider side</h2>\n<p>the reason is:</p>\n<ul>\n<li>Service providers are more aware of service performance parameters than service users,Such as the timeout time of the call, the reasonable retry times, and so on.</li>\n<li>If  a attribute is configurated in provider side,  not configurated in consumer side,  consumer service will use the attribute in provider sid [...]
     },
     {
-      "filename": "references/api.md",
+      "filename": "user/references/api.md",
       "__html": "<h1>API Reference</h1>\n<p>Generally speaking, dubbo keeps its functionality no intrusive as much as possible, but for some particular features, there's no other way not only API can achieve. <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<p>These APIs are summarized here below:</p>\n<h2>Configuration API</h2>\n<pre><code>com.alibaba.dubbo.config.ServiceConfig\ncom.alibaba.dubbo.config.ReferenceConfig\ncom.alibaba.dubbo.config.ProtocolConfi [...]
     },
     {
-      "filename": "references/maven.md",
+      "filename": "user/references/maven.md",
       "__html": "<h1>Maven Plugin Reference</h1>\n<h2>Start a simple registry server</h2>\n<p>Start a simple registry server listening on port 9099 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-sh\">mvn dubbo:registry -Dport=9099 \n</code></pre>\n<h2>Generate a service provider demo application</h2>\n<p>Generate a service provider with the specified interface and version:</p>\n<pre><code class=\"language-sh\">mvn dubbo:create - [...]
     },
     {
-      "filename": "references/protocol/dubbo.md",
+      "filename": "user/references/protocol/dubbo.md",
       "__html": "<h1>dubbo://</h1>\n<p>Dubbo protocol which is the default protocol of Dubbo RPC Framework uses a single long connection and NIO asynchronous communication,it is suitable for small data but with high concurrency RPC call and the number of consumer machine is much greater than provider</p>\n<p>On the other hand, the Dubbo protocol is not suitable for transmitting large amounts of data, such as file transmission, video transmission, etc., unless the request is very low.</p> [...]
     },
     {
-      "filename": "references/protocol/hessian.md",
+      "filename": "user/references/protocol/hessian.md",
       "__html": "<h1>hessian://</h1>\n<p>Hessian protocol is used for integrate Hessian services, and it use http protocol to  communicate and expose services by servlet.Dubbo use Jetty server as default servlet container.</p>\n<p>Dubbo's Hessian protocol interoperates with native Hessian services:</p>\n<ul>\n<li>Providers use Dubbo's Hessian protocol to expose services that consumers call directly using standard Hessian interfaces</li>\n<li>Alternatively, the provider exposes the servic [...]
     },
     {
-      "filename": "references/protocol/http.md",
+      "filename": "user/references/protocol/http.md",
       "__html": "<h1>http://</h1>\n<p>Dubbo http protocol is base on HTTP form and Spring's HttpInvoker</p>\n<h2>Features</h2>\n<ul>\n<li>Number of connections: multiple connections</li>\n<li>Connection: short connection</li>\n<li>Transmission protocol: HTTP</li>\n<li>Transmission: synchronous transmission</li>\n<li>Serialization: form serialization</li>\n<li>Scope of application: Available browser view, the form or URL can be passed parameters, Temporary files are not supported.</li>\n< [...]
     },
     {
-      "filename": "references/protocol/introduction.md",
+      "filename": "user/references/protocol/introduction.md",
       "__html": "<h1>Protocol reference Book</h1>\n<p>Dubbo protocol is recommended. The performance of each protocol, see:<a href=\"../../perf-test.md\">Performance</a></p>\n"
     },
     {
-      "filename": "references/protocol/memcached.md",
+      "filename": "user/references/protocol/memcached.md",
       "__html": "<h1>memcached://</h1>\n<p>RPC protocol based on memcached implementation.</p>\n<h2>Register memcached service address</h2>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10.20.153.10:2181\"</span>));\nregistry.register(URL.valueOf(<span class=\"hljs-string\">\"memcac [...]
     },
     {
-      "filename": "references/protocol/redis.md",
+      "filename": "user/references/protocol/redis.md",
       "__html": "<h1>redis://</h1>\n<p>RPC protocol based on memcached implementation.</p>\n<h2>Register redis service address</h2>\n<pre><code class=\"language-java\">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\nRegistry registry = registryFactory.getRegistry(URL.valueOf(<span class=\"hljs-string\">\"zookeeper://10.20.153.10:2181\"</span>));\nregistry.register(URL.valueOf(<span class=\"hljs-string\">\"redis://10.20. [...]
     },
     {
-      "filename": "references/protocol/rmi.md",
+      "filename": "user/references/protocol/rmi.md",
       "__html": "<h1>rmi://</h1>\n<p>The RMI protocol uses the JDK standard <code>java.rmi.*</code> Implementation, using a block short connection and JDK standard serialization.</p>\n<h2>Features</h2>\n<ul>\n<li>Number of connections: multiple connections</li>\n<li>Connection: short connection</li>\n<li>Transmission protocol: HTTP</li>\n<li>Transmission: synchronous transmission</li>\n<li>Serialization: Java standard Object Serialization</li>\n<li>Scope of application:the number of prov [...]
     },
     {
-      "filename": "references/protocol/thrift.md",
+      "filename": "user/references/protocol/thrift.md",
       "__html": "<h1>thrift://</h1>\n<p>The current dubbo support thrift protocol is an extension of the thrift native protocol, adding some additional header information to the native protocol, such as service name, magic number, and so on.</p>\n<p>The use of dubbo thrift protocol also need to use thrift idl compiler to generate the corresponding java code, follow-up version will do some enhancement in this aspect.</p>\n<h2>dependency</h2>\n<pre><code class=\"language-xml\"><span class= [...]
     },
     {
-      "filename": "references/protocol/webservice.md",
+      "filename": "user/references/protocol/webservice.md",
       "__html": "<h1>webservice://</h1>\n<p>WebService-based remote calling protocol,base on <a href=\"http://cxf.apache.org\">Apache CXF</a>  <code>frontend-simple</code> and  <code>transports-http</code> implements。</p>\n<p>Interoperable with native WebService services:</p>\n<ul>\n<li>Providers expose services using Dubbo's WebService protocol, which consumers invoke directly using the standard WebService interface,</li>\n<li>Or the provider exposes the service using the standard WebSe [...]
     },
     {
-      "filename": "references/registry/introduction.md",
+      "filename": "user/references/registry/introduction.md",
       "__html": "<h2>Registry Server References</h2>\n<p>It is recommended to use <a href=\"./zookeeper.md\">zookeeper registry server</a></p>\n"
     },
     {
-      "filename": "references/registry/multicast.md",
+      "filename": "user/references/registry/multicast.md",
       "__html": "<h1>Multicast Registry</h1>\n<p>Multicast registry doesn't require to setup any central node. Just like IP address broadcast, dubbo service providers and consumers can discover each other through this mechanism.</p>\n<p><img src=\"../../sources/images/multicast.jpg\" alt=\"/user-guide/images/multicast.jpg\"></p>\n<ol start=\"0\">\n<li>Service provider broadcasts its address when it boots up.</li>\n<li>Service consumer broadcasts its subscription request when it boots up. [...]
     },
     {
-      "filename": "references/registry/redis.md",
+      "filename": "user/references/registry/redis.md",
       "__html": "<h1>Redis Registry Server</h1>\n<p>It is a registry server implementation <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> based on redis <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>.</p>\n<p><img src=\"../../sources/images/dubbo-redis-registry.jpg\" alt=\"/user-guide/images/dubbo-redis-registry.jpg\"></p>\n<p>Use key/map structure in redis to save the registration info:</p>\n<ul>\n<li>Main key for service name and type [...]
     },
     {
-      "filename": "references/registry/simple.md",
+      "filename": "user/references/registry/simple.md",
       "__html": "<h1>Simple Registry Server</h1>\n<p>Simple registry server itself is a regular dubbo service. In this way, third-party dependency is unnecessary, and communication keeps consistent at the same moment.</p>\n<h2>Configuration</h2>\n<p>Register simple registry server as dubbo service:</p>\n<pre><code class=\"language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?</span>xml version=<span class=\"hljs-string\">\"1.0\"</span> encoding=<span class=\"hljs-string\">\"U [...]
     },
     {
-      "filename": "references/registry/zookeeper.md",
+      "filename": "user/references/registry/zookeeper.md",
       "__html": "<h1>Zookeeper Registry Server</h1>\n<p><a href=\"http://zookeeper.apache.org\">Zookeeper</a> is the child project of apache hadoop. Since it offers tree-like directory service and supports change notification, it's suitable to use it as dubbo's registry server. It's a field-proven product, therefore it's recommended to use it in the production environment. <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup></p>\n<p><img src=\"../../sources/images/zoo [...]
     },
     {
-      "filename": "references/telnet.md",
+      "filename": "user/references/telnet.md",
       "__html": "<h1>Telnet Command Reference</h1>\n<p>Since <code>2.0.5</code> dubbo starts supporting to use telnet command to govern services.</p>\n<h2>How To Use</h2>\n<pre><code class=\"language-sh\">telnet localhost 20880\n</code></pre>\n<p>Or:</p>\n<pre><code class=\"language-sh\"><span class=\"hljs-built_in\">echo</span> status | nc -i 1 localhost 20880\n</code></pre>\n<p>It is possible to extend command <code>status</code> to check more resources, pls. refer to <a href=\"http:// [...]
     },
     {
-      "filename": "references/xml/dubbo-application.md",
+      "filename": "user/references/xml/dubbo-application.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-argument.md",
+      "filename": "user/references/xml/dubbo-argument.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-consumer.md",
+      "filename": "user/references/xml/dubbo-consumer.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-method.md",
+      "filename": "user/references/xml/dubbo-method.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-module.md",
+      "filename": "user/references/xml/dubbo-module.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-monitor.md",
+      "filename": "user/references/xml/dubbo-monitor.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-parameter.md",
+      "filename": "user/references/xml/dubbo-parameter.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-protocol.md",
+      "filename": "user/references/xml/dubbo-protocol.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-provider.md",
+      "filename": "user/references/xml/dubbo-provider.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-reference.md",
+      "filename": "user/references/xml/dubbo-reference.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-registry.md",
+      "filename": "user/references/xml/dubbo-registry.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/dubbo-service.md",
+      "filename": "user/references/xml/dubbo-service.md",
       "__html": "<style>\ntable {\n  width: 100%;\n  max-width: 65em;\n  border: 1px solid #dedede;\n  margin: 15px auto;\n  border-collapse: collapse;\n  empty-cells: show;\n}\ntable th,\ntable td {\n  height: 35px;\n  border: 1px solid #dedede;\n  padding: 0 10px;\n}\ntable th {\n  font-weight: bold;\n  text-align: center !important;\n  background: rgba(158,188,226,0.2);\n  white-space: nowrap;\n}\ntable tbody tr:nth-child(2n) {\n  background: rgba(158,188,226,0.12);\n}\ntable td:nth-c [...]
     },
     {
-      "filename": "references/xml/introduction.md",
+      "filename": "user/references/xml/introduction.md",
       "__html": "<h1>schema configuration reference</h1>\n<p>The following pages show all the configuration properties <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> with XML Config <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup> as an example.  For other configurations, please reference: <a href=\"../../configuration/properties.md\">Properties Configuration</a>, <a href=\"../../configuration/annotation.md\">Annotation Configuration</a>, [...]
     },
     {
-      "filename": "simple-monitor.md",
+      "filename": "user/simple-monitor.md",
       "__html": "<blockquote>\n<p><img src=\"sources/images/check.gif\" alt=\"warning\">Monitor service is a standard Dubbo service,can be exported to the registry,also can be connected straightly。</p>\n</blockquote>\n<blockquote>\n<p><img src=\"sources/images/check.gif\" alt=\"warning\">[Install the simple registry](admin-guide-install-manual#Install the simple registry)</p>\n</blockquote>\n<ol start=\"0\">\n<li>\n<p>export a simple monitor service to the registry: (If you use the insta [...]
     }
   ]
diff --git a/site_config/docs.js b/site_config/docs.js
index 948ab5a..0b4b5f6 100644
--- a/site_config/docs.js
+++ b/site_config/docs.js
@@ -9,52 +9,52 @@ export default {
             children: [
               {
                 title: 'Background',
-                link: '/docs/preface/background.md',
+                link: '/docs/user/preface/background.md',
               },
               {
                 title: 'Requirements',
-                link: '/docs/preface/requirements.md',
+                link: '/docs/user/preface/requirements.md',
               },
               {
                 title: 'Architecture',
-                link: '/docs/preface/architecture.md'
+                link: '/docs/user/preface/architecture.md'
               },
               {
                 title: 'Usage',
-                link: '/docs/preface/usage.md'
+                link: '/docs/user/preface/usage.md'
               }
             ],
           },
           {
             title: 'Quick start',
-            link: '/docs/quick-start.md'
+            link: '/docs/user/quick-start.md'
           },
           {
             title: 'Dependencies',
-            link: '/docs/dependencies.md'
+            link: '/docs/user/dependencies.md'
           },
           {
             title: 'Maturality',
-            link: '/docs/maturity.md'
+            link: '/docs/user/maturity.md'
           },
           {
             title: 'Configuration',
             children: [
               {
                 title: 'XML configuration',
-                link: '/docs/configuration/xml.md',
+                link: '/docs/user/configuration/xml.md',
               },
               {
                 title: 'Properties configuration',
-                link: '/docs/configuration/properties.md',
+                link: '/docs/user/configuration/properties.md',
               },
               {
                 title: 'API configuration',
-                link: '/docs/configuration/api.md'
+                link: '/docs/user/configuration/api.md'
               },
               {
                 title: 'Annotation configuration',
-                link: '/docs/configuration/annotation.md'
+                link: '/docs/user/configuration/annotation.md'
               }
             ],
           },
@@ -63,240 +63,240 @@ export default {
             children: [
               {
                 title: 'Start check',
-                link: '/docs/demos/preflight-check.md',
+                link: '/docs/user/demos/preflight-check.md',
               },
               {
                 title: 'Fault-tolerent strategy',
-                link: '/docs/demos/fault-tolerent-strategy.md',
+                link: '/docs/user/demos/fault-tolerent-strategy.md',
               },
               {
                 title: 'Load balance',
-                link: '/docs/demos/loadbalance.md'
+                link: '/docs/user/demos/loadbalance.md'
               },
               {
                 title: 'Thread model',
-                link: '/docs/demos/thread-model.md'
+                link: '/docs/user/demos/thread-model.md'
               },
               {
                 title: 'Connecting certain provider straightly',
-                link: '/docs/demos/explicit-target.md',
+                link: '/docs/user/demos/explicit-target.md',
               },
               {
                 title: 'Subscribe only',
-                link: '/docs/demos/subscribe-only.md',
+                link: '/docs/user/demos/subscribe-only.md',
               },
               {
                 title: 'Registry only',
-                link: '/docs/demos/registry-only.md'
+                link: '/docs/user/demos/registry-only.md'
               },
               {
                 title: 'Static service',
-                link: '/docs/demos/static-service.md'
+                link: '/docs/user/demos/static-service.md'
               },
               {
                 title: 'Multi-protocols',
-                link: '/docs/demos/multi-protocols.md',
+                link: '/docs/user/demos/multi-protocols.md',
               },
               {
                 title: 'Multi-registries',
-                link: '/docs/demos/multi-registry.md',
+                link: '/docs/user/demos/multi-registry.md',
               },
               {
                 title: 'Service group',
-                link: '/docs/demos/service-group.md'
+                link: '/docs/user/demos/service-group.md'
               },
               {
                 title: 'Multi-versions',
-                link: '/docs/demos/multi-versions.md'
+                link: '/docs/user/demos/multi-versions.md'
               },
               {
                 title: 'Group merger',
-                link: '/docs/demos/group-merger.md',
+                link: '/docs/user/demos/group-merger.md',
               },
               {
                 title: 'Parameter validation',
-                link: '/docs/demos/parameter-validation.md',
+                link: '/docs/user/demos/parameter-validation.md',
               },
               {
                 title: 'Result cache',
-                link: '/docs/demos/result-cache.md'
+                link: '/docs/user/demos/result-cache.md'
               },
               {
                 title: 'Generic reference',
-                link: '/docs/demos/generic-reference.md'
+                link: '/docs/user/demos/generic-reference.md'
               },
               {
                 title: 'Generic service',
-                link: '/docs/demos/generic-service.md',
+                link: '/docs/user/demos/generic-service.md',
               },
               {
                 title: 'Echo service',
-                link: '/docs/demos/echo-service.md',
+                link: '/docs/user/demos/echo-service.md',
               },
               {
                 title: 'Context',
-                link: '/docs/demos/context.md'
+                link: '/docs/user/demos/context.md'
               },
               {
                 title: 'Attachment',
-                link: '/docs/demos/attachment.md'
+                link: '/docs/user/demos/attachment.md'
               },
               {
                 title: 'Asynchronous call',
-                link: '/docs/demos/async-call.md',
+                link: '/docs/user/demos/async-call.md',
               },
               {
                 title: 'Local call',
-                link: '/docs/demos/local-call.md',
+                link: '/docs/user/demos/local-call.md',
               },
               {
                 title: 'Callback parameter',
-                link: '/docs/demos/callback-parameter.md'
+                link: '/docs/user/demos/callback-parameter.md'
               },
               {
                 title: 'Events notify',
-                link: '/docs/demos/events-notify.md'
+                link: '/docs/user/demos/events-notify.md'
               },
               {
                 title: 'Local stub',
-                link: '/docs/demos/local-stub.md',
+                link: '/docs/user/demos/local-stub.md',
               },
               {
                 title: 'Local mock',
-                link: '/docs/demos/local-mock.md',
+                link: '/docs/user/demos/local-mock.md',
               },
               {
                 title: 'Delay publish',
-                link: '/docs/demos/delay-publish.md'
+                link: '/docs/user/demos/delay-publish.md'
               },
               {
                 title: 'Concurrency control',
-                link: '/docs/demos/concurrency-control.md'
+                link: '/docs/user/demos/concurrency-control.md'
               },
               {
                 title: 'Connections limitation',
-                link: '/docs/demos/config-connections.md',
+                link: '/docs/user/demos/config-connections.md',
               },
               {
                 title: 'Lazy connect',
-                link: '/docs/demos/lazy-connect.md',
+                link: '/docs/user/demos/lazy-connect.md',
               },
               {
                 title: 'Stickness connections',
-                link: '/docs/demos/stickiness.md'
+                link: '/docs/user/demos/stickiness.md'
               },
               {
                 title: 'Token authorization',
-                link: '/docs/demos/token-authorization.md'
+                link: '/docs/user/demos/token-authorization.md'
               },
               {
                 title: 'Routing rule',
-                link: '/docs/demos/routing-rule.md',
+                link: '/docs/user/demos/routing-rule.md',
               },
               {
                 title: 'Configuration rule',
-                link: '/docs/demos/config-rule.md',
+                link: '/docs/user/demos/config-rule.md',
               },
               {
                 title: 'Service downgrade',
-                link: '/docs/demos/service-downgrade.md'
+                link: '/docs/user/demos/service-downgrade.md'
               },
               {
                 title: 'Graceful shutdown',
-                link: '/docs/demos/graceful-shutdown.md'
+                link: '/docs/user/demos/graceful-shutdown.md'
               },
               {
                 title: 'Hostname binding',
-                link: '/docs/demos/hostname-binding.md',
+                link: '/docs/user/demos/hostname-binding.md',
               },
               {
                 title: 'Logger strategy',
-                link: '/docs/demos/logger-strategy.md',
+                link: '/docs/user/demos/logger-strategy.md',
               },
               {
                 title: 'Accesslog',
-                link: '/docs/demos/accesslog.md'
+                link: '/docs/user/demos/accesslog.md'
               },
               {
                 title: 'Service container',
-                link: '/docs/demos/service-container.md'
+                link: '/docs/user/demos/service-container.md'
               },
               {
                 title: 'Reference config cache',
-                link: '/docs/demos/reference-config-cache.md',
+                link: '/docs/user/demos/reference-config-cache.md',
               },
               {
                 title: 'Distributed transaction',
-                link: '/docs/demos/distributed-transaction.md',
+                link: '/docs/user/demos/distributed-transaction.md',
               },
               {
                 title: 'Automatic thread dump',
-                link: '/docs/demos/dump.md'
+                link: '/docs/user/demos/dump.md'
               },
               {
                 title: 'Netty4',
-                link: '/docs/demos/netty4.md'
+                link: '/docs/user/demos/netty4.md'
               },
             ],
           },
           {
             title: 'API configuration reference',
-            link: '/docs/references/api.md'
+            link: '/docs/user/references/api.md'
           },
           {
             title: 'Schema configuration reference',
             children: [
               {
                 title: 'Introduction',
-                link: '/docs/references/xml/introduction.md',
+                link: '/docs/user/references/xml/introduction.md',
               },
               {
                 title: 'dubbo:service',
-                link: '/docs/references/xml/dubbo-service.md',
+                link: '/docs/user/references/xml/dubbo-service.md',
               },
               {
                 title: 'dubbo:reference',
-                link: '/docs/references/xml/dubbo-reference.md',
+                link: '/docs/user/references/xml/dubbo-reference.md',
               },
               {
                 title: 'dubbo:protocol',
-                link: '/docs/references/xml/dubbo-protocol.md',
+                link: '/docs/user/references/xml/dubbo-protocol.md',
               },
               {
                 title: 'dubbo:registry',
-                link: '/docs/references/xml/dubbo-registry.md',
+                link: '/docs/user/references/xml/dubbo-registry.md',
               },
               {
                 title: 'dubbo:monitor',
-                link: '/docs/references/xml/dubbo-monitor.md',
+                link: '/docs/user/references/xml/dubbo-monitor.md',
               },
               {
                 title: 'dubbo:application',
-                link: '/docs/references/xml/dubbo-application.md',
+                link: '/docs/user/references/xml/dubbo-application.md',
               },
               {
                 title: 'dubbo:module',
-                link: '/docs/references/xml/dubbo-module.md',
+                link: '/docs/user/references/xml/dubbo-module.md',
               },
               {
                 title: 'dubbo:provider',
-                link: '/docs/references/xml/dubbo-provider.md',
+                link: '/docs/user/references/xml/dubbo-provider.md',
               },
               {
                 title: 'dubbo:consumer',
-                link: '/docs/references/xml/dubbo-consumer.md',
+                link: '/docs/user/references/xml/dubbo-consumer.md',
               },
               {
                 title: 'dubbo:method',
-                link: '/docs/references/xml/dubbo-method.md',
+                link: '/docs/user/references/xml/dubbo-method.md',
               },
               {
                 title: 'dubbo:argument',
-                link: '/docs/references/xml/dubbo-argument.md',
+                link: '/docs/user/references/xml/dubbo-argument.md',
               },
               {
                 title: 'dubbo:parameter',
-                link: '/docs/references/xml/dubbo-parameter.md',
+                link: '/docs/user/references/xml/dubbo-parameter.md',
               },
             ]
           },
@@ -305,43 +305,43 @@ export default {
             children: [
               {
                 title: 'Introduction',
-                link: '/docs/references/protocol/introduction.md',
+                link: '/docs/user/references/protocol/introduction.md',
               },
               {
                 title: 'dubbo://',
-                link: '/docs/references/protocol/dubbo.md',
+                link: '/docs/user/references/protocol/dubbo.md',
               },
               {
                 title: 'rmi://',
-                link: '/docs/references/protocol/rmi.md',
+                link: '/docs/user/references/protocol/rmi.md',
               },
               {
                 title: 'hessian://',
-                link: '/docs/references/protocol/hessian.md',
+                link: '/docs/user/references/protocol/hessian.md',
               },
               {
                 title: 'http://',
-                link: '/docs/references/protocol/http.md',
+                link: '/docs/user/references/protocol/http.md',
               },
               {
                 title: 'webservice://',
-                link: '/docs/references/protocol/webservice.md',
+                link: '/docs/user/references/protocol/webservice.md',
               },
               {
                 title: 'thrift://',
-                link: '/docs/references/protocol/thrift.md',
+                link: '/docs/user/references/protocol/thrift.md',
               },
               {
                 title: 'memcached://',
-                link: '/docs/references/protocol/memcached.md',
+                link: '/docs/user/references/protocol/memcached.md',
               },
               {
                 title: 'redis://',
-                link: '/docs/references/protocol/redis.md',
+                link: '/docs/user/references/protocol/redis.md',
               },
               {
                 title: 'rest://',
-                link: '/docs/references/protocol/rest.md',
+                link: '/docs/user/references/protocol/rest.md',
               },
             ]
           },
@@ -350,53 +350,53 @@ export default {
             children: [
               {
                 title: 'Introduction',
-                link: '/docs/references/registry/introduction.md',
+                link: '/docs/user/references/registry/introduction.md',
               },
               {
                 title: 'Multicast registry',
-                link: '/docs/references/registry/multicast.md',
+                link: '/docs/user/references/registry/multicast.md',
               },
               {
                 title: 'Zookeeper registry',
-                link: '/docs/references/registry/zookeeper.md',
+                link: '/docs/user/references/registry/zookeeper.md',
               },
               {
                 title: 'Redis registry',
-                link: '/docs/references/registry/redis.md',
+                link: '/docs/user/references/registry/redis.md',
               },
               {
                 title: 'Simple registry',
-                link: '/docs/references/registry/simple.md',
+                link: '/docs/user/references/registry/simple.md',
               },
             ]
           },
           {
             title: 'Telnet command',
-            link: '/docs/references/telnet.md'
+            link: '/docs/user/references/telnet.md'
           },
           {
             title: 'Maven plugin',
-            link: '/docs/references/maven.md'
+            link: '/docs/user/references/maven.md'
           },
           {
             title: 'Best practice',
-            link: '/docs/best-practice.md'
+            link: '/docs/user/best-practice.md'
           },
           {
             title: 'Recommended usage',
-            link: '/docs/recommend.md'
+            link: '/docs/user/recommend.md'
           },
           {
             title: 'Capacity plan',
-            link: '/docs/capacity-plan.md'
+            link: '/docs/user/capacity-plan.md'
           },
           {
             title: 'Performance testing reports',
-            link: '/docs/perf-test.md'
+            link: '/docs/user/perf-test.md'
           },
           {
             title: 'Test coverage report',
-            link: '/docs/coveragence.md'
+            link: '/docs/user/coveragence.md'
           }
         ],
       },
@@ -413,52 +413,52 @@ export default {
             children: [
               {
                 title: '背景',
-                link: '/docs/preface/background.md',
+                link: '/docs/user/preface/background.md',
               },
               {
                 title: '需求',
-                link: '/docs/preface/requirements.md',
+                link: '/docs/user/preface/requirements.md',
               },
               {
                 title: '架构',
-                link: '/docs/preface/architecture.md'
+                link: '/docs/user/preface/architecture.md'
               },
               {
                 title: '用法',
-                link: '/docs/preface/usage.md'
+                link: '/docs/user/preface/usage.md'
               }
             ],
           },
           {
             title: '快速启动',
-            link: '/docs/quick-start.md'
+            link: '/docs/user/quick-start.md'
           },
           {
             title: '依赖',
-            link: '/docs/dependencies.md'
+            link: '/docs/user/dependencies.md'
           },
           {
             title: '成熟度',
-            link: '/docs/maturity.md'
+            link: '/docs/user/maturity.md'
           },
           {
             title: '配置',
             children: [
               {
                 title: 'XML配置',
-                link: '/docs/configuration/xml.md',
+                link: '/docs/user/configuration/xml.md',
               },
               {
                 title: '属性配置',
-                link: '/docs/configuration/properties.md',
+                link: '/docs/user/configuration/properties.md',
               },
               {
                 title: 'API配置',
-                link: '/docs/configuration/api.md'
+                link: '/docs/user/configuration/api.md'
               },
               {
                 title: '注解配置',
-                link: '/docs/configuration/annotation.md'
+                link: '/docs/user/configuration/annotation.md'
               }
             ],
           },
@@ -467,244 +467,244 @@ export default {
             children: [
               {
                 title: '启动时检查',
-                link: '/docs/demos/preflight-check.md',
+                link: '/docs/user/demos/preflight-check.md',
               },
               {
                 title: '集群容错',
-                link: '/docs/demos/fault-tolerent-strategy.md',
+                link: '/docs/user/demos/fault-tolerent-strategy.md',
               },
               {
                 title: '负载均衡',
-                link: '/docs/demos/loadbalance.md'
+                link: '/docs/user/demos/loadbalance.md'
               },
               {
                 title: '线程模型',
-                link: '/docs/demos/thread-model.md'
+                link: '/docs/user/demos/thread-model.md'
               },
               {
                 title: '直连提供者',
-                link: '/docs/demos/explicit-target.md',
+                link: '/docs/user/demos/explicit-target.md',
               },
               {
                 title: '只订阅',
-                link: '/docs/demos/subscribe-only.md',
+                link: '/docs/user/demos/subscribe-only.md',
               },
               {
                 title: '只注册',
-                link: '/docs/demos/registry-only.md'
+                link: '/docs/user/demos/registry-only.md'
               },
               {
                 title: '静态服务',
-                link: '/docs/demos/static-service.md'
+                link: '/docs/user/demos/static-service.md'
               },
               {
                 title: '多协议',
-                link: '/docs/demos/multi-protocols.md',
+                link: '/docs/user/demos/multi-protocols.md',
               },
               {
                 title: '多注册中心',
-                link: '/docs/demos/multi-registry.md',
+                link: '/docs/user/demos/multi-registry.md',
               },
               {
                 title: '服务分组',
-                link: '/docs/demos/service-group.md'
+                link: '/docs/user/demos/service-group.md'
               },
               {
                 title: '多版本',
-                link: '/docs/demos/multi-versions.md'
+                link: '/docs/user/demos/multi-versions.md'
               },
               {
                 title: '分组聚合',
-                link: '/docs/demos/group-merger.md',
+                link: '/docs/user/demos/group-merger.md',
               },
               {
                 title: '参数验证',
-                link: '/docs/demos/parameter-validation.md',
+                link: '/docs/user/demos/parameter-validation.md',
               },
               {
                 title: '结果缓存',
-                link: '/docs/demos/result-cache.md'
+                link: '/docs/user/demos/result-cache.md'
               },
               {
                 title: '泛化引用',
-                link: '/docs/demos/generic-reference.md'
+                link: '/docs/user/demos/generic-reference.md'
               },
               {
                 title: '泛化实现',
-                link: '/docs/demos/generic-service.md',
+                link: '/docs/user/demos/generic-service.md',
               },
               {
                 title: '回声测试',
-                link: '/docs/demos/echo-service.md',
+                link: '/docs/user/demos/echo-service.md',
               },
               {
                 title: '上下文信息',
-                link: '/docs/demos/context.md'
+                link: '/docs/user/demos/context.md'
               },
               {
                 title: '隐式参数',
-                link: '/docs/demos/attachment.md'
+                link: '/docs/user/demos/attachment.md'
               },
               {
                 title: '异步调用',
-                link: '/docs/demos/async-call.md',
+                link: '/docs/user/demos/async-call.md',
               },
               {
                 title: '本地调用',
-                link: '/docs/demos/local-call.md',
+                link: '/docs/user/demos/local-call.md',
               },
               {
                 title: '参数回调',
-                link: '/docs/demos/callback-parameter.md'
+                link: '/docs/user/demos/callback-parameter.md'
               },
               {
                 title: '事件通知',
-                link: '/docs/demos/events-notify.md'
+                link: '/docs/user/demos/events-notify.md'
               },
               {
                 title: '本地存根',
-                link: '/docs/demos/local-stub.md',
+                link: '/docs/user/demos/local-stub.md',
               },
               {
                 title: '本地伪装',
-                link: '/docs/demos/local-mock.md',
+                link: '/docs/user/demos/local-mock.md',
               },
               {
                 title: '延迟暴露',
-                link: '/docs/demos/delay-publish.md'
+                link: '/docs/user/demos/delay-publish.md'
               },
               {
                 title: '并发控制',
-                link: '/docs/demos/concurrency-control.md'
+                link: '/docs/user/demos/concurrency-control.md'
               },
               {
                 title: '连接控制',
-                link: '/docs/demos/config-connections.md',
+                link: '/docs/user/demos/config-connections.md',
               },
               {
                 title: '延迟连接',
-                link: '/docs/demos/lazy-connect.md',
+                link: '/docs/user/demos/lazy-connect.md',
               },
               {
                 title: '粘滞连接',
-                link: '/docs/demos/stickiness.md'
+                link: '/docs/user/demos/stickiness.md'
               },
               {
                 title: '令牌验证',
-                link: '/docs/demos/token-authorization.md'
+                link: '/docs/user/demos/token-authorization.md'
               },
               {
                 title: '路由规则',
-                link: '/docs/demos/routing-rule.md',
+                link: '/docs/user/demos/routing-rule.md',
               },
               {
                 title: '配置规则',
-                link: '/docs/demos/config-rule.md',
+                link: '/docs/user/demos/config-rule.md',
               },
               {
                 title: '服务降级',
-                link: '/docs/demos/service-downgrade.md'
+                link: '/docs/user/demos/service-downgrade.md'
               },
               {
                 title: '优雅停机',
-                link: '/docs/demos/graceful-shutdown.md'
+                link: '/docs/user/demos/graceful-shutdown.md'
               },
               {
                 title: '主机绑定',
-                link: '/docs/demos/hostname-binding.md',
+                link: '/docs/user/demos/hostname-binding.md',
               },
               {
                 title: '日志适配',
-                link: '/docs/demos/logger-strategy.md',
+                link: '/docs/user/demos/logger-strategy.md',
               },
               {
                 title: '访问日志',
-                link: '/docs/demos/accesslog.md'
+                link: '/docs/user/demos/accesslog.md'
               },
               {
                 title: '服务容器',
-                link: '/docs/demos/service-container.md'
+                link: '/docs/user/demos/service-container.md'
               },
               {
                 title: 'Reference Config 缓存',
-                link: '/docs/demos/reference-config-cache.md',
+                link: '/docs/user/demos/reference-config-cache.md',
               },
               {
                 title: '分布式事务',
-                link: '/docs/demos/distributed-transaction.md',
+                link: '/docs/user/demos/distributed-transaction.md',
               },
               {
                 title: '线程栈自动dump',
-                link: '/docs/demos/dump.md'
+                link: '/docs/user/demos/dump.md'
               },
               {
                 title: 'Netty4',
-                link: '/docs/demos/netty4.md'
+                link: '/docs/user/demos/netty4.md'
               },
               {
                 title: 'Kryo和FST序列化',
-                link: '/docs/demos/serialization.md',
+                link: '/docs/user/demos/serialization.md',
               },
             ],
           },
           {
             title: 'API配置参考手册',
-            link: '/docs/references/api.md'
+            link: '/docs/user/references/api.md'
           },
           {
             title: 'schema配置参考手册',
             children: [
               {
                 title: '介绍',
-                link: '/docs/references/xml/introduction.md',
+                link: '/docs/user/references/xml/introduction.md',
               },
               {
                 title: 'dubbo:service',
-                link: '/docs/references/xml/dubbo-service.md',
+                link: '/docs/user/references/xml/dubbo-service.md',
               },
               {
                 title: 'dubbo:reference',
-                link: '/docs/references/xml/dubbo-reference.md',
+                link: '/docs/user/references/xml/dubbo-reference.md',
               },
               {
                 title: 'dubbo:protocol',
-                link: '/docs/references/xml/dubbo-protocol.md',
+                link: '/docs/user/references/xml/dubbo-protocol.md',
               },
               {
                 title: 'dubbo:registry',
-                link: '/docs/references/xml/dubbo-registry.md',
+                link: '/docs/user/references/xml/dubbo-registry.md',
               },
               {
                 title: 'dubbo:monitor',
-                link: '/docs/references/xml/dubbo-monitor.md',
+                link: '/docs/user/references/xml/dubbo-monitor.md',
               },
               {
                 title: 'dubbo:application',
-                link: '/docs/references/xml/dubbo-application.md',
+                link: '/docs/user/references/xml/dubbo-application.md',
               },
               {
                 title: 'dubbo:module',
-                link: '/docs/references/xml/dubbo-module.md',
+                link: '/docs/user/references/xml/dubbo-module.md',
               },
               {
                 title: 'dubbo:provider',
-                link: '/docs/references/xml/dubbo-provider.md',
+                link: '/docs/user/references/xml/dubbo-provider.md',
               },
               {
                 title: 'dubbo:consumer',
-                link: '/docs/references/xml/dubbo-consumer.md',
+                link: '/docs/user/references/xml/dubbo-consumer.md',
               },
               {
                 title: 'dubbo:method',
-                link: '/docs/references/xml/dubbo-method.md',
+                link: '/docs/user/references/xml/dubbo-method.md',
               },
               {
                 title: 'dubbo:argument',
-                link: '/docs/references/xml/dubbo-argument.md',
+                link: '/docs/user/references/xml/dubbo-argument.md',
               },
               {
                 title: 'dubbo:parameter',
-                link: '/docs/references/xml/dubbo-parameter.md',
+                link: '/docs/user/references/xml/dubbo-parameter.md',
               },
             ]
           },
@@ -713,43 +713,43 @@ export default {
             children: [
               {
                 title: '介绍',
-                link: '/docs/references/protocol/introduction.md',
+                link: '/docs/user/references/protocol/introduction.md',
               },
               {
                 title: 'dubbo://',
-                link: '/docs/references/protocol/dubbo.md',
+                link: '/docs/user/references/protocol/dubbo.md',
               },
               {
                 title: 'rmi://',
-                link: '/docs/references/protocol/rmi.md',
+                link: '/docs/user/references/protocol/rmi.md',
               },
               {
                 title: 'hessian://',
-                link: '/docs/references/protocol/hessian.md',
+                link: '/docs/user/references/protocol/hessian.md',
               },
               {
                 title: 'http://',
-                link: '/docs/references/protocol/http.md',
+                link: '/docs/user/references/protocol/http.md',
               },
               {
                 title: 'webservice://',
-                link: '/docs/references/protocol/webservice.md',
+                link: '/docs/user/references/protocol/webservice.md',
               },
               {
                 title: 'thrift://',
-                link: '/docs/references/protocol/thrift.md',
+                link: '/docs/user/references/protocol/thrift.md',
               },
               {
                 title: 'memcached://',
-                link: '/docs/references/protocol/memcached.md',
+                link: '/docs/user/references/protocol/memcached.md',
               },
               {
                 title: 'redis://',
-                link: '/docs/references/protocol/redis.md',
+                link: '/docs/user/references/protocol/redis.md',
               },
               {
                 title: 'rest://',
-                link: '/docs/references/protocol/rest.md',
+                link: '/docs/user/references/protocol/rest.md',
               },
             ]
           },
@@ -758,57 +758,57 @@ export default {
             children: [
               {
                 title: '介绍',
-                link: '/docs/references/registry/introduction.md',
+                link: '/docs/user/references/registry/introduction.md',
               },
               {
                 title: 'Multicast 注册中心',
-                link: '/docs/references/registry/multicast.md',
+                link: '/docs/user/references/registry/multicast.md',
               },
               {
                 title: 'Zookeeper 注册中心',
-                link: '/docs/references/registry/zookeeper.md',
+                link: '/docs/user/references/registry/zookeeper.md',
               },
               {
                 title: 'Redis 注册中心',
-                link: '/docs/references/registry/redis.md',
+                link: '/docs/user/references/registry/redis.md',
               },
               {
                 title: 'Simple 注册中心',
-                link: '/docs/references/registry/simple.md',
+                link: '/docs/user/references/registry/simple.md',
               },
             ]
           },
           {
             title: 'telnet命令参考手册',
-            link: '/docs/references/telnet.md'
+            link: '/docs/user/references/telnet.md'
           },
           {
             title: '在线运维命令-QOS',
-            link: '/docs/references/qos.md'
+            link: '/docs/user/references/qos.md'
           },
           {
             title: 'maven插件参考手册',
-            link: '/docs/references/maven.md'
+            link: '/docs/user/references/maven.md'
           },
           {
             title: '服务化最佳实践',
-            link: '/docs/best-practice.md'
+            link: '/docs/user/best-practice.md'
           },
           {
             title: '推荐用法',
-            link: '/docs/recommend.md'
+            link: '/docs/user/recommend.md'
           },
           {
             title: '容量规划',
-            link: '/docs/capacity-plan.md'
+            link: '/docs/user/capacity-plan.md'
           },
           {
             title: '性能测试报告',
-            link: '/docs/perf-test.md'
+            link: '/docs/user/perf-test.md'
           },
           {
             title: '测试覆盖率报告',
-            link: '/docs/coveragence.md'
+            link: '/docs/user/coveragence.md'
           }
         ],
       },
diff --git a/site_config/home.jsx b/site_config/home.jsx
index 27901bd..ceb8db1 100644
--- a/site_config/home.jsx
+++ b/site_config/home.jsx
@@ -7,7 +7,7 @@ export default {
       briefIntroduction: 'Apache Dubbo™ (incubating)是一款高性能Java RPC框架。',
       button: {
         text: '立即开始',
-        link: '/docs/quick-start.md',
+        link: '/docs/user/quick-start.md',
       }
     },
     introduction: {
@@ -56,7 +56,7 @@ export default {
       img: './img/quick_start.png',
       button: {
         text: '阅读更多',
-        link: '/docs/quick-start.md',
+        link: '/docs/user/quick-start.md',
       },
     },
     users: {
@@ -88,7 +88,7 @@ export default {
       briefIntroduction: 'Apache Dubbo™ (incubating) is a high-performance, java based open source RPC framework.',
       button: {
         text: 'GET STARTED',
-        link: '/docs/quick-start.md',
+        link: '/docs/user/quick-start.md',
       }
     },
     introduction: {
@@ -137,7 +137,7 @@ export default {
       img: './img/quick_start.png',
       button: {
         text: 'READ MORE',
-        link: '/docs/quick-start.md',
+        link: '/docs/user/quick-start.md',
       },
     },
     users: {
diff --git a/site_config/site.js b/site_config/site.js
index c9afd15..d6b046f 100644
--- a/site_config/site.js
+++ b/site_config/site.js
@@ -8,7 +8,7 @@ export default {
       },
       {
         text: 'DOCS',
-        link: '/docs/quick-start.md',
+        link: '/docs/user/quick-start.md',
       },
       {
         text: 'BLOG',
@@ -28,11 +28,11 @@ export default {
       list: [
         {
           text: 'Overview',
-          link: '/docs/preface/architecture.md',
+          link: '/docs/user/preface/architecture.md',
         },
         {
           text: 'Quick start',
-          link: '/docs/quick-start.md',
+          link: '/docs/user/quick-start.md',
         },
         {
           text: 'Developer guide',
@@ -63,7 +63,7 @@ export default {
       },
       {
         text: '文档',
-        link: '/docs/quick-start.md',
+        link: '/docs/user/quick-start.md',
       },
       {
         text: '博客',
@@ -83,11 +83,11 @@ export default {
       list: [
         {
           text: '概览',
-          link: '/docs/preface/architecture.md',
+          link: '/docs/user/preface/architecture.md',
         },
         {
           text: '快速开始',
-          link: '/docs/quick-start.md',
+          link: '/docs/user/quick-start.md',
         },
         {
           text: '开发者指南',
diff --git a/src/index.jsx b/src/index.jsx
index f7d3ef5..b7def8d 100644
--- a/src/index.jsx
+++ b/src/index.jsx
@@ -14,8 +14,8 @@ class App extends React.Component {
     return (
       <HashRouter>
         <Switch>
-          <Redirect exact from="/docs" to="/docs/quick-start.md" />
-          <Redirect exact from="/docs/" to="/docs/quick-start.md" />
+          <Redirect exact from="/docs" to="/docs/user/quick-start.md" />
+          <Redirect exact from="/docs/" to="/docs/user/quick-start.md" />
           <Route exact path="/" component={Home} />
           <Route exact path="/community" component={Community} />
           <Route exact path="/blog" component={Blog} />