You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gi...@apache.org on 2020/03/27 09:15:14 UTC

[dubbo-website] branch asf-site updated: Automated deployment: Fri Mar 27 09:15:01 UTC 2020 a5ddc2a3adb8d8c60e43bebc3c8916b7c42f2f94

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new 0007baf  Automated deployment: Fri Mar 27 09:15:01 UTC 2020 a5ddc2a3adb8d8c60e43bebc3c8916b7c42f2f94
0007baf is described below

commit 0007bafd5bb09c2d4c7c3191562269f2478384d6
Author: chickenlj <ch...@users.noreply.github.com>
AuthorDate: Fri Mar 27 09:15:01 2020 +0000

    Automated deployment: Fri Mar 27 09:15:01 UTC 2020 a5ddc2a3adb8d8c60e43bebc3c8916b7c42f2f94
---
 build/blog.js                                      |   4 +-
 build/documentation.js                             |   4 +-
 img/docs/cluster-lb.png                            | Bin 0 -> 365249 bytes
 img/docs/community-distribution.png                | Bin 0 -> 109956 bytes
 img/docs/community-github.png                      | Bin 0 -> 404265 bytes
 img/docs/community-meetup.png                      | Bin 0 -> 102115 bytes
 img/docs/config.png                                | Bin 0 -> 116251 bytes
 img/docs/consumer-threadpool0.png                  | Bin 0 -> 314209 bytes
 img/docs/consumer-threadpool1.png                  | Bin 0 -> 421182 bytes
 img/docs/dubbo-screen.png                          | Bin 0 -> 355637 bytes
 img/docs/dubbo-screen2.png                         | Bin 0 -> 353965 bytes
 img/docs/filter.png                                | Bin 0 -> 295098 bytes
 img/docs/grpcrest.png                              | Bin 0 -> 274229 bytes
 img/docs/heterogeneous.png                         | Bin 0 -> 236827 bytes
 img/docs/idl-dubbo-compiler.png                    | Bin 0 -> 498337 bytes
 img/docs/microservices.png                         | Bin 0 -> 295839 bytes
 img/docs/migrate-final.png                         | Bin 0 -> 356554 bytes
 img/docs/migrate.png                               | Bin 0 -> 272647 bytes
 img/docs/multiregistries.png                       | Bin 0 -> 511661 bytes
 img/docs/multisubscribe.png                        | Bin 0 -> 802610 bytes
 img/docs/route-app.png                             | Bin 0 -> 328631 bytes
 img/docs/route-service.png                         | Bin 0 -> 357813 bytes
 img/docs/service-idl.png                           | Bin 0 -> 374229 bytes
 img/docs/service-idl2.png                          | Bin 0 -> 1084387 bytes
 img/docs/servicediscovery-new.png                  | Bin 0 -> 227813 bytes
 img/docs/servicediscovery-old.png                  | Bin 0 -> 527472 bytes
 md_json/blog.json                                  |  20 ++
 md_json/docs.json                                  |  30 +++
 zh-cn/blog/2.7.5-release.html                      | 253 ++++++++++++++++++
 zh-cn/blog/2.7.5-release.json                      |   6 +
 zh-cn/blog/apche-dubbo-2019-2020.html              | 290 +++++++++++++++++++++
 zh-cn/blog/apche-dubbo-2019-2020.json              |   6 +
 .../blog/connect-heterogeneous-microservices.html  | 256 ++++++++++++++++++
 .../blog/connect-heterogeneous-microservices.json  |   6 +
 zh-cn/blog/dubbo-practice-from-guazi.html          | 195 ++++++++++++++
 zh-cn/blog/dubbo-practice-from-guazi.json          |   6 +
 zh-cn/blog/index.html                              |   2 +-
 zh-cn/docs/admin/README.html                       |   2 +-
 zh-cn/docs/admin/SUMMARY.html                      |   2 +-
 zh-cn/docs/admin/install/admin-console.html        |   2 +-
 zh-cn/docs/admin/install/consumer-demo.html        |   2 +-
 zh-cn/docs/admin/install/introduction.html         |   2 +-
 zh-cn/docs/admin/install/provider-demo.html        |   2 +-
 zh-cn/docs/admin/install/redis.html                |   2 +-
 .../docs/admin/install/simple-monitor-center.html  |   2 +-
 .../docs/admin/install/simple-registry-center.html |   2 +-
 zh-cn/docs/admin/install/zookeeper.html            |   2 +-
 zh-cn/docs/admin/introduction.html                 |   2 +-
 zh-cn/docs/admin/ops/dubbo-ops.html                |   2 +-
 zh-cn/docs/admin/ops/introduction.html             |   2 +-
 zh-cn/docs/admin/ops/pinpoint.html                 |   2 +-
 zh-cn/docs/admin/ops/skywalking.html               |   2 +-
 zh-cn/docs/admin/serviceGovernance.html            |   2 +-
 zh-cn/docs/admin/serviceSearch.html                |   2 +-
 zh-cn/docs/admin/serviceTest.html                  |   2 +-
 zh-cn/docs/dev/README.html                         |   2 +-
 zh-cn/docs/dev/SPI.html                            |   2 +-
 zh-cn/docs/dev/SUMMARY.html                        |   2 +-
 zh-cn/docs/dev/TCK.html                            |   2 +-
 zh-cn/docs/dev/build.html                          |   2 +-
 zh-cn/docs/dev/checklist.html                      |   2 +-
 zh-cn/docs/dev/code-smell.html                     |   2 +-
 zh-cn/docs/dev/coding.html                         |   2 +-
 zh-cn/docs/dev/contract.html                       |   2 +-
 zh-cn/docs/dev/contribution.html                   |   2 +-
 zh-cn/docs/dev/design.html                         |   2 +-
 zh-cn/docs/dev/implementation.html                 |   2 +-
 zh-cn/docs/dev/impls/cache.html                    |   2 +-
 zh-cn/docs/dev/impls/cluster.html                  |   2 +-
 zh-cn/docs/dev/impls/compiler.html                 |   2 +-
 zh-cn/docs/dev/impls/config-center.html            |   2 +-
 zh-cn/docs/dev/impls/container.html                |   2 +-
 zh-cn/docs/dev/impls/dispatcher.html               |   2 +-
 zh-cn/docs/dev/impls/exchanger.html                |   2 +-
 zh-cn/docs/dev/impls/exporter-listener.html        |   2 +-
 zh-cn/docs/dev/impls/extension-factory.html        |   2 +-
 zh-cn/docs/dev/impls/filter.html                   |   2 +-
 zh-cn/docs/dev/impls/introduction.html             |   2 +-
 zh-cn/docs/dev/impls/invoker-listener.html         |   2 +-
 zh-cn/docs/dev/impls/load-balance.html             |   2 +-
 zh-cn/docs/dev/impls/logger-adapter.html           |   2 +-
 zh-cn/docs/dev/impls/merger.html                   |   2 +-
 zh-cn/docs/dev/impls/monitor.html                  |   2 +-
 zh-cn/docs/dev/impls/networker.html                |   2 +-
 zh-cn/docs/dev/impls/page.html                     |   2 +-
 zh-cn/docs/dev/impls/protocol.html                 |   2 +-
 zh-cn/docs/dev/impls/proxy-factory.html            |   2 +-
 zh-cn/docs/dev/impls/registry.html                 |   2 +-
 zh-cn/docs/dev/impls/remoting.html                 |   2 +-
 zh-cn/docs/dev/impls/router.html                   |   2 +-
 zh-cn/docs/dev/impls/serialize.html                |   2 +-
 zh-cn/docs/dev/impls/status-checker.html           |   2 +-
 zh-cn/docs/dev/impls/telnet-handler.html           |   2 +-
 zh-cn/docs/dev/impls/threadpool.html               |   2 +-
 zh-cn/docs/dev/impls/validation.html               |   2 +-
 zh-cn/docs/dev/introduction.html                   |   2 +-
 zh-cn/docs/dev/principals/code-detail.html         |   2 +-
 zh-cn/docs/dev/principals/configuration.html       |   2 +-
 zh-cn/docs/dev/principals/dummy.html               |   2 +-
 zh-cn/docs/dev/principals/expansibility.html       |   2 +-
 zh-cn/docs/dev/principals/extension.html           |   2 +-
 zh-cn/docs/dev/principals/general-knowledge.html   |   2 +-
 zh-cn/docs/dev/principals/introduction.html        |   2 +-
 zh-cn/docs/dev/principals/robustness.html          |   2 +-
 zh-cn/docs/dev/release.html                        |   2 +-
 .../committer-guide/apache-dubbo-page_dev.html     |   2 +-
 .../committer-guide/label-an-issue-guide_dev.html  |   2 +-
 .../committer-guide/new-committer-guide_dev.html   |   2 +-
 .../committer-guide/release-guide_dev.html         |   2 +-
 .../committer-guide/website-guide_dev.html         |   2 +-
 .../contributor-guide/become-a-committer_dev.html  |   2 +-
 .../contributor-guide/cla-signing-guide_dev.html   |   2 +-
 .../dubbo-extension-guide_dev.html                 |   2 +-
 .../mailing-list-subscription-guide_dev.html       |   2 +-
 .../new-contributor-guide_dev.html                 |   2 +-
 .../reporting-security-issues_dev.html             |   2 +-
 .../software-donation-guide_dev.html               |   2 +-
 .../contributor-guide/test-coverage-guide_dev.html |   2 +-
 zh-cn/docs/developers/developers_dev.html          |   2 +-
 zh-cn/docs/developers/guide_dev.html               |   2 +-
 zh-cn/docs/developers/user-guide/faq_dev.html      |   2 +-
 .../docs/source_code_guide/adaptive-extension.html |   2 +-
 zh-cn/docs/source_code_guide/cluster.html          |   2 +-
 zh-cn/docs/source_code_guide/directory.html        |   2 +-
 zh-cn/docs/source_code_guide/dubbo-spi.html        |   2 +-
 zh-cn/docs/source_code_guide/export-service.html   |   2 +-
 zh-cn/docs/source_code_guide/loadbalance.html      |   2 +-
 zh-cn/docs/source_code_guide/refer-service.html    |   2 +-
 zh-cn/docs/source_code_guide/router.html           |   2 +-
 .../service-invoking-process.html                  |   2 +-
 zh-cn/docs/user/README.html                        |   2 +-
 zh-cn/docs/user/SUMMARY.html                       |   2 +-
 zh-cn/docs/user/benchmark-tool.html                |   2 +-
 zh-cn/docs/user/best-practice.html                 |   2 +-
 zh-cn/docs/user/capacity-plan.html                 |   2 +-
 zh-cn/docs/user/configuration/annotation.html      |   2 +-
 zh-cn/docs/user/configuration/api.html             |   2 +-
 zh-cn/docs/user/configuration/config-center.html   |   2 +-
 .../configuration/configuration-load-process.html  |   2 +-
 .../user/configuration/environment-variables.html  |   2 +-
 zh-cn/docs/user/configuration/index.html           |   2 +-
 .../user/configuration/properties-deprecated.html  |   2 +-
 zh-cn/docs/user/configuration/properties.html      |   2 +-
 zh-cn/docs/user/configuration/xml.html             |   2 +-
 zh-cn/docs/user/coveragence.html                   |   2 +-
 .../user/demos/GooglePb-generic-reference.html     |   2 +-
 zh-cn/docs/user/demos/accesslog.html               |   2 +-
 zh-cn/docs/user/demos/async-call-deprecated.html   |   2 +-
 zh-cn/docs/user/demos/async-call.html              |   2 +-
 .../docs/user/demos/async-execute-on-provider.html |   2 +-
 zh-cn/docs/user/demos/attachment.html              |   2 +-
 zh-cn/docs/user/demos/auth.html                    |  55 ++++
 zh-cn/docs/user/demos/auth.json                    |   6 +
 zh-cn/docs/user/demos/callback-parameter.html      |   2 +-
 zh-cn/docs/user/demos/concurrency-control.html     |   2 +-
 zh-cn/docs/user/demos/config-connections.html      |   2 +-
 zh-cn/docs/user/demos/config-rule-deprecated.html  |   2 +-
 zh-cn/docs/user/demos/config-rule.html             |   2 +-
 zh-cn/docs/user/demos/consumer-threadpool.html     |  62 +++++
 zh-cn/docs/user/demos/consumer-threadpool.json     |   6 +
 zh-cn/docs/user/demos/context.html                 |   2 +-
 zh-cn/docs/user/demos/delay-publish.html           |   2 +-
 zh-cn/docs/user/demos/distributed-transaction.html |   2 +-
 zh-cn/docs/user/demos/dump.html                    |   2 +-
 zh-cn/docs/user/demos/echo-service.html            |   2 +-
 zh-cn/docs/user/demos/events-notify.html           |   2 +-
 zh-cn/docs/user/demos/explicit-target.html         |   2 +-
 zh-cn/docs/user/demos/fault-tolerent-strategy.html |   2 +-
 zh-cn/docs/user/demos/generic-reference.html       |   2 +-
 zh-cn/docs/user/demos/generic-service.html         |   2 +-
 zh-cn/docs/user/demos/graceful-shutdown.html       |   2 +-
 zh-cn/docs/user/demos/group-merger.html            |   2 +-
 zh-cn/docs/user/demos/hostname-binding.html        |   2 +-
 zh-cn/docs/user/demos/index.html                   |   2 +-
 zh-cn/docs/user/demos/introduction.html            |   2 +-
 zh-cn/docs/user/demos/lazy-connect.html            |   2 +-
 zh-cn/docs/user/demos/loadbalance.html             |   2 +-
 zh-cn/docs/user/demos/local-call.html              |   2 +-
 zh-cn/docs/user/demos/local-mock.html              |   2 +-
 zh-cn/docs/user/demos/local-stub.html              |   2 +-
 zh-cn/docs/user/demos/logger-strategy.html         |   2 +-
 zh-cn/docs/user/demos/multi-protocols.html         |   2 +-
 zh-cn/docs/user/demos/multi-registry.html          |   2 +-
 zh-cn/docs/user/demos/multi-versions.html          |   2 +-
 zh-cn/docs/user/demos/netty4.html                  |   2 +-
 zh-cn/docs/user/demos/parameter-validation.html    |   2 +-
 zh-cn/docs/user/demos/preflight-check.html         |   2 +-
 zh-cn/docs/user/demos/protobuf-idl.html            |  60 +++++
 zh-cn/docs/user/demos/protobuf-idl.json            |   6 +
 zh-cn/docs/user/demos/reference-config-cache.html  |   2 +-
 zh-cn/docs/user/demos/registry-only.html           |   2 +-
 zh-cn/docs/user/demos/result-cache.html            |   2 +-
 zh-cn/docs/user/demos/routing-rule-deprecated.html |   2 +-
 zh-cn/docs/user/demos/routing-rule.html            |   2 +-
 zh-cn/docs/user/demos/serialization.html           |   2 +-
 zh-cn/docs/user/demos/service-container.html       |   2 +-
 zh-cn/docs/user/demos/service-downgrade.html       |   2 +-
 zh-cn/docs/user/demos/service-group.html           |   2 +-
 zh-cn/docs/user/demos/set-host.html                |   2 +-
 zh-cn/docs/user/demos/simplify-registry-data.html  |   2 +-
 zh-cn/docs/user/demos/static-service.html          |   2 +-
 zh-cn/docs/user/demos/stickiness.html              |   2 +-
 zh-cn/docs/user/demos/subscribe-only.html          |   2 +-
 zh-cn/docs/user/demos/thread-model.html            |   2 +-
 zh-cn/docs/user/demos/tls.html                     |  63 +++++
 zh-cn/docs/user/demos/tls.json                     |   6 +
 zh-cn/docs/user/demos/token-authorization.html     |   2 +-
 zh-cn/docs/user/dependencies.html                  |   2 +-
 zh-cn/docs/user/languages/erlang/reference.html    |   2 +-
 .../docs/user/languages/erlang/serialization.html  |   2 +-
 zh-cn/docs/user/languages/erlang/service.html      |   2 +-
 zh-cn/docs/user/languages/erlang/start.html        |   2 +-
 zh-cn/docs/user/maturity.html                      |   2 +-
 zh-cn/docs/user/new-features-in-a-glance.html      | 141 ++++++++++
 zh-cn/docs/user/new-features-in-a-glance.json      |   6 +
 zh-cn/docs/user/perf-test.html                     |   2 +-
 zh-cn/docs/user/preface/architecture.html          |   2 +-
 zh-cn/docs/user/preface/background.html            |   2 +-
 zh-cn/docs/user/preface/index.html                 |   2 +-
 zh-cn/docs/user/preface/requirements.html          |   2 +-
 zh-cn/docs/user/preface/usage.html                 |   2 +-
 zh-cn/docs/user/quick-start.html                   |   2 +-
 zh-cn/docs/user/recommend.html                     |   2 +-
 zh-cn/docs/user/references/api.html                |   2 +-
 zh-cn/docs/user/references/maven.html              |   2 +-
 .../user/references/metadata/introduction.html     |   2 +-
 .../user/references/metadata/metadata-redis.html   |   2 +-
 .../references/metadata/metadata-zookeeper.html    |   2 +-
 zh-cn/docs/user/references/protocol/dubbo.html     |   2 +-
 zh-cn/docs/user/references/protocol/gRPC.html      |  49 ++++
 zh-cn/docs/user/references/protocol/gRPC.json      |   6 +
 zh-cn/docs/user/references/protocol/hessian.html   |   2 +-
 zh-cn/docs/user/references/protocol/http.html      |   2 +-
 .../user/references/protocol/introduction.html     |   2 +-
 zh-cn/docs/user/references/protocol/memcached.html |   2 +-
 zh-cn/docs/user/references/protocol/redis.html     |   2 +-
 zh-cn/docs/user/references/protocol/rest.html      |   2 +-
 zh-cn/docs/user/references/protocol/rmi.html       |   2 +-
 zh-cn/docs/user/references/protocol/thrift.html    |   2 +-
 .../docs/user/references/protocol/webservice.html  |   2 +-
 zh-cn/docs/user/references/qos.html                |   2 +-
 .../user/references/registry/introduction.html     |   2 +-
 zh-cn/docs/user/references/registry/multicast.html |   2 +-
 zh-cn/docs/user/references/registry/nacos.html     |   2 +-
 zh-cn/docs/user/references/registry/redis.html     |   2 +-
 zh-cn/docs/user/references/registry/simple.html    |   2 +-
 zh-cn/docs/user/references/registry/zookeeper.html |   2 +-
 zh-cn/docs/user/references/telnet.html             |   2 +-
 .../user/references/xml/dubbo-application.html     |   2 +-
 zh-cn/docs/user/references/xml/dubbo-argument.html |   2 +-
 .../user/references/xml/dubbo-config-center.html   |   2 +-
 zh-cn/docs/user/references/xml/dubbo-consumer.html |   2 +-
 zh-cn/docs/user/references/xml/dubbo-method.html   |   2 +-
 zh-cn/docs/user/references/xml/dubbo-module.html   |   2 +-
 zh-cn/docs/user/references/xml/dubbo-monitor.html  |   2 +-
 .../docs/user/references/xml/dubbo-parameter.html  |   2 +-
 zh-cn/docs/user/references/xml/dubbo-protocol.html |   2 +-
 zh-cn/docs/user/references/xml/dubbo-provider.html |   2 +-
 .../docs/user/references/xml/dubbo-reference.html  |   2 +-
 zh-cn/docs/user/references/xml/dubbo-registry.html |   2 +-
 zh-cn/docs/user/references/xml/dubbo-service.html  |   2 +-
 zh-cn/docs/user/references/xml/introduction.html   |   2 +-
 zh-cn/docs/user/rest.html                          |   2 +-
 zh-cn/docs/user/serialization.html                 |   2 +-
 zh-cn/docs/user/simple-monitor.html                |   2 +-
 zh-cn/docs/user/versions/index.html                |   2 +-
 zh-cn/docs/user/versions/version-270.html          |   2 +-
 267 files changed, 1757 insertions(+), 223 deletions(-)

diff --git a/build/blog.js b/build/blog.js
index c4d80e8..9aa0a2b 100644
--- a/build/blog.js
+++ b/build/blog.js
@@ -1,6 +1,6 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=317 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=317 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},6:function(e,t,n){"use strict";Obj [...]
\ No newline at end of file
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},6:function(e,t,n){"use strict";Obj [...]
\ No newline at end of file
diff --git a/build/documentation.js b/build/documentation.js
index 6eaf97c..0367c33 100644
--- a/build/documentation.js
+++ b/build/documentation.js
@@ -1,6 +1,6 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=320 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=320 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=n.apply(null,r);l&&e.push(l)}else if("object"===o)for(var s in r)i.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},50:function(e,t,n){"use strict";fu [...]
\ No newline at end of file
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=n.apply(null,r);l&&e.push(l)}else if("object"===o)for(var s in r)i.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},50:function(e,t,n){"use strict";fu [...]
\ No newline at end of file
diff --git a/img/docs/cluster-lb.png b/img/docs/cluster-lb.png
new file mode 100644
index 0000000..79c3f52
Binary files /dev/null and b/img/docs/cluster-lb.png differ
diff --git a/img/docs/community-distribution.png b/img/docs/community-distribution.png
new file mode 100644
index 0000000..34a87cd
Binary files /dev/null and b/img/docs/community-distribution.png differ
diff --git a/img/docs/community-github.png b/img/docs/community-github.png
new file mode 100644
index 0000000..db83ed8
Binary files /dev/null and b/img/docs/community-github.png differ
diff --git a/img/docs/community-meetup.png b/img/docs/community-meetup.png
new file mode 100644
index 0000000..5b3d1d0
Binary files /dev/null and b/img/docs/community-meetup.png differ
diff --git a/img/docs/config.png b/img/docs/config.png
new file mode 100644
index 0000000..8a0241c
Binary files /dev/null and b/img/docs/config.png differ
diff --git a/img/docs/consumer-threadpool0.png b/img/docs/consumer-threadpool0.png
new file mode 100644
index 0000000..c615813
Binary files /dev/null and b/img/docs/consumer-threadpool0.png differ
diff --git a/img/docs/consumer-threadpool1.png b/img/docs/consumer-threadpool1.png
new file mode 100644
index 0000000..20a1908
Binary files /dev/null and b/img/docs/consumer-threadpool1.png differ
diff --git a/img/docs/dubbo-screen.png b/img/docs/dubbo-screen.png
new file mode 100644
index 0000000..0d082ba
Binary files /dev/null and b/img/docs/dubbo-screen.png differ
diff --git a/img/docs/dubbo-screen2.png b/img/docs/dubbo-screen2.png
new file mode 100644
index 0000000..0ec5d7b
Binary files /dev/null and b/img/docs/dubbo-screen2.png differ
diff --git a/img/docs/filter.png b/img/docs/filter.png
new file mode 100644
index 0000000..a931c4e
Binary files /dev/null and b/img/docs/filter.png differ
diff --git a/img/docs/grpcrest.png b/img/docs/grpcrest.png
new file mode 100644
index 0000000..da18c82
Binary files /dev/null and b/img/docs/grpcrest.png differ
diff --git a/img/docs/heterogeneous.png b/img/docs/heterogeneous.png
new file mode 100644
index 0000000..010ed97
Binary files /dev/null and b/img/docs/heterogeneous.png differ
diff --git a/img/docs/idl-dubbo-compiler.png b/img/docs/idl-dubbo-compiler.png
new file mode 100644
index 0000000..b0bd475
Binary files /dev/null and b/img/docs/idl-dubbo-compiler.png differ
diff --git a/img/docs/microservices.png b/img/docs/microservices.png
new file mode 100644
index 0000000..fac19f8
Binary files /dev/null and b/img/docs/microservices.png differ
diff --git a/img/docs/migrate-final.png b/img/docs/migrate-final.png
new file mode 100644
index 0000000..cab455c
Binary files /dev/null and b/img/docs/migrate-final.png differ
diff --git a/img/docs/migrate.png b/img/docs/migrate.png
new file mode 100644
index 0000000..16d2b1b
Binary files /dev/null and b/img/docs/migrate.png differ
diff --git a/img/docs/multiregistries.png b/img/docs/multiregistries.png
new file mode 100644
index 0000000..d8f752c
Binary files /dev/null and b/img/docs/multiregistries.png differ
diff --git a/img/docs/multisubscribe.png b/img/docs/multisubscribe.png
new file mode 100644
index 0000000..94c5c12
Binary files /dev/null and b/img/docs/multisubscribe.png differ
diff --git a/img/docs/route-app.png b/img/docs/route-app.png
new file mode 100644
index 0000000..b7a095e
Binary files /dev/null and b/img/docs/route-app.png differ
diff --git a/img/docs/route-service.png b/img/docs/route-service.png
new file mode 100644
index 0000000..9de9db4
Binary files /dev/null and b/img/docs/route-service.png differ
diff --git a/img/docs/service-idl.png b/img/docs/service-idl.png
new file mode 100644
index 0000000..6375503
Binary files /dev/null and b/img/docs/service-idl.png differ
diff --git a/img/docs/service-idl2.png b/img/docs/service-idl2.png
new file mode 100644
index 0000000..db47456
Binary files /dev/null and b/img/docs/service-idl2.png differ
diff --git a/img/docs/servicediscovery-new.png b/img/docs/servicediscovery-new.png
new file mode 100644
index 0000000..7f647ec
Binary files /dev/null and b/img/docs/servicediscovery-new.png differ
diff --git a/img/docs/servicediscovery-old.png b/img/docs/servicediscovery-old.png
new file mode 100644
index 0000000..b0857f2
Binary files /dev/null and b/img/docs/servicediscovery-old.png differ
diff --git a/md_json/blog.json b/md_json/blog.json
index 8e75d14..0c5c8c2 100644
--- a/md_json/blog.json
+++ b/md_json/blog.json
@@ -306,6 +306,11 @@
   ],
   "zh-cn": [
     {
+      "filename": "2.7.5-release.md",
+      "link": "/zh-cn/blog/2.7.5-release.html",
+      "meta": {}
+    },
+    {
       "filename": "Dubbo-supporting-gRPC-HTTP2-and-protobuf.md",
       "link": "/zh-cn/blog/Dubbo-supporting-gRPC-HTTP2-and-protobuf.html",
       "meta": {}
@@ -320,6 +325,11 @@
       }
     },
     {
+      "filename": "apche-dubbo-2019-2020.md",
+      "link": "/zh-cn/blog/apche-dubbo-2019-2020.html",
+      "meta": {}
+    },
+    {
       "filename": "build-new-docker-image-in-dockerhub.md",
       "link": "/zh-cn/blog/build-new-docker-image-in-dockerhub.html",
       "meta": {
@@ -329,6 +339,11 @@
       }
     },
     {
+      "filename": "connect-heterogeneous-microservices.md",
+      "link": "/zh-cn/blog/connect-heterogeneous-microservices.html",
+      "meta": {}
+    },
+    {
       "filename": "download.md",
       "link": "/zh-cn/blog/download.html",
       "meta": {
@@ -620,6 +635,11 @@
       }
     },
     {
+      "filename": "dubbo-practice-from-guazi.md",
+      "link": "/zh-cn/blog/dubbo-practice-from-guazi.html",
+      "meta": {}
+    },
+    {
       "filename": "dubbo-protocol.md",
       "link": "/zh-cn/blog/dubbo-protocol.html",
       "meta": {
diff --git a/md_json/docs.json b/md_json/docs.json
index 47efda6..abf8e57 100644
--- a/md_json/docs.json
+++ b/md_json/docs.json
@@ -1624,6 +1624,11 @@
       "meta": {}
     },
     {
+      "filename": "auth.md",
+      "link": "/zh-cn/docs/user/demos/auth.html",
+      "meta": {}
+    },
+    {
       "filename": "callback-parameter.md",
       "link": "/zh-cn/docs/user/demos/callback-parameter.html",
       "meta": {}
@@ -1649,6 +1654,11 @@
       "meta": {}
     },
     {
+      "filename": "consumer-threadpool.md",
+      "link": "/zh-cn/docs/user/demos/consumer-threadpool.html",
+      "meta": {}
+    },
+    {
       "filename": "context.md",
       "link": "/zh-cn/docs/user/demos/context.html",
       "meta": {}
@@ -1784,6 +1794,11 @@
       "meta": {}
     },
     {
+      "filename": "protobuf-idl.md",
+      "link": "/zh-cn/docs/user/demos/protobuf-idl.html",
+      "meta": {}
+    },
+    {
       "filename": "reference-config-cache.md",
       "link": "/zh-cn/docs/user/demos/reference-config-cache.html",
       "meta": {}
@@ -1859,6 +1874,11 @@
       "meta": {}
     },
     {
+      "filename": "tls.md",
+      "link": "/zh-cn/docs/user/demos/tls.html",
+      "meta": {}
+    },
+    {
       "filename": "token-authorization.md",
       "link": "/zh-cn/docs/user/demos/token-authorization.html",
       "meta": {}
@@ -1902,6 +1922,11 @@
       }
     },
     {
+      "filename": "new-features-in-a-glance.md",
+      "link": "/zh-cn/docs/user/new-features-in-a-glance.html",
+      "meta": {}
+    },
+    {
       "filename": "perf-test.md",
       "link": "/zh-cn/docs/user/perf-test.html",
       "meta": {
@@ -1992,6 +2017,11 @@
       "meta": {}
     },
     {
+      "filename": "gRPC.md",
+      "link": "/zh-cn/docs/user/references/protocol/gRPC.html",
+      "meta": {}
+    },
+    {
       "filename": "hessian.md",
       "link": "/zh-cn/docs/user/references/protocol/hessian.html",
       "meta": {}
diff --git a/zh-cn/blog/2.7.5-release.html b/zh-cn/blog/2.7.5-release.html
new file mode 100644
index 0000000..1e8124e
--- /dev/null
+++ b/zh-cn/blog/2.7.5-release.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="2.7.5-release" />
+	<meta name="description" content="2.7.5-release" />
+	<!-- 网页标签标题 -->
+	<title>2.7.5-release</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/blogDetail.css" />
+</head>
+<body>
+	<div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a h [...]
+<p>近日,备受瞩目的 Dubbo 2.7.5 版本正式发布,在 2.7.5 版本中,Dubbo 引入了很多新的特性、对现有的很多功能做了增强、同时在性能上也有了非常大的提升,这个版本无论对 Dubbo 社区亦或是开发者来说,都将是一个里程碑式的版本。</p>
+<ul>
+<li>应用粒度服务注册【beta】</li>
+<li>HTTP/2 (gRPC) 协议支持</li>
+<li>Protobuf 支持</li>
+<li>性能优化,调用链路性能提升 30%</li>
+<li>支持 TLS 安全传输链路</li>
+<li>优化的消费端线程模型</li>
+<li>新增更适应多集群部署场景的负载均衡策略</li>
+<li>全新的应用开发 API (兼容老版本应用)【beta】</li>
+<li>其他一些功能增强与 bugfix</li>
+</ul>
+<p>首先,从服务发现上,新版本突破以往基于接口粒度的模型,引入了全新的基于应用粒度的服务发现机制 - 服务自省,虽然该机制当前仍处于 beta 阶段,但对于 Dubbo 向整个微服务云原生体系靠齐,都打下了非常好的基础;得益于紧凑的协议设计和代码实现上的优化,Dubbo 一直以来都具有较好的性能表现,在 2.7.5 版本中,性能上有了进一步的提升,根据来自官方维护团队的压测,新版本在调用链路上性能提升达到 30%;云原生微服务时代,多语言需求变得越来越普遍,协议的通用性和穿透性对于构建打通前后端的整套微服务体系也变得非常关键,Dubbo 通过实现 gRPC 协议实现了对 HTTP/2 协议的支持,同时增加了与 Protobuf 的结合。</p>
+<h2>1.  应用粒度服务注册【beta】</h2>
+<p>从 Java 实现版本的角度来说,Dubbo 是一个面向接口代理的服务开发框架,服务定义、服务发布以及服务引用都是基于接口,服务治理层面包括服务发现、各种规则定义也都是基于接口定义的,基于接口可以说是 Dubbo 的一大优势,比如向开发者屏蔽了远程调用细节、治理粒度更精细等。但基于接口的服务定义同时也存在一些问题,如服务,与业界通用的微服务体系等。</p>
+<p><img src="../../img/docs/servicediscovery-old.png" alt="服务发现模型 老.png"></p>
+<p>针对以上问题,2.7.5  版本引入了一种新的服务定义/治理机制:<strong>服务自省</strong>,简单来说这是一种基于应用粒度的服务治理方案。一个实例只向注册中心注册一条记录,彻底解决服务推送性能瓶颈,同时由于这样的模型与主流微服务体系如 SpringCloud、K8S 等天然是对等的,因此为 Dubbo 解决和此类异构体系间的互联互通清除了障碍。有兴趣进一步了解 Dubbo 服务自省机制如何解决异构微服务体系互联互通问题的,可具体参考我们之前的文章解析《Dubbo 如何成为联通异构微服务体系的最佳服务开发框架》。</p>
+<p>以下是服务自省机制的基本工作原理图。</p>
+<p><img src="../../img/docs/servicediscovery-old.png" alt="9553BC67-F5EE-4E74-B638-3C768FCA81AC.png"></p>
+<p>要了解更多关于服务自省工作原理的细节,请参与官方文档及后续文章。</p>
+<p>服务自省与当前已有的机制之间可以说是互补的关系,Dubbo 框架会继续保持接口粒度的服务治理的优势,实现接口和应用两个粒度互为补充的局面,兼顾性能、灵活性和通用性,力争使 Dubbo 成为微服务开发的最佳框架。</p>
+<h2>2. HTTP/2 (gRPC) 协议支持</h2>
+<p>Dubbo RPC 协议是构建在 TCP 之上,这有很多优势也有一些缺点,缺点比如通用性、协议穿透性不强,对多语言实现不够友好等。HTTP/2 由于其标准 HTTP 协议的属性,无疑将具有更好的通用性,现在或将来在各层网络设备上肯定都会得到很好的支持,gRPC 之所以选在 HTTP/2 作为传输层载体很大程度上也是因为这个因素。当前 gRPC 在云原生、Mesh 等体系下的认可度和采用度逐步提升,俨然有成为 RPC 协议传输标准的趋势,Dubbo 和 gRPC 在协议层面是对等竞争的,但是在框架实现上却各有侧重,Dubbo 无疑有更丰富的服务开发和治理体验 。</p>
+<p>Dubbo 支持 gRPC 协议带来的直观好处有:</p>
+<ul>
+<li>正式支持基于 HTTP/2 的远程通信,在协议通用性和穿透性上进一步提升。</li>
+<li>支持跨进程的 Stream 流式通信,支持 Reactive 风格的 RPC 编程。</li>
+<li>解决了 gRPC 框架难以直接用于微服务开发的问题,将其纳入 Dubbo 的服务治理体系。</li>
+<li>为联通组织内部已有的 gRPC 或多语言体系提供支持。</li>
+</ul>
+<p>2.7.5 版本开始,gRPC (HTTP/2) 成为 Dubbo 协议体系中的一等公民,对于有需求的开发者完全可以在 Dubbo 开发的微服务体系中启用 gRPC 协议,而不必束缚在 Dubbo 协议自身上,关于这点我们在《Dubbo 如何成为联通异构微服务体系的最佳服务开发框架》一文中也有类似的观点表述。</p>
+<p>关于 Dubbo 中如何开发 grpc (HTTP/2) 服务的细节,请参考文章《Dubbo 在跨语言与协议穿透性等方面的探索》,关于如何开启 TLS 和使用 Reactive RPC 编程,请参见示例。另外,Dubbo 的 go 版本目前同样也提供了对 gRPC 协议对等的支持,具体请关注 dubbogo 社区的发版计划。</p>
+<h2>3. Protobuf 支持</h2>
+<p>支持 Protobuf 更多的是从解决 Dubbo 跨语言易用性的角度考虑的。</p>
+<p>跨语言的服务开发涉及到多个方面,从服务定义、RPC 协议到序列化协议都要做到语言中立,同时还针对每种语言有对应的 SDK 实现。虽然得益于社区的贡献,现在 Dubbo 在多语言 SDK 实现上逐步有了起色,已经提供了包括 Java, Go, PHP, C#, Python, NodeJs, C 等版本的客户端或全量实现版本,但在以上提到的跨语言友好性方面,以上三点还是有很多可改进之处。</p>
+<p>协议上 2.7.5 版本支持了 gRPC,而关于服务定义与序列化,Protobuf 则提供了很好的解决方案。</p>
+<ul>
+<li>服务定义。当前 Dubbo 的服务定义和具体的编程语言绑定,没有提供一种语言中立的服务描述格式,比如 Java 就是定义 Interface 接口,到了其他语言又得重新以另外的格式定义一遍。因此 Dubbo 通过支持 Protobuf 实现了语言中立的服务定义。</li>
+<li>序列化。Dubbo 当前支持的序列化包括 Json、Hessian2、Kryo、FST、Java 等,而这其中支持跨语言的只有 Json、Hessian2,通用的 Json 有固有的性能问题,而 Hessian2 无论在效率还是多语言 SDK 方面都有所欠缺。为此,Dubbo 通过支持 Protobuf 序列化来提供更高效、易用的跨语言序列化方案。</li>
+</ul>
+<p>日后,不论我们使用什么语言版本来开发 Dubbo 服务,都可以直接使用 IDL 定义如下服务,具体请参见示例</p>
+<pre><code class="language-idl">syntax = &quot;proto3&quot;;
+
+option java_multiple_files = true;
+option java_package = &quot;org.apache.dubbo.demo&quot;;
+option java_outer_classname = &quot;DemoServiceProto&quot;;
+option objc_class_prefix = &quot;DEMOSRV&quot;;
+
+package demoservice;
+
+// The demo service definition.
+service DemoService {
+  rpc SayHello (HelloRequest) returns (HelloReply) {}
+}
+
+// The request message containing the user's name.
+message HelloRequest {
+  string name = 1;
+}
+
+// The response message containing the greetings
+message HelloReply {
+  string message = 1;
+}
+</code></pre>
+<h2>4. 性能优化</h2>
+<h3>4.1 调用链路优化</h3>
+<p>2.7.5 版本对整个调用链路做了全面的优化,根据压测结果显示,总体 QPS 性能提升将近 30%,同时也减少了调用过程中的内存分配开销。其中一个值得提及的设计点是 2.7.5 引入了 Servicerepository 的概念,在服务注册阶段提前生成 ServiceDescriptor 和 MethodDescriptor,以减少 RPC 调用阶段计算 Service 原信息带来的资源消耗。</p>
+<h3>4.2 消费端线程池模型优化</h3>
+<p>对 2.7.5 版本之前的 Dubbo 应用,尤其是一些消费端应用,当面临需要消费大量服务且并发数比较大的大流量场景时(典型如网关类场景),经常会出现消费端线程数分配过多的问题,具体问题讨论可参见以下 issue :</p>
+<p><a href="https://github.com/apache/dubbo/issues/2013">https://github.com/apache/dubbo/issues/2013</a></p>
+<p>改进后的消费端线程池模型,通过复用业务端被阻塞的线程,很好的解决了这个问题。</p>
+<p><strong>老的线程池模型</strong></p>
+<p><img src="../../img/docs/consumer-threadpool0.png" alt="消费端线程池.png"></p>
+<p>我们重点关注 Consumer 部分:</p>
+<ol>
+<li>业务线程发出请求,拿到一个 Future 实例。</li>
+<li>业务线程紧接着调用 future.get 阻塞等待业务结果返回。</li>
+<li>当业务数据返回后,交由独立的 Consumer 端线程池进行反序列化等处理,并调用 future.set 将反序列化后的业务结果置回。</li>
+<li>业务线程拿到结果直接返回</li>
+</ol>
+<p><strong>2.7.5 版本引入的线程池模型</strong></p>
+<p><img src="../../img/docs/consumer-threadpool1.png" alt="消费端线程池新.png"></p>
+<ol>
+<li>业务线程发出请求,拿到一个 Future 实例。</li>
+<li>在调用 future.get() 之前,先调用 ThreadlessExecutor.wait(),wait 会使业务线程在一个阻塞队列上等待,直到队列中被加入元素。</li>
+<li>当业务数据返回后,生成一个 Runnable Task 并放入 ThreadlessExecutor 队列</li>
+<li>业务线程将 Task 取出并在本线程中执行:反序列化业务数据并 set 到 Future。</li>
+<li>业务线程拿到结果直接返回</li>
+</ol>
+<p>这样,相比于老的线程池模型,由业务线程自己负责监测并解析返回结果,免去了额外的消费端线程池开销。</p>
+<p>关于性能优化,在接下来的版本中将会持续推进,主要从以下两个方面入手:</p>
+<ol>
+<li>RPC 调用链路。目前能看到的点包括:进一步减少执行链路的内存分配、在保证协议兼容性的前提下提高协议传输效率、提高 Filter、Router 等计算效率。</li>
+<li>服务治理链路。进一步减少地址推送、服务治理规则推送等造成的内存、cpu 资源消耗。</li>
+</ol>
+<h2>5. TLS 安全传输链路</h2>
+<p>2.7.5 版本在传输链路的安全性上做了很多工作,对于内置的 Dubbo Netty Server 和新引入的 gRPC 协议都提供了基于 TLS 的安全链路传输机制。</p>
+<p>TLS 的配置都有统一的入口,如下所示:</p>
+<p><strong>Provider 端</strong></p>
+<pre><code class="language-java">SslConfig sslConfig = <span class="hljs-keyword">new</span> SslConfig();
+sslConfig.setServerKeyCertChainPath(<span class="hljs-string">"path to cert"</span>);
+sslConfig.setServerPrivateKeyPath(args[<span class="hljs-number">1</span>]);
+<span class="hljs-comment">// 如果开启双向 cert 认证</span>
+<span class="hljs-keyword">if</span> (mutualTls) {
+  sslConfig.setServerTrustCertCollectionPath(args[<span class="hljs-number">2</span>]);
+}
+
+ProtocolConfig protocolConfig = <span class="hljs-keyword">new</span> ProtocolConfig(<span class="hljs-string">"dubbo/grpc"</span>);
+protocolConfig.setSslEnabled(<span class="hljs-keyword">true</span>);
+</code></pre>
+<p><strong>Consumer 端</strong></p>
+<pre><code class="language-java"><span class="hljs-keyword">if</span> (!mutualTls) {}
+    sslConfig.setClientTrustCertCollectionPath(args[<span class="hljs-number">0</span>]);
+} <span class="hljs-keyword">else</span> {
+    sslConfig.setClientTrustCertCollectionPath(args[<span class="hljs-number">0</span>]);
+    sslConfig.setClientKeyCertChainPath(args[<span class="hljs-number">1</span>]);
+    sslConfig.setClientPrivateKeyPath(args[<span class="hljs-number">2</span>]);
+}
+</code></pre>
+<p>为尽可能保证应用启动的灵活性,TLS Cert 的指定还能通过 -D 参数或环境变量等方式来在启动阶段根据部署环境动态指定,具体请参见 Dubbo 配置读取规则与 TLS 示例</p>
+<p>Dubbo 配置读取规则:<a href="http://dubbo.apache.org/zh-cn/docs/user/configuration/configuration-load-process.html">http://dubbo.apache.org/zh-cn/docs/user/configuration/configuration-load-process.html</a></p>
+<p>TLS 示例:<a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-ssl">https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-ssl</a></p>
+<blockquote>
+<p>如果要使用的是 gRPC 协议,在开启 TLS 时会使用到协议协商机制,因此必须使用支持 ALPN 机制的 Provider,推荐使用的是 netty-tcnative,具体可参见 gRPC Java 社区的总结: <a href="https://github.com/grpc/grpc-java/blob/master/SECURITY.md">https://github.com/grpc/grpc-java/blob/master/SECURITY.md</a></p>
+</blockquote>
+<p>在服务调用的安全性上,Dubbo 在后续的版本中会持续投入,其中服务发现/调用的鉴权机制预计在接下来的版本中就会和大家见面。</p>
+<h2>6. Bootstrap API【beta】</h2>
+<p>在上面讲《服务自省》时,我们提到了 Dubbo 面向接口的设计,面向接口编程、面向接口做服务发现和服务治理。在引入应用粒度服务发现的同时,2.7.5 版本对编程入口也做了优化,在兼容老版本 API 的同时,新增了新的面向应用的编程接口 - DubboBootstrap。</p>
+<p>以面向 Dubbo API 编程为例,以前我们要这么写:</p>
+<pre><code class="language-java">ServiceConfig&lt;GreetingsService&gt; service1 = <span class="hljs-keyword">new</span> ServiceConfig&lt;&gt;();
+service1.setApplication(<span class="hljs-keyword">new</span> ApplicationConfig(<span class="hljs-string">"first-dubbo-provider"</span>));
+service1.setRegistry(<span class="hljs-keyword">new</span> RegistryConfig(<span class="hljs-string">"zookeeper://"</span> + zookeeperHost + <span class="hljs-string">":2181"</span>));
+service1.export();
+
+ServiceConfig&lt;GreetingsService&gt; service2 = <span class="hljs-keyword">new</span> ServiceConfig&lt;&gt;();
+service2.setApplication(<span class="hljs-keyword">new</span> ApplicationConfig(<span class="hljs-string">"first-dubbo-provider"</span>));
+service2.setRegistry(<span class="hljs-keyword">new</span> RegistryConfig(<span class="hljs-string">"zookeeper://"</span> + zookeeperHost + <span class="hljs-string">":2181"</span>));
+service2.export();
+
+......
+</code></pre>
+<p>ApplicationConfig、RegistryConfig、ProtocolConfig 等全局性的配置要在每个服务上去配置;并且从 Dubbo 框架的角度,由于缺少一个统一的 Server 入口,一些实例级别的配置如 ShutdownHook、ApplicationListener、应用级服务治理组件等都缺少一个加载驱动点。</p>
+<p>在引入 DubboBootstrap 后,新的编程模型变得更简单,并且也为解决了缺少实例级启动入口的问题</p>
+<pre><code class="language-java">ProtocolConfig protocolConfig = <span class="hljs-keyword">new</span> ProtocolConfig(<span class="hljs-string">"grpc"</span>);
+protocolConfig.setSslEnabled(<span class="hljs-keyword">true</span>);
+
+SslConfig sslConfig = <span class="hljs-keyword">new</span> SslConfig();
+sslConfig.setXxxCert(...);
+
+DubboBootstrap bootstrap = DubboBootstrap.getInstance();
+bootstrap.application(<span class="hljs-keyword">new</span> ApplicationConfig(<span class="hljs-string">"ssl-provider"</span>))
+  .registry(<span class="hljs-keyword">new</span> RegistryConfig(<span class="hljs-string">"zookeeper://127.0.0.1:2181"</span>))
+  .protocol(protocolConfig)
+  .ssl(sslConfig);
+
+ServiceConfig&lt;GreetingsService&gt; service1 = <span class="hljs-keyword">new</span> ServiceConfig&lt;&gt;();
+ServiceConfig&lt;GreetingsService&gt; service2 = <span class="hljs-keyword">new</span> ServiceConfig&lt;&gt;();
+
+bootstrap.service(service1).service(service2);
+bootstrap.start();
+</code></pre>
+<h2>7. 多注册中心集群负载均衡</h2>
+<p>对于多注册中心订阅的场景,选址时的多了一层注册中心集群间的负载均衡:</p>
+<p><img src="../../img/docs/cluster-lb.png" alt="C9FF4D0C-4DDD-4B06-9E6D-13A9C35C4E5E.png"></p>
+<p>在 Cluster Invoker 这一级,我们支持的选址策略有(2.7.5+ 版本,具体使用请参见文档):</p>
+<ul>
+<li>
+<p>指定优先级</p>
+<pre><code class="language-xml"><span class="hljs-comment">&lt;!-- 来自 preferred=“true” 注册中心的地址将被优先选择,只有该中心无可用地址时才 Fallback 到其他注册中心 --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">preferred</span>=<span class="hljs-string">"true"</span> /&gt;</span>
+</code></pre>
+</li>
+<li>
+<p>同 zone 优先</p>
+<pre><code class="language-xml"><span class="hljs-comment">&lt;!-- 选址时会和流量中的 zone key 做匹配,流量会优先派发到相同 zone 的地址 --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">zone</span>=<span class="hljs-string">"beijing"</span> /&gt;</span>
+</code></pre>
+</li>
+<li>
+<p>权重轮询</p>
+<pre><code class="language-xml"><span class="hljs-comment">&lt;!-- 来自北京和上海集群的地址,将以 10:1 的比例来分配流量 --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"beijing"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">weight</span>=<span class="hljs-string">”100“</span> /&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"shanghai"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address2}"</span> <span class="hljs-attr">weight</span>=<span class="hljs-string">”10“</span> /&gt;</span>
+</code></pre>
+</li>
+<li>
+<p>默认,stick to 任意可用</p>
+</li>
+</ul>
+<blockquote>
+<p>关于多注册中心订阅模型,Dubbo 同时也提供了 Multi-Registry 合并的解决思路,欢迎参与到以下 PR 的讨论中: <a href="https://github.com/apache/dubbo/issues/5399">https://github.com/apache/dubbo/issues/5399</a></p>
+</blockquote>
+<h2>8. 其他功能增强</h2>
+<ul>
+<li>
+<p>新增地址变更事件通知接口,方便业务侧感知地址变化</p>
+</li>
+<li>
+<p>新增外围配置加载入口,方便开发者在启动阶段定制服务启动参数</p>
+</li>
+<li>
+<p>config 模块重构</p>
+</li>
+<li>
+<p>parameters 扩展配置增强</p>
+</li>
+<li>
+<p>其他一些 Bugfix</p>
+</li>
+</ul>
+<p>从 Dubbo 框架自身的角度来说,2.7.5 版本也做了很多的重构与优化(比如说 config 模块的重构),这些改动对于使用者来说并无感知的,但是从优化整个 Dubbo 代码内部结构的角度来说,这些改动对后续的功能开发与新机制的引入是一个很好的铺垫。</p>
+<h2>9. 总结与展望</h2>
+<p>在后续的版本中,Dubbo 会持续快速的优化与迭代,主要从以下几个方面发力:</p>
+<ul>
+<li>继续探索服务自省成为 Dubbo 主推的服务治理模型。</li>
+<li>对于企业用户关心的微服务解决方案场景,会持续推进框架的演进,包括当前正在开发的配置、服务鉴权机制、熔断等功能。后续还会尝试联合社区推动周边配套设施如网关、治理平台 Admin 等的建设,非常期待社区能踊跃参与到此部分的建设中。</li>
+<li>性能优化上。主要从两个方面着手,一是调用链路的持续优化,同时继续探索新的更通用的 RPC 协议;另一方面是在服务治理推送机制上的优化,以进一步提高 Dubbo 在大规模服务地址推送场景下的表现。</li>
+<li>云原生方向。接下来的版本将重点探索,1. 如何更好的支持 Dubbo 在 Kubernetes 上的部署和服务治理;2. 对于混合部署的场景,如传统 VM  和 K8S 体系混合部署、SDK Dubbo 与 Mesh 混合部署的场景,如何提供更好的支持以实现混部场景的长期共存或迁移。</li>
+</ul>
+</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a href=" [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/blogDetail.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/2.7.5-release.json b/zh-cn/blog/2.7.5-release.json
new file mode 100644
index 0000000..b7fb7b8
--- /dev/null
+++ b/zh-cn/blog/2.7.5-release.json
@@ -0,0 +1,6 @@
+{
+  "filename": "2.7.5-release.md",
+  "__html": "<h1>2.7.5 功能解析</h1>\n<p>近日,备受瞩目的 Dubbo 2.7.5 版本正式发布,在 2.7.5 版本中,Dubbo 引入了很多新的特性、对现有的很多功能做了增强、同时在性能上也有了非常大的提升,这个版本无论对 Dubbo 社区亦或是开发者来说,都将是一个里程碑式的版本。</p>\n<ul>\n<li>应用粒度服务注册【beta】</li>\n<li>HTTP/2 (gRPC) 协议支持</li>\n<li>Protobuf 支持</li>\n<li>性能优化,调用链路性能提升 30%</li>\n<li>支持 TLS 安全传输链路</li>\n<li>优化的消费端线程模型</li>\n<li>新增更适应多集群部署场景的负载均衡策略</li>\n<li>全新的应用开发 API (兼容老版本应用)【beta】</li>\n<li>其他一些功能增强与 bugfix</li>\n</ul>\n<p>首先,从服务发现上,新版本突破以往基于接口粒度的模型,引入了全新的基于应用粒度的服务发现机制 - 服务自省,虽然该机制当前仍处于 b [...]
+  "link": "/zh-cn/blog/2.7.5-release.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/apche-dubbo-2019-2020.html b/zh-cn/blog/apche-dubbo-2019-2020.html
new file mode 100644
index 0000000..8899356
--- /dev/null
+++ b/zh-cn/blog/apche-dubbo-2019-2020.html
@@ -0,0 +1,290 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="apche-dubbo-2019-2020" />
+	<meta name="description" content="apche-dubbo-2019-2020" />
+	<!-- 网页标签标题 -->
+	<title>apche-dubbo-2019-2020</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/blogDetail.css" />
+</head>
+<body>
+	<div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a h [...]
+<p>非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将:总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面;展望未来 Dubbo 社区和框架的新的规划(roadmap)。社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优化等多个方面;除了已经发布的功能外,我们在 Dubbo 3.0 协议、服务自省和云原生等方向上也做了深入的探索,对这些方向的支持将是 Dubbo 接下来的重要工作方向,希望能通过这篇文章将其中更详细的思考和计划同步给大家。</p>
+<h2>社区回顾</h2>
+<p>回顾 Dubbo 社区过去一年的发展,其中一个重要的节点就是 2019 年 5 月从 Apache 孵化毕业。成为第二个由 Alibaba 捐献后从 Apache 毕业的项目,我有幸参与到了从重启开源、进入 Apache 孵化到毕业的整个过程,社区在此过程中做了大量的工作,包括邮件列表建设、代码规范检查、文档和代码国际化、issue/pr 处理等,这些一方面是 Apache 社区要求的工作,同时也为推动 Dubbo 的发展起到了正面的作用。</p>
+<p>在从 Apache 毕业之后,Dubbo 相关的项目也进行了迁移,都迁移到了 <a href="http://github.com/apache">github.com/apache</a> 组织之下:
+<a href="https://github.com/apache?utf8=%E2%9C%93&amp;q=dubbo&amp;type=&amp;language=">https://github.com/apache?utf8=✓&amp;q=dubbo&amp;type=&amp;language=</a></p>
+<p>Dubbo 社区的项目总共有 24 个之多,维护如此多的项目,并不是单纯靠几个活跃的开发者就能做到的,而是靠整个社区努力的结果。我总结了过去一年提名的所有 Committer/PMC,总过有 27 人获得提名(23 名 committer、4 名 PMC),通过下方的饼状图可以看出,只有不到 20% 的贡献者是来自于 Alibaba,而 80% 以上是来自各个不同组织的开发者或爱好者。这样的 Committer 分布,是加入 Apache 带给 Dubbo 社区的一个最重要的变化之一:Dubbo 项目是属于整个社区的,反映的是不同组织不同开发者的共同诉求,它的发展不是由一个公司控制或决定的,而是由社区共同讨论后决定的。如果你对参与到 Dubbo 社区感兴趣,都可以参与到 Dubbo 发展的讨论、决策和 coding 中来,也非常期待各位能成为下一个 Committer。</p>
+<p><img src="../../img/docs/community-distribution.png" alt="undefined"></p>
+<p>过去一年 Dubbo 社区组织了超过 10 场的线下 meetup 活动,覆盖了国内基本所有的开发者聚集的城市,与广大 Dubbo 开发者和使用者保持了密切交流。通过这些线下或线上的直播活动,分享了超过 100 个 topic 的演讲,深度讲解了 Dubbo 社区最新动态、功能模块开发和近期规划等。并且在所有的这些主题演讲中,绝大多数都是通过社区采集的方式,最终由 Dubbo 的深度企业分享的实践主题,其中典型的嗲表包括携程、工商银行、考拉、信用算力等。</p>
+<p><img src="../../img/docs/community-distribution.png" alt="undefined"></p>
+<p>从 Github 上来看,Dubbo 在过去一年也受到了非常高的关注度,一个重要的里程碑是 Star 数突破 3w,相比重启开源时增长了近 5 倍;贡献者由最初的几十个增长到现在的 282 个,而这其中有六七十个已经被提名为 committer,不论是贡献者数量还是 committer 比例都得到很大的提升;另一个数据是发布的版本,总共发布了 64 个版本,大家如果要了解每个版本的具体信息,也可以从这里点进去查看。</p>
+<p><img src="../../img/docs/community-github.png" alt="undefined"></p>
+<p>当前社区维护的大版本主要有 3 个,分别是 2.5.x 2.6.x 和 2.7.x。</p>
+<p>其中,2.7.x 是我们的主要开发版本,在过去的一年共发布了 6 个版本(2.7.0 - 2.7.5),每个版本都带来了一些值得关注的特性或功能升级,涵盖从编程模型、服务治理、性能到协议的多个方面的增强。</p>
+<p>2.6.x 版本则定位为 bugfix 版本,过去一年共发布了 3 个版本,主要以修复问题和安全漏洞为主,并没有增加什么新 feature,因此这一系列的版本在稳定性上是得到保证的。</p>
+<p>2.5.x 版本当前从去年初开始已宣布 EOF,只做安全修复;而到了下半年已经完全停止了维护。还在使用这个版本的用户建议尽快升级到 2.6 或 2.7 版本。</p>
+<p>关于 2.6 和 2.7 版本的用户分布情况,目前并没有官方的统计数据,但是根据我们从 issue 分布及一些深度用户的跟踪情况来看,这两个版本的使用分布大概是 40% - 60% 的状态。同时我们还观察到一个趋势,即很大一部分 2.6 的用户都已经开始调研升级到 2.7 版本或在升级的过程中,毕竟一个框架是否能很好的满足业务开发诉求,一个重要的因素是其是否不断的有功能的加入,是否能跟进新的技术趋势,2.6 版本已很难满足这些诉求。</p>
+<p>对于很多开发者来说,要升级到 2.7 版本,当前最大的顾虑即是其稳定性。因为 2.7 每个版本都会增加很多新内容且迭代速度较快,要保证每个发布版本的稳定性对社区来说也是一个充满挑战的事情。为了方便用户更好的完成升级评估,我们近期在 github 上列出了单独列了一个 issue 来统计现在包括未来版本的稳定性:</p>
+<p><a href="https://github.com/apache/dubbo/issues/5669">https://github.com/apache/dubbo/issues/5669</a></p>
+<table>
+<thead>
+<tr>
+<th><strong>版本</strong></th>
+<th><strong>重要功能</strong></th>
+<th><strong>升级建议</strong></th>
+<th></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>2.7.5</td>
+<td>服务自省 HTTP/2(gRPC) Protobuf TLS 性能优化   <a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.5">https://github.com/apache/dubbo/releases/tag/dubbo-2.7.5</a></td>
+<td>不建议大规模生产使用</td>
+</tr>
+<tr>
+<td>2</td>
+<td>2.7.4.1</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.4.1">bugfixes and enhancements of 2.7.3</a></td>
+<td><strong>推荐生产使用</strong></td>
+</tr>
+<tr>
+<td>3</td>
+<td>2.7.3</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.3">bigfixes of and enhancements of 2.7.2</a></td>
+<td><strong>推荐生产使用</strong></td>
+</tr>
+<tr>
+<td>4</td>
+<td>2.7.2</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.2">bigfixes of and enhancements of 2.7.1</a></td>
+<td>不建议大规模生产使用</td>
+</tr>
+<tr>
+<td>5</td>
+<td>2.7.1</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.1">bigfixes of and enhancements of 2.7.0</a></td>
+<td>不建议大规模生产使用</td>
+</tr>
+<tr>
+<td>6</td>
+<td>2.7.0</td>
+<td>异步编程模型 - 消费端/提供端异步 服务治理规则增强 简化的注册模型 配置中心、元数据中心 package 重构   <a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.0">https://github.com/apache/dubbo/releases/tag/dubbo-2.7.0</a></td>
+<td>beta 版本,2.6.x 重构后首个版本</td>
+</tr>
+</tbody>
+</table>
+<p>其中 2.7.5 版本预计将在接下来的 1-2 个版本之后逐步达到稳定状态。</p>
+<p>对于后续的版本是否通过标识性的后缀如 -beta、RC 等来区分不同阶段的发布版本,社区也有过类似的讨论,后续我们将视未来发展情况而定。</p>
+<h2>重点功能回顾</h2>
+<p>接下来针对 2.7 版本中发布的新功能,从编程模型、性能优化、服务治理、传输协议、生态发展等几个角度来做具体的讲解。</p>
+<h3>编程模型</h3>
+<p>Dubbo 中涉及编程模型相关的改动主要是以下几点:</p>
+<ul>
+<li>CompletableFuture 异步方法签名的服务</li>
+<li>服务端异步支持 API</li>
+<li>IDL 跨语言服务定义</li>
+<li>Reactive-style 方法签名的服务</li>
+</ul>
+<p>首先,我们先来看一下异步化相关的增强。
+Dubbo Java 版本的典型服务定义如下:</p>
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">HelloService</span> </span>{
+  <span class="hljs-comment">// Synchronous style</span>
+  <span class="hljs-function">String <span class="hljs-title">sayHello</span><span class="hljs-params">(String name)</span></span>; 
+}
+</code></pre>
+<p>如果要实现消费端的异步服务调用,则需要单独配置异步标识,并通过 RpcContext API 配合使用</p>
+<pre><code class="language-java">String result = helloService.sayHello(<span class="hljs-string">"world"</span>); <span class="hljs-comment">// result is always null</span>
+Future future = RpcContext.getContext().getFuture();
+</code></pre>
+<p>在 2.7 版本之后,我们可以直接定义如下方法接口,以更直观的实现消费端/提供端异步:</p>
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">HelloService</span> </span>{
+  <span class="hljs-comment">// Asynchronous style</span>
+  <span class="hljs-function">CompletableFuture&lt;String&gt; <span class="hljs-title">sayHello</span><span class="hljs-params">(String name)</span></span>; 
+}
+
+CompletableFuture&lt;String&gt; future = helloService.sayHello(<span class="hljs-string">"world"</span>); 
+</code></pre>
+<p>以上示例都是基于 Java Interface 来描述 Dubbo 服务的,如果要和多语言异构的微服务实现互调,则服务又需要用相应语言的方式重新定义一遍,无法实现跨语言的服务复用;另外跨语言的序列化也是需要注意的一个问题。</p>
+<p>为此 2.7.5 版本引入了对 IDL + Protobuf 的支持,以解决跨语言的服务定义问题,具体可参见示例:</p>
+<p><a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-protobuf">https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-protobuf</a></p>
+<p><img src="../../img/docs/service-idl.png" alt="undefined"></p>
+<p>对 Reactive-style API 的支持则和上面 CompletableFuture 有些类似,允许用户定义 RxJava、Reactor API 的服务接口</p>
+<p><img src="../../img/docs/idl-dubbo-compiler.png" alt="undefined"></p>
+<p>但是需要注意的一定是,由于外围的 Reactive API 需要有底层传输协议的支持才有意义,因此,目前 Reactive API 只能在使用 gRPC 协议时才有意义,具体请参见示例以及下面关于 ”Dubbo 对 gRPC 的支持” 一节的讲解。</p>
+<p><a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-grpc/dubbo-samples-rxjava">https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-grpc/dubbo-samples-rxjava</a></p>
+<h3>性能优化</h3>
+<p>2.7 版本在性能优化方面也做了很多的工作,对 Dubbo 业务系统的吞吐量、调用链路响应速度、服务治理链路性能等都有明显提升。</p>
+<ol>
+<li>
+<p>系统吞吐量</p>
+<p>和提升系统吞吐量相关的增强主要有框架的全异步化改造、消费端线程模型优化、引入 Stream 语义协议等。</p>
+<p>全异步化改造,很关键的一点是 Filter 链路的异步化,之前的 Filter 只有一个同步的 invoke 方法,现在为了支持异步回调,增加了 Listener 回调监听器,从而可以实现对异步调用结果的监听与拦截。</p>
+</li>
+</ol>
+<p><img src="../../img/docs/filter.png" alt="undefined"></p>
+<p>关于消费端线程模型的优化,对于网关类应用,需要消费大量服务的应用,都会在系统稳定性和性能表现上有很大提升,其优化后的总体工作原理图所下所示,具体解析可以参见之前发布的文章:</p>
+<p>老线程模型工作原理:</p>
+<p><img src="../../img/docs/consumer-threadpool0.png" alt="undefined"></p>
+<p>新线程模型工作原理:</p>
+<p><img src="../../img/docs/consumer-threadpool1.png" alt="undefined"></p>
+<ol start="2">
+<li>
+<p>RPC 调用链路</p>
+<p>从 2.7.0 到 2.7.5,从我们的测试数据来看,通过一系列的优化调用链路性能提升在 30% 以上。总体来说,优化的目标是减少调用过程中的内存分配和 cpu 计算,主要有两个方面的改造:</p>
+<ul>
+<li>服务元数据静态化,在启动阶段尽可能多的计算并缓存,以减少调用过程中的计算成本,加快响应速度</li>
+<li>减少调用过程中的 URL 操作产生的内存分配</li>
+</ul>
+</li>
+<li>
+<p>服务治理链路</p>
+<p>服务治理链路上主要有以下几点值得关注:地址推送、服务治理规则推送、服务治理规则计算、路由选址等,尤其是在大规模服务集群的场景下,以上每个点都可能成为性能或稳定性瓶颈。在 2.7 版本中,目前着重对 “地址推送” 相关计算路径做了优化,简单概括起来主要是以下几点:</p>
+<ul>
+<li>地址推送事件合并,避免短时间重复计算</li>
+<li>全量地址推送时,避免 URL 重新分配</li>
+<li>在 URL 合并链路上,引入 URL 可变状态,避免 URL 拷贝造成的开销</li>
+</ul>
+</li>
+</ol>
+<h3>服务治理</h3>
+<p>服务治理也是 2.7 版本中着重增强的一个模块。总体上可以分为三部分</p>
+<ul>
+<li>普通路由规则相关的优化和增强</li>
+<li>增强对跨区域、跨机房部署的路由支持</li>
+<li>元数据中心、配置中心</li>
+</ul>
+<p>我们针对这三部分逐步展开讲解。以下是 2.7 版本路由规则的几个例子。</p>
+<p><img src="../../img/docs/route-app.png" alt="undefined"></p>
+<p><img src="../../img/docs/route-service.png" alt="undefined"></p>
+<p>其中,最明显的一个变化是路由规则都以 YAML 进行了重写,并且后续所有的路由规则都计划以 YAML 为基本描述语言;相比于之前路由规则直接存储于注册中心,在 2.7 版本中增加了配置中心后,新版本的路由规则默认将存储在于独立的配置中心,配置格式推送机制都得到了优化;另外,2.7 版本中还增加了应用粒度的路由规则,方便从整个应用的角度去设置流量规则。</p>
+<p>新增加的跨注册中心的路由机制,可以实现调用流量在多个注册中心间的负载均衡,对于需要做异地容灾、同机房优先或者注册中心迁移的场景比较有用处。</p>
+<p><img src="../../img/docs/cluster-lb.png" alt="undefined"></p>
+<p>当前支持的注册中心集群负载均衡策略有:</p>
+<ul>
+<li>同区域优先</li>
+<li>权重轮询</li>
+<li>指定优先级</li>
+<li>任意可用</li>
+</ul>
+<p>元数据中心存储了 Dubbo 服务方法定义的描述,目前主要的用途是服务测试,将来也可用作服务 API 管理、网关参数映射等。</p>
+<p>新增的配置中心主要有两个用途:存储/推送配置规则、应用配置托管,接下来着重讲解应用配置托管相关功能,看其对 Dubbo 的开发与运维配置的影响。Dubbo 当前支持 JVM 动态参数、配置中心、API、本地配置文件等几种配置源,他们之间按照优先级从高到低的顺序实现配置覆盖,如下图所示:</p>
+<p><img src="../../img/docs/config.png" alt="undefined"></p>
+<p>配置中心相当于是共享版本的 <code>dubbo.properties</code> 的远程托管,其中,key 值有特定的命名规范:</p>
+<pre><code class="language-properties"><span class="hljs-comment"># 应⽤用级别</span>
+<span class="hljs-meta">dubbo.{config-type}[.{config-id}].{config-item}</span> <span class="hljs-string">{config-item-value}</span>
+<span class="hljs-comment"># 服务级别</span>
+<span class="hljs-meta">dubbo.service.{interface-name}[.{method-name}].{config-item}</span> <span class="hljs-string">{config-item-value}</span>
+<span class="hljs-meta">dubbo.reference.{interface-name}[.{method-name}].{config-item}</span> <span class="hljs-string">{config-item-value}</span>
+<span class="hljs-comment"># 多配置项</span>
+<span class="hljs-meta">dubbo.{config-type}s.{config-id}.{config-item}</span> <span class="hljs-string">{config-item-value}</span>
+</code></pre>
+<h3>传输协议</h3>
+<p>2.7 版本在 RPC 协议层和序列化层进行了扩展,RPC 协议层增加了对 gRPC 协议的支持,序列化层增加了对 Protobuf 协议的支持。</p>
+<p>支持 gRPC 其中一个重要原因是其基于 HTTP/2 协议构建,HTTP/2 协议作为 HTTP 标准协议,在各个层次的网络设备及网关代理上都得到了很好的支持,因此具有更好的穿透性和通用性。通过支持 gRPC 协议,对于期望使用 HTTP/2 的 Dubbo 用户提供了一种传输协议选择。</p>
+<p>gRPC 在 HTTP/2 上构建了 Stream 的 RPC 语义,支持 Request - Response、Stream - Response、Request - Stream、Bi-Stream 等多种语义,能满足不同的业务调用场景。</p>
+<p><img src="../../img/docs/service-idl2.png" alt="undefined"></p>
+<p>在 Dubbo 的设计中,所有的 RPC 协议都处于一个平等的地位,无论是自有的 Dubbo 协议,还是扩展的其他三方协议如 Thrift、Hessian、gRPC 等,得益于这样的设计,我们可以扩展任何新协议支持。关于如何扩展 RPC 协议及其应用场景,请参见之前发布的《使用 Dubbo 连接异构微服务体系》文章。</p>
+<p><a href="https://mp.weixin.qq.com/s/-fvDeGlCLjz0n60naZJnQg">https://mp.weixin.qq.com/s/-fvDeGlCLjz0n60naZJnQg</a></p>
+<p>Protobuf 序列化协议支持更多的是考虑其在跨语言、安全性和性能方面。</p>
+<h2>Roadmap</h2>
+<p>未来社区将会持续推动 Dubbo 的发展,重点来说有以下几个方向:</p>
+<ul>
+<li>继续增强服务治理相关能力,以更好的满足微服务开发和运维的需求;</li>
+<li>协议层面,着手研发下一代的 RPC 协议,新协议将提供更丰富的如 Stream、Flow Control 等内置语义,同时将具有更好的扩展性、网关的友好性等;</li>
+<li>基于应用粒度的服务发现机制,</li>
+<li>云原生带来了底层基础设施的变化,同时在此基础上衍生出了如 ServiceMesh 的微服务解决方案,我们需要继续探索 Dubbo ;</li>
+</ul>
+<h3>微服务功能</h3>
+<p>目前正在开发或规划中的微服务功能有服务鉴权、熔断、路由规则增强等,预计将在接下来的 2.7.6 等版本中陆续发布。后续也将会根据社区中的诉求,陆续增加其他的微服务功能支持。</p>
+<p>以当前正在开发的服务鉴权功能为例,这是社区中很多 Dubbo 使用者在实际使用中遇到的需求:虽然 Dubbo 服务主要是在内部运转,但有些服务仍期望只对部分场景或用户开放,比如某些涉及到敏感数据操作的服务,这就需要有鉴权能力的支持。</p>
+<p>以下 issue 中有关于 Dubbo 当前正在开发中的鉴权功能的详细讨论,总体来说 Dubbo 提供的鉴权功能约束了 Dubbo 侧鉴权的基本流程,这是一套通用鉴权的方案,在 token 计算、校验等环节都被设计为可扩展的,因此可以方便的对接到各种认证及权限管理系统。</p>
+<p><a href="https://github.com/apache/dubbo/issues/5461">https://github.com/apache/dubbo/issues/5461</a></p>
+<p>非常感谢社区的活跃开发者,现就职于爱奇艺的 <a href="https://github.com/CodingSinger%EF%BC%8C%E5%85%B6%E6%98%AF%E9%89%B4%E6%9D%83%E6%A8%A1%E5%9D%97%E7%9A%84%E5%8F%91%E8%B5%B7%E8%80%85%E5%92%8C%E4%B8%BB%E8%A6%81%E5%BC%80%E5%8F%91%E8%B4%A1%E7%8C%AE%E8%80%85%E3%80%82">https://github.com/CodingSinger,其是鉴权模块的发起者和主要开发贡献者。</a></p>
+<h3>协议 - 3.0</h3>
+<p>以下是 Dubbo 2.0 协议,我们之前已经在多个场合做过详细的讲解</p>
+<p><img src="img/blog/grpc/dubbo-ptotocol.png" alt="undefined"></p>
+<p>Dubbo 2.0 协议在云原生、mesh 等场景下暴露出一些问题,如:</p>
+<ul>
+<li>协议缺少扩展性</li>
+<li>RPC 协议层和 payload 耦合在一起</li>
+<li>基于 TCP 构建的二进制私有协议</li>
+<li>缺少 Stream 语义的支持</li>
+</ul>
+<p>所以,针对以上问题,新一代的 Dubbo 协议将突出以下特点:</p>
+<p><strong>Reactive Stream</strong>
+Reactive Stream 引入 RPC,带来更丰富的通信语义和 API 编程模型支持,如 Request-Stream、Bi-Stream 等</p>
+<p><strong>协议升级</strong>
+协议内置应⽤层协议协商机制,包括自建协议升级机制、ALPN 等,以方面将来协议升级或兼容老版本协议的迁移</p>
+<p><strong>HTTP/2</strong>
+微服务云原⽣生场景下,基于 HTTP/2 构建的通信协议具有更更好的通⽤用性和穿透性</p>
+<p><strong>可扩展</strong>
+协议可扩展,区分协议头 Metadata 与 RPC 方法的参数</p>
+<p><strong>多语⾔支持</strong>
+如通过支持 Protobuf 提供了更完善的 跨语言服务定义 与 序列化传输 的支持</p>
+<p><strong>Mesh</strong>
+协议对 Mesh 更友好,方便完成与 Mesh 的协作,包括流量控制机制、应用层配置协商等</p>
+<p><strong>流量控制</strong>
+协议内置流控机制,支持类似 Reqctive Stream 的 Request (n)  流控机制</p>
+<p><strong>协议通用性</strong>
+兼顾通用性与性能,支持协议能在各种设备上运行</p>
+<h3>服务自省 - 应用粒度的服务注册</h3>
+<p>Dubbo 最大的优势之一在于其易用性,其面向接口(RPC 方法)的编程模型。同时,面向接口的治理也带来了一些问题:</p>
+<ul>
+<li>地址数量成倍增长,给地址推送带来很大压力</li>
+<li>和主流微服务体系模型不匹配,如 SpringCloud、Kubernetes 等</li>
+</ul>
+<p>为此,我们计划引入应用粒度的服务注册机制,主要有以下几个重点:</p>
+<ul>
+<li>注册中心按 “应用 - 实例IP” 组织,不再关心 RPC 接口同步</li>
+<li>引入独立的元数据服务完成 RPC 接口同步工作</li>
+</ul>
+<p>以下是应用粒度服务注册(服务自省)的基本工作原理,请持续关注后续对这部分的具体解析和开发进展。</p>
+<p><img src="../../img/docs/servicediscovery-new.png" alt="undefined"></p>
+<h3>云原生</h3>
+<p>云原生带来了底层基础设施,应用开发、部署和运维等全方位的变化:</p>
+<p><strong>基础设施</strong></p>
+<ul>
+<li>基础设施调度机制变化,带来运维(生命周期)、服务治理等方面的变化。</li>
+<li>服务发现能力下沉, Kubernetes 抽象了 Native Service Discovery。</li>
+</ul>
+<p><strong>Service Mesh - 云原生微服务解决方案</strong></p>
+<ul>
+<li>Mesh 为跨语言、sdk 升级等提供了解决方案,Dubbo sdk 要与 Mesh 协作,做到功能、协议、服务治理等多方便的适配。</li>
+<li>Mesh 尚未大规模铺开,且其更适合对流量管控更关注的应用,传统 SDK 的性能优势仍旧存在,两者混部迁移场景可能会长期存在。</li>
+</ul>
+<p>从应用场景上,Dubbo 可能的部署环境包括:</p>
+<ol>
+<li>不使用 Kubernetes Native Service,Kubernetes 只作为容器编排调度设施,继续使用 Dubbo  自建的服务注册、发现机制。</li>
+<li>复用 Kubernetes Native Service,Dubbo 不再关心服务注册,Dubbo Client 负责服务发现与流量分配。</li>
+<li>Dubbo sdk 往 Mesh 迁移,一方面要做到适应 Mesh 架构,成为 Mesh 体系下的 RPC 编程和通信方案;另一方面要做到 Dubbo 与 Mesh 架构长期共存,互相打通服务发现和治理体系。</li>
+<li>Kubernetes 上与云下混合部署的平滑迁移支持,包括服务发现的统一与网络通信方案的打通。</li>
+</ol>
+<p>从 Dubbo 功能划分上,将着重从以下方面提供对云原生基础设施的支持:</p>
+<p><strong>生命周期:</strong> Dubbo 与 Kubernetes 调度机制绑定,保持服务生命周期与 Pod 容器等生命周期的自动对齐
+<strong>治理规则:</strong> 服务治理规则在规则体、规则格式方面进行优化,如规则体以 YAML 描述、取消过滤规则对 IP 的直接依赖,定义规则特有的 CRD 资源等。
+<strong>服务发现:</strong> 支持 K8S Native Service 的服务发现,包括 DNS、API-Server,支持 xDS 的服务发现
+<strong>Mesh 架构协作:</strong> 构建下一代的基于 HTTP/2 的通信协议,支持 xDS 的标准化的数据下发</p>
+</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a href=" [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/blogDetail.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/apche-dubbo-2019-2020.json b/zh-cn/blog/apche-dubbo-2019-2020.json
new file mode 100644
index 0000000..a3d02a4
--- /dev/null
+++ b/zh-cn/blog/apche-dubbo-2019-2020.json
@@ -0,0 +1,6 @@
+{
+  "filename": "apche-dubbo-2019-2020.md",
+  "__html": "<h1>从 2019 到 2020,Apache Dubbo 年度回顾与总结</h1>\n<p>非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将:总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面;展望未来 Dubbo 社区和框架的新的规划(roadmap)。社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优化等多个方面;除了已经发布的功能外,我们在 Dubbo 3.0 协议、服务自省和云原生等方向上也做了深入的探索,对这些方向的支持将是 Dubbo 接下来的重要工作方向,希望能通过这篇文章将其中更详细的思考和计划同步�
 ��大家。</p>\n<h2>社区回顾</h2>\n<p>回顾 Dubbo 社区过去一年的发展,其中一个重要的节点就是 2019 年 5 月从 Apa [...]
+  "link": "/zh-cn/blog/apche-dubbo-2019-2020.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/connect-heterogeneous-microservices.html b/zh-cn/blog/connect-heterogeneous-microservices.html
new file mode 100644
index 0000000..e0833c3
--- /dev/null
+++ b/zh-cn/blog/connect-heterogeneous-microservices.html
@@ -0,0 +1,256 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="connect-heterogeneous-microservices" />
+	<meta name="description" content="connect-heterogeneous-microservices" />
+	<!-- 网页标签标题 -->
+	<title>connect-heterogeneous-microservices</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/blogDetail.css" />
+</head>
+<body>
+	<div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a h [...]
+<p>从编程开发的角度来说,Dubbo 首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时 Dubbo 也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。</p>
+<p>在这篇文章中,我们将以以上基础能力为背景,尝试突破 Dubbo 体系自身,探索如何利用 Dubbo 对多协议、多服务发现模型的支持,来实现异构微服务体系间的互联互通。在实际业务场景中,这可以用来解决异构技术体系共存场景下的通信问题,帮助公司实现在异构技术体系间作平滑迁移,解决大规模跨区域、多集群部署场景的地址发现及流量调度等问题。</p>
+<h2>面向接口代理的透明服务开发框架</h2>
+<p>我们还是从 <strong>Dubbo 是一个微服务开发框架</strong> 这个大家熟知的概念开始。就像 Spring 是开发 Java 应用的基础框架一样,我们经常会选用 Dubbo 作为开发微服务业的基础框架。 Dubbo 框架的最大优势我认为就在其面向接口的编程模型,使得开发远程服务调用就像开发本地服务一样(以 Java 语言为例):</p>
+<ol>
+<li>服务定义</li>
+</ol>
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">GreetingsService</span> </span>{
+    <span class="hljs-function">String <span class="hljs-title">sayHi</span><span class="hljs-params">(String name)</span></span>;
+}
+</code></pre>
+<ol start="2">
+<li>消费方调用服务</li>
+</ol>
+<pre><code class="language-java"><span class="hljs-comment">// 和调用本地服务一样,完全透明。</span>
+<span class="hljs-meta">@Reference</span>
+<span class="hljs-keyword">private</span> GreetingService greetingService;
+
+<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">doSayHello</span><span class="hljs-params">(String name)</span> </span>{
+  greetingService.sayHi(<span class="hljs-string">"Hello world!"</span>);
+}
+</code></pre>
+<p>下图是 Dubbo 的基本工作原理图,服务提供者与服务消费者之间通过注册中心协调地址,通过约定的协议实现数据交换。</p>
+<p><img src="img/architecture.png" alt="Dubbo basic work flow"></p>
+<h2>同构/异构微服务体系面临的问题</h2>
+<p>关于 Dubbo 协议本身及其服务治理相关功能细节并不是本文的重点,我们今天将从一个更高的层次,来看看公司内部构建微服务体系所面的挑战,以及 Dubbo 能为架构选型和迁移等提供哪些解决思路。</p>
+<p>一个公司内部的微服务可能都是基于某一个相同的服务框架开发的,比如说 Dubbo,对于这样的架构,我们称之为是<strong>同构的微服务体系</strong>;而有些公司的微服务可能是使用多个不同的服务框架所建设,我们称之为<strong>异构的微服务体系</strong>,多个不同技术栈微服务体系的共存在大型组织内还是非常普遍的,造成这种局面可能有很多原因。比如,可能是遗留系统带来的,也可能是公司正在做技术栈迁移,或者就是不同业务部门为了满足各自特殊需求而做的独立选型(这也意味着异构微服务体系的长期共存)。</p>
+<p><strong>1. 异构微服务体系共存</strong></p>
+<p>我们很容易想到的一个挑战是:**不同的体系间通常是使用不同的 RPC 通信协议、部署独立的注册中心集群,面对这种多协议、多注册中心集群的场景,要如何实现相互之间透明的地址发现和透明的 RPC 调用?**如果我们什么都不做,那么每个微服务体系就只能感知到自己体系内的服务状态,流量也在各自的体系内封闭。而要做到从体系 A 平滑的迁移到体系 B,或者想长期的保持公司内部多个体系的共存,则解决不同体系间的互联互通,实现流量的透明调度将是非常重要的环节。</p>
+<p><img src="../../img/docs/microservices.png" alt="2"></p>
+<p><strong>2. Dubbo 体系内部</strong></p>
+<p><strong>多协议、多注册中心集群的问题在同构的微服务体系中也可能存在,尤其是当一个组织内部的微服务规模增长到一定量级的时候。</strong></p>
+<ul>
+<li>
+<p>我们可能要在不同的服务之间采用不同的通信协议,因为不同的服务面临不同的业务场景,而这也进一步导致了数据传输特点的不同,我们需要分别采用更适合各类业务特点的协议。比如典型的场景:我们可能对于普通的业务服务采用 Dubbo 协议,对于和 FrontEnd 交互的服务需要 HTTP 协议,而对于需要流式数据传输的业务则采用 gRPC 协议等等。</p>
+</li>
+<li>
+<p>Dubbo 体系内部另一个常出现的问题是,在大规模分布式部署的场景下,微服务系统会做跨区域、跨注册中心的部署,这个时候就会出现多集群间地址同步和流量调度的问题。</p>
+</li>
+</ul>
+<p>总结起来,**不论是同构体系还是异构体系,都面临对多协议通信、多注册中心集群地址发现的问题。**Dubbo 目前是支持多协议、多注册中心的,可以说就是为解决我们上面分析的 Dubbo 同构体系内的场景而设计的,因此下面我们从同构体系的多协议、多注册中心场景讲起,先了解 Dubbo 多协议、多注册中心的基本支持情况以及它们是如何工作的。而在后面的一章再进一步探索怎么扩展这个能力来支持异构微服务体系的互联互通。</p>
+<h2>Dubbo 体系内的多协议、多注册中心机制</h2>
+<p>我们将通过两个场景示例,来分别具体的讲一下 Dubbo 的多协议、多注册中心机制的使用方式和工作原理。</p>
+<h3>多协议</h3>
+<p><img src="../../img/docs/multiregistries.png" alt="undefined"></p>
+<p>以上是使用 Dubbo 开发的一套微服务,服务间通信使用到了不同的协议,根据我们的调研发现,公司内部启用多协议其实是非常普遍需求,具体场景在此我们暂不做解释。</p>
+<p>应用 B 作为服务提供者,发布了 5 个服务,其中:</p>
+<ul>
+<li><code>DemoService1</code> <code>DemoService2</code> 通过 <code>dubbo</code> 协议发布</li>
+<li><code>DemoService3</code> <code>DemoService4</code> 通过 <code>gRPC</code> 协议发布</li>
+<li><code>DemoService0</code>  通过 <code>dubbo</code> 、<code>gRPC</code> 双协议发布</li>
+</ul>
+<p>应用 A 作为消费者,使用 dubbo 协议消费 <code>DemoService1</code> <code>DemoService2</code>,使用 gRPC 协议消费 <code>DemoService0</code>。</p>
+<p>应用 B 作为消费者,使用 gRPC 协议消费 <code>DemoService2</code> <code>DemoService4</code>,使用 dubbo 协议消费 <code>DemoService0</code>。</p>
+<p>以下是具体的代码配置:</p>
+<ol>
+<li>提供端应用 B</li>
+</ol>
+<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">"org.apache.dubbo.samples.basic.api.DemoService1"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"dubbo"</span>/&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService2"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"dubbo"</span>/&gt;</span>
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService3"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"grpc"</span>/&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService4"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"grpc"</span>/&gt;</span>
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService0"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"dubbo, grpc"</span>/&gt;</span>
+</code></pre>
+<ol start="2">
+<li>消费端应用 A</li>
+</ol>
+<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"dubbo"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService1"</span>/&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"dubbo"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService2"</span>/&gt;</span>
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"grpc"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService0"</span>/&gt;</span>
+</code></pre>
+<ol start="3">
+<li>消费端应用 C</li>
+</ol>
+<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"grpc"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService3"</span>/&gt;</span>                                                                                     <span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class= [...]
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"dubbo"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.basic.api.DemoService0"</span>/&gt;</span>
+
+</code></pre>
+<h4>Dubbo 多协议支持现状</h4>
+<p>Dubbo 目前所支持的协议包括 Dubbo、REST、Thrift、gRPC、JsonRPC、Hessian 等,基本涵盖了业界大多数主流的 RPC 通信协议。需要注意的是,这些协议的支持都是以直接集成官方 Release 实现的形式来做的,我认为这是一个很好的选择,既保证了协议解析自身的稳定性,又能使 Dubbo 社区更专注的将更多的精力放在 Dubbo 外围服务治理能力的改善上。试想如果 Dubbo 社区自己为每个协议提供实现,那是要花费多少精力和时间才能使每种协议达到稳定的生产可用。</p>
+<p>除了以上官方提供支持的协议之外,得益于 Dubbo 灵活的扩展机制,想要为 Dubbo 扩展协议非常容易,开发者可以随时为 Dubbo 增加更多的协议支持,包括自有协议扩展。</p>
+<p>关于对 gRPC (HTTP/2) 协议的支持,请参阅上期文档</p>
+<p><img src="../../img/docs/dubbo-screen.png" alt="3"></p>
+<h4>多协议能解决的问题</h4>
+<ul>
+<li>
+<p>将 RPC 框架无缝地接入 Dubbo 的服务治理体系。</p>
+<p>通过协议扩展将 RPC 协议纳入 Dubbo 服务开发体系,从而复用 Dubbo 的编程模型和服务发现、流量管控等能力。比如 gRPC,其服务治理体系相对比较弱、编程 API 不够友好,很难直接用于微服务开发。</p>
+</li>
+<li>
+<p>满足不同场景的调用需求。</p>
+<p>各个服务可能是为了满足不同业务需求而开发,同时外围消费端应用的技术栈也可能多种多样,通过启用不同的通信协议,可以最优化不同场景的通信需求。</p>
+</li>
+<li>
+<p>实现协议间的迁移。</p>
+<p>通过支持多种协议,借助注册中心的协调,可以快速满足公司内协议迁移的需求。如从自有协议升级到 Dubbo 协议,Dubbo 协议自身升级,从 Dubbo 协议迁移到 gRPC,从 REST 迁移到 Dubbo 协议等。</p>
+</li>
+</ul>
+<h3>多注册中心</h3>
+<p>当服务集群规模小的时候,一个中心化的集群部署方案能很好的解决我们的业务问题。但是随着应用规模的增长、用户流量的增加,我们就不得不考虑要为业务系统引入跨区域、多集群的部署方案,而此时同业务系统密切相关的注册中心集群也面临部署方案的选型:</p>
+<ol>
+<li>
+<p>继续维持全局共享的注册中心集群。这种架构方案的优点是简单;缺点是注册中心集群由于要保存全量的地址数据,存储和推送压力会变得很大,另外对于一些注册中心产品(如 Zookeeper 等)在跨集群网络部署的场景下稳定性和性能可能都会面临挑战。</p>
+</li>
+<li>
+<p>每个业务集群部署独立的注册中心集群。多注册中心集群的优点是能解决跨集群网络可用性的问题,同时也能够减轻注册中心的存储和推送压力;缺点则是要求服务框架(如 Dubbo 等)能有同时发布/监听多个注册中心集群的能力。</p>
+</li>
+</ol>
+<p>下面我们具体看一下,Dubbo 为多注册中心集群场景提供的解决方案。</p>
+<p><img src="../../img/docs/multisubscribe.png" alt="4"></p>
+<p>上图有两个业务集群,分别部署在北京和上海,每个业务集群有自己独立的注册中心集群,要解决两个业务集群间服务的透明 RPC 通信问题。</p>
+<ol>
+<li>服务提供端,双注册中心发布</li>
+</ol>
+<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">"beijingRegistry"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">default</span>=<span class="hljs-string">"false"</span>/&gt;</span>                                                                           <span class="hljs-tag">&lt;< [...]
+                                                                                          
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.multi.registry.api.HelloService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"helloService"</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"shanghaiRegistry,beijingRegistry"</span>/&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.multi.registry.api.DemoService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"demoService"</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"shanghaiRegistry,beijingRegistry"</span>/&gt;</span>
+
+</code></pre>
+<ol start="2">
+<li>服务消费端,根据消费需求做单/双注册中心订阅</li>
+</ol>
+<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">"beijingRegistry"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">default</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">preferred</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">weight</s [...]
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.multi.registry.api.DemoService"</span>/&gt;</span>
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span>  <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.multi.registry.api.DemoService"</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"beijingRegistry, shanghaiRegistry"</span>/&gt;</span>
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.multi.registry.api.HelloService"</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"beijingRegistry"</span>/&gt;</span>
+
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.samples.multi.registry.api.HelloService"</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"shanghaiRegistry,shanghaiRegistry"</span>/&gt;</span>
+
+</code></pre>
+<h4>Dubbo 对异构注册中心集群的支持</h4>
+<p>虽然我们会做多注册中心集群部署,但通常情况下,我们部署的都是相同的注册中心产品,如都是 Zookeeper、Nacos;而对于注册中心迁移的场景,则要求 Dubbo 能提供对更多的注册中心产品的支持,或者最重要的要有很好的扩展能力。Dubbo 官方目前支持的注册中心实现有:</p>
+<p><img src="../../img/docs/dubbo-screen2.png" alt="5"></p>
+<p>这里需要特别提到的一点是,当前 Dubbo 的服务注册/发现模型是以接口为粒度的,而从 2.7.5 版本开始,Dubbo 新引入了应用粒度的服务注册/发现模型。这一方面有助于优化 Dubbo 当前服务发现机制、提升服务容量,另一方面对于联通以 SpringCloud 为代表的微服务体系也非常重要(关于这点在下一章中有进一步提及)。更多关于《应用粒度服务发现:服务自省》的介绍,我们将在接下来的文章或文档中予以补充,请持续关注。</p>
+<h4>多订阅带来的流量调度问题</h4>
+<p>在引入多注册中心集群后,Dubbo 在流量选址时的多了一层注册中心集群间的负载均衡:</p>
+<p><img src="../../img/docs/cluster-lb.png" alt="6"></p>
+<p>在 Cluster Invoker 这一级,我们支持的选址策略有(2.7.5+ 版本,具体使用请参见文档):</p>
+<ul>
+<li>
+<p>指定优先级</p>
+<pre><code class="language-xml"><span class="hljs-comment">&lt;!-- 来自 preferred=“true” 注册中心的地址将被优先选择,只有该中心无可用地址时才 Fallback 到其他注册中心 --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">preferred</span>=<span class="hljs-string">"true"</span> /&gt;</span>
+</code></pre>
+</li>
+<li>
+<p>同 zone 优先</p>
+<pre><code class="language-xml"><span class="hljs-comment">&lt;!-- 选址时会和流量中的 zone key 做匹配,流量会优先派发到相同 zone 的地址 --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">zone</span>=<span class="hljs-string">"beijing"</span> /&gt;</span>
+</code></pre>
+</li>
+<li>
+<p>权重轮询</p>
+<pre><code class="language-xml"><span class="hljs-comment">&lt;!-- 来自北京和上海集群的地址,将以 10:1 的比例来分配流量 --&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"beijing"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address1}"</span> <span class="hljs-attr">weight</span>=<span class="hljs-string">”100“</span> /&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"shanghai"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://${zookeeper.address2}"</span> <span class="hljs-attr">weight</span>=<span class="hljs-string">”10“</span> /&gt;</span>
+</code></pre>
+</li>
+<li>
+<p>默认,stick to 任意可用</p>
+</li>
+</ul>
+<h4>多注册中心适用的场景</h4>
+<ul>
+<li>
+<p>同区域流量优先调度</p>
+<p>出于容灾或者服务伸缩性需求,服务/应用往往需要部署在多个独立的机房/区域,在每个区域有独立注册中心集群的场景下,实现同区域的流量优先调度就能很好的解决延迟和可用性问题。</p>
+</li>
+<li>
+<p>注册中心迁移</p>
+<p>公司的服务一直以来可能是存储在某一个注册中心,如 Zookeeper,但到了某个时间节点,因为各种各样的原因,当我们要迁移到另外的注册中心时,多注册中心模型能够保证平滑的迁移。</p>
+</li>
+<li>
+<p>异构系统互通</p>
+<p>不同微服务体系开发的服务,都封闭在各自的服务发现体系中,而通过统一的多注册中心模型,可以实现不同体系的服务互相发现。</p>
+</li>
+</ul>
+<h2>借助 Dubbo 联通异构的微服务体系</h2>
+<p>上文我们提到了在组织内存在异构微服务体系的各种合理可能性,现在我们来具体看一下异构微服务体系的实际场景,以及使用 Dubbo 实现互联互通的解决方法。首先我们先通过一张图来看一下,联通异构的微服务体系具体是一个什么样的场景。</p>
+<p><img src="../../img/docs/heterogeneous.png" alt="7"></p>
+<p>如上图所示,我们有部分微服务可以是基于 SpringCloud、gRPC、K8S 或者是自建体系构建的,他们各自之间默认是相互隔离无法联通的。当我们再构建一套基于 Dubbo 的微服务体系时,则利用 Dubbo 的多协议、多服务发现模型,我们就可以做到和各个微服务体系间的两两之间的互联互通。进一步的,如图中橙色箭头所示,依赖 Dubbo 体系作为桥接层,我们还可以实现两个异构微服务体系间的打通。</p>
+<p>对于以下几个示例场景,由于在地址发现层面目前没有统一的标准,我们暂且假设地址发现层面不同的体系建是没有障碍的,我们将重点关注迁移的基本流程以及通信协议环节。(关于地址发现部分,我们将在后续《服务自省:基于应用粒度的服务发现》之后再深入探讨)</p>
+<h3>Dubbo 体系内的协议迁移(共存)</h3>
+<p>绝大多数开发者对 Dubbo 有这么一个固有认知:使用 Dubbo 开发微服务系统,则就要用 Dubbo 协议来作为服务间的通信协议才是最优方案。实际上,我们完全没有必要只束缚在 Dubbo RPC 协议上。Dubbo 作为微服务开发框架和 Dubbo 作为 RPC 协议这是两个概念,其实是完全可以分开来看待的,比如我们用 Dubbo 框架开发的业务系统,选用 rest、gRPC 通信是完全没有问题的(参加 Dubbo 支持的协议列表),具体用什么协议根据业务特点和技术规划才是最适合的。</p>
+<p><img src="../../img/docs/grpcrest.png" alt="8"></p>
+<p>当前在云原生、Mesh 的大背景下, HTTP1/2、gRPC 协议开始受到越来越多的关注,一方面原因自然是因为它们在标准化方面做的更好,得到的更多的网络设备和基础设施的支持,具备更好的通用性和穿透性。对于很多有云原生迁移意愿的企业来说,往此类协议迁移无疑将对之后的架构升级有更多的帮助。</p>
+<p>下图演示了在 Dubbo 体系内,从 Dubbo 协议向 gRPC 协议迁移的一个中间状态。</p>
+<p><img src="../../img/docs/migrate.png" alt="9"></p>
+<ul>
+<li>最左边的代表尚未迁移的老应用,这类应用在迁移过程中仍然要消费和提供 Dubbo 协议的服务。</li>
+<li>中间的代表处于迁移中的应用,他们中间可能有些是服务提供者,既要为左边的老系统提供提供 Dubbo 协议服务;又要为右边的新系统提供 gRPC 服务;因此他们都是双协议暴露服务。</li>
+<li>最右边则代表是新开发的或者已经迁移完成的应用,这个体系内已能完全用 gRPC 协议通信。</li>
+<li>最终度过中间态后,我们期望所有的应用都达到最左边应用的状态,实现完全的 gRPC 协议通信。</li>
+</ul>
+<h3>Spring Cloud 体系迁移到 Dubbo 体系(共存)</h3>
+<p>如前文所述,由于 SpringCloud 和 Dubbo 间服务发现模型的问题,要两个体系间的地址互通需要 Dubbo 侧作相应的适配,关于这部分内容将在接下来的 2.7.5 版本《服务自省》部分发布,在此我们暂且认为已经打通。</p>
+<p><img src="../../img/docs/migrate-final.png" alt="10"></p>
+<p>Dubbo 体系内的部分应用作为透明的联通两个体系的关键节点,部分服务提供者应用要双协议发布、部分消费者应用要做到选定协议消费。由于老的 Spring Cloud 体系不允许做任何改动,因此联通两套体系的关键是 REST 协议,对 Dubbo 侧的应用来说:</p>
+<ul>
+<li>部分应用可能要以 REST 协议消费 SpringCloud 的服务;</li>
+<li>部分应用可能要暴露 REST 协议共 SpringCloud 消费;</li>
+<li>Dubbo 自有体系内则通过自己选定的协议通信,这里就比较灵活了,可以是 Dubbo、REST、gRPC 等其中的任一种。而如果选定 REST 协议则对于与 SpringCloud 体系的联通就变得更加自然了,因为两端的协议都是统一的。</li>
+</ul>
+<p>对于消费 Spring Cloud 服务的应用,要配置服务 :</p>
+<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">"xxx.SpringService"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"rest"</span>/&gt;</span>
+</code></pre>
+<p>对于提供服务给 Spring Cloud 侧消费的应用,则指定服务暴露为 rest 协议,或者双协议暴露(因如果这个服务还要被新体系内的应用调用到):</p>
+<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">"xxx.NewService"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"rest,dubbo"</span>/&gt;</span>
+</code></pre>
+<p>作为 Dubbo 的维护者,虽然我们这里有明显的偏向性,讲的是从如何从 SpringCloud 体系迁移到 Dubbo 体系。但是反过来考虑,如果你已经或者即将选型 Dubbo 来开发微服务,则未来从 Dubbo 迁移到 SpringCloud 也是同样的思路,Dubbo 的多协议、多注册模型为双向迁移都提供了同样的灵活性。</p>
+<h3>自建体系迁移到 Dubbo 体系(共存)</h3>
+<p>这个场景和上一节中讲到的的 SpringCloud 迁移有些类似,最大的区别在于 rest 协议是 Dubbo 官方默认提供支持的,而对于已有的微服务体系内的私有通信协议,则需要先要自己去扩展 Dubbo Protocol 来提供协议层面的支持,关于 Protocol 如何扩展请参见以下官方文档:</p>
+<p><a href="http://dubbo.apache.org/zh-cn/docs/dev/impls/protocol.html">http://dubbo.apache.org/zh-cn/docs/dev/impls/protocol.html</a></p>
+<h2>总结与展望</h2>
+<p>要实现异构微服务体系间的共存或迁移,关键点在打通异构体系间的<code>协议</code>与<code>服务发现</code>,得益于 Dubbo 自身对多协议、多注册模型的支持,我们可以很容易的使 Dubbo 成为桥接异构微服务体系的中间层。熟悉 Dubbo 多协议实现细节的同学,可能会担心在服务数量较多的场景下,多协议注册会导致地址数量翻倍从而影响地址推送性能;另外在文中《借助 Dubbo 联通异构的微服务体系》一节,关于如何实现异构体系间的透明服务发现部分我们没有做详细的说明。关于涉及服务发现的这部分,我们将在接下来的文章中做具体阐述,看看 Dubbo 2.7.5 版本引入新的服务发现机制是如何解决这个问题的,请持续关注后续文章及 Dubbo 官方文档。</p>
+</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a href=" [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/blogDetail.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/connect-heterogeneous-microservices.json b/zh-cn/blog/connect-heterogeneous-microservices.json
new file mode 100644
index 0000000..e97e8be
--- /dev/null
+++ b/zh-cn/blog/connect-heterogeneous-microservices.json
@@ -0,0 +1,6 @@
+{
+  "filename": "connect-heterogeneous-microservices.md",
+  "__html": "<h1>使用 Dubbo 连接异构微服务体系</h1>\n<p>从编程开发的角度来说,Dubbo 首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时 Dubbo 也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。</p>\n<p>在这篇文章中,我们将以以上基础能力为背景,尝试突破 Dubbo 体系自身,探索如何利用 Dubbo 对多协议、多服务发现模型的支持,来实现异构微服务体系间的互联互通。在实际业务场景中,这可以用来解决异构技术体系共存场景下的通信问题,帮助公司实现在异构技术体系间作平滑迁移,解决大规模跨区域、多集群部署场景的地址发现及流量调度等问题。</p>\n<h2>面向接口代理的透明服务开发框架</h2>\n<p>我们还是从 <strong>Dubbo 是一个�
 �服务开发框架</strong> 这个大家熟知的概念开始。就像 Spring 是开发 Java 应用的基础框架一样,我们经常会选用 Dubbo 作为开发微服务业的基础框架。  [...]
+  "link": "/zh-cn/blog/connect-heterogeneous-microservices.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-practice-from-guazi.html b/zh-cn/blog/dubbo-practice-from-guazi.html
new file mode 100644
index 0000000..d5f22bd
--- /dev/null
+++ b/zh-cn/blog/dubbo-practice-from-guazi.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="dubbo-practice-from-guazi" />
+	<meta name="description" content="dubbo-practice-from-guazi" />
+	<!-- 网页标签标题 -->
+	<title>dubbo-practice-from-guazi</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/blogDetail.css" />
+</head>
+<body>
+	<div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a h [...]
+<h2>前言</h2>
+<p>  随着瓜子业务的不断发展,系统规模在逐渐扩大,目前在瓜子的私有云上已经运行着数百个dubbo应用,上千个dubbo实例。瓜子各部门业务迅速发展,版本没有来得及统一,各个部门都有自己的用法。随着第二机房的建设,dubbo版本统一的需求变得越发迫切。几个月前,公司发生了一次与dubbo相关的生产事故,成为了公司dubbo版本升级的诱因。</p>
+<p>  接下来,我会从这次事故开始,讲讲我们这段时间所做的dubbo版本升级的历程以及dubbo后续多机房的方案。</p>
+<h2>一、Ephermal节点未及时删除导致provider不能恢复注册的问题修复</h2>
+<h3>事故背景</h3>
+<p>  在生产环境,瓜子内部各业务线共用一套zookeeper集群作为dubbo的注册中心。2019年9月份,机房的一台交换机发生故障,导致zookeeper集群出现了几分钟的网络波动。在zookeeper集群恢复后,正常情况下dubbo的provider应该会很快重新注册到zookeeper上,但有一小部分的provider很长一段时间没有重新注册到zookeeper上,直到手动重启应用后才恢复注册。</p>
+<h3>排查过程</h3>
+<p>  首先,我们统计了出现这种现象的dubbo服务的版本分布情况,发现在大多数的dubbo版本中都存在这种问题,且发生问题的服务比例相对较低,在github中我们也未找到相关问题的issues。因此,推断这是一个尚未修复的且在网络波动情况的场景下偶现的问题。</p>
+<p>  接着,我们便将出现问题的应用日志、zookeeper日志与dubbo代码逻辑进行相互印证。在应用日志中,应用重连zookeeper成功后provider立刻进行了重新注册,之后便没有任何日志打印。而在zookeeper日志中,注册节点被删除后,并没有重新创建注册节点。对应到dubbo的代码中,只有在<code>FailbackRegistry.register(url)</code>的<code>doRegister(url)</code>执行成功或线程被挂起的情况下,才能与日志中的情况相吻合。</p>
+<pre><code class="language-java">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span> </span>{
+        <span class="hljs-keyword">super</span>.register(url);
+        failedRegistered.remove(url);
+        failedUnregistered.remove(url);
+        <span class="hljs-keyword">try</span> {
+            <span class="hljs-comment">// Sending a registration request to the server side</span>
+            doRegister(url);
+        } <span class="hljs-keyword">catch</span> (Exception e) {
+            Throwable t = e;
+
+            <span class="hljs-comment">// If the startup detection is opened, the Exception is thrown directly.</span>
+            <span class="hljs-keyword">boolean</span> check = getUrl().getParameter(Constants.CHECK_KEY, <span class="hljs-keyword">true</span>)
+                    &amp;&amp; url.getParameter(Constants.CHECK_KEY, <span class="hljs-keyword">true</span>)
+                    &amp;&amp; !Constants.CONSUMER_PROTOCOL.equals(url.getProtocol());
+            <span class="hljs-keyword">boolean</span> skipFailback = t <span class="hljs-keyword">instanceof</span> SkipFailbackWrapperException;
+            <span class="hljs-keyword">if</span> (check || skipFailback) {
+                <span class="hljs-keyword">if</span> (skipFailback) {
+                    t = t.getCause();
+                }
+                <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalStateException(<span class="hljs-string">"Failed to register "</span> + url + <span class="hljs-string">" to registry "</span> + getUrl().getAddress() + <span class="hljs-string">", cause: "</span> + t.getMessage(), t);
+            } <span class="hljs-keyword">else</span> {
+                logger.error(<span class="hljs-string">"Failed to register "</span> + url + <span class="hljs-string">", waiting for retry, cause: "</span> + t.getMessage(), t);
+            }
+
+            <span class="hljs-comment">// Record a failed registration request to a failed list, retry regularly</span>
+            failedRegistered.add(url);
+        }
+    }
+</code></pre>
+<p>  在继续排查问题前,我们先普及下这些概念:dubbo默认使用curator作为zookeeper的客户端,curator与zookeeper是通过session维持连接的。当curator重连zookeeper时,若session未过期,则继续使用原session进行连接;若session已过期,则创建新session重新连接。而ephemeral节点与session是绑定的关系,在session过期后,会删除此session下的ephemeral节点。</p>
+<p>  继续对<code>doRegister(url)</code>的代码进行进一步排查,我们发现在<code>CuratorZookeeperClient.createEphemeral(path)</code>方法中有这么一段逻辑:在<code>createEphemeral(path)</code>捕获了<code>NodeExistsException</code>,创建ephemeral节点时,若此节点已存在,则认为ephemeral节点创建成功。这段逻辑初看起来并没有什么问题,且在以下两种常见的场景下表现正常:</p>
+<ol>
+<li>Session未过期,创建Ephemeral节点时原节点仍存在,不需要重新创建</li>
+<li>Session已过期,创建Ephemeral节点时原节点已被zookeeper删除,创建成功</li>
+</ol>
+<pre><code class="language-java">    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">createEphemeral</span><span class="hljs-params">(String path)</span> </span>{
+        <span class="hljs-keyword">try</span> {
+            client.create().withMode(CreateMode.EPHEMERAL).forPath(path);
+        } <span class="hljs-keyword">catch</span> (NodeExistsException e) {
+        } <span class="hljs-keyword">catch</span> (Exception e) {
+            <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalStateException(e.getMessage(), e);
+        }
+    }
+</code></pre>
+<p>  但是实际上还有一种极端场景,<strong>zookeeper的Session过期与删除Ephemeral节点不是原子性的</strong>,也就是说客户端在得到Session过期的消息时,Session对应的Ephemeral节点可能还未被zookeeper删除。此时dubbo去创建Ephemeral节点,发现原节点仍存在,故不重新创建。待Ephemeral节点被zookeeper删除后,便会出现dubbo认为重新注册成功,但实际未成功的情况,也就是我们在生产环境遇到的问题。</p>
+<p>  此时,问题的根源已被定位。定位问题之后,我们与dubbo社区交流,发现考拉的同学也遇到过同样的问题,更确定了这个原因。</p>
+<h3>问题的复现与修复</h3>
+<p>  定位到问题之后,我们便开始尝试本地复现。由于zookeeper的Session过期但Ephemeral节点未被删除的场景直接模拟比较困难,我们通过修改zookeeper源码,在Session过期与删除Ephemeral节点的逻辑中增加了一段休眠时间,间接模拟出这种极端场景,并在本地复现了此问题。</p>
+<p>  在排查问题的过程中,我们发现kafka的旧版本在使用zookeeper时也遇到过类似的问题,并参考kafka关于此问题的修复方案,确定了dubbo的修复方案。在创建Ephemeral节点捕获到<code>NodeExistsException</code>时进行判断,若Ephemeral节点的SessionId与当前客户端的SessionId不同,则删除并重建Ephemeral节点。在内部修复并验证通过后,我们向社区提交了issues及pr。</p>
+<p>  kafka类似问题issues:<a href="https://issues.apache.org/jira/browse/KAFKA-1387">https://issues.apache.org/jira/browse/KAFKA-1387</a></p>
+<p>  dubbo注册恢复问题issues:<a href="https://github.com/apache/dubbo/issues/5125">https://github.com/apache/dubbo/issues/5125</a></p>
+<h2>二、瓜子的dubbo升级历程</h2>
+<p>  上文中的问题修复方案已经确定,但我们显然不可能在每一个dubbo版本上都进行修复。在咨询了社区dubbo的推荐版本后,我们决定在dubbo2.7.3版本的基础上,开发内部版本修复来这个问题。并借这个机会,开始推动公司dubbo版本的统一升级工作。</p>
+<h3>为什么要统一dubbo版本</h3>
+<ol>
+<li>统一dubbo版本后,我们可以在此版本上内部紧急修复一些dubbo问题(如上文的dubbo注册故障恢复失效问题)。</li>
+<li>瓜子目前正在进行第二机房的建设,部分dubbo服务也在逐渐往第二机房迁移。统一dubbo版本,也是为dubbo的多机房做铺垫。</li>
+<li>有利于我们后续对dubbo服务的统一管控。</li>
+<li>dubbo社区目前的发展方向与我们公司现阶段对dubbo的一些诉求相吻合,如支持gRPC、云原生等。</li>
+</ol>
+<h3>为什么选择dubbo2.7.3</h3>
+<ol>
+<li>在我们之前,携程与dubbo社区合作进行了携程dubbo内部版本的升级,并在社区2.7.3版本上修复了很多兼容性问题。感谢携程的同学帮我们踩坑~</li>
+<li>dubbo2.7.3版本在当时虽然是最新的版本,但已经发布了2个月的时间,从社区issues反馈来看,dubbo2.7.3相对dubbo2.7之前的几个版本,在兼容性方面要好很多。</li>
+<li>我们也咨询了dubbo社区的同学,推荐升级版本为2.7.3。</li>
+</ol>
+<h3>内部版本定位</h3>
+<p>  基于社区dubbo2.7.3版本开发的dubbo内部版本属于过渡性质的版本,目的是为了修复线上provider不能恢复注册的问题,以及一些社区dubbo2.7.3的兼容性问题。瓜子的dubbo最终还是要跟随社区的版本,而不是开发自已的内部功能。因此我们在dubbo内部版本中修复的所有问题均与社区保持了同步,以保证后续可以兼容升级到社区dubbo的更高版本。</p>
+<h3>兼容性验证与升级过程</h3>
+<p>  我们在向dubbo社区的同学咨询了版本升级方面的相关经验后,于9月下旬开始了dubbo版本的升级工作。</p>
+<ol>
+<li><strong>初步兼容性验证</strong>
+首先,我们梳理了一些需要验证的兼容性case,针对公司内部使用较多的dubbo版本,与dubbo2.7.3一一进行了兼容性验证。经验证,除dubboX外,dubbo2.7.3与其他dubbo版本均兼容。dubboX由于对dubbo协议进行了更改,与dubbo2.7.3不兼容。</li>
+<li><strong>生产环境兼容性验证</strong>
+在初步验证兼容性通过后,我们与业务线合作,挑选了一些重要程度较低的项目,在生产环境对dubbo2.7.3与其他版本的兼容性进行了进一步验证。并在内部版本修复了一些兼容性问题。</li>
+<li><strong>推动公司dubbo版本升级</strong>
+在10月初,完成了dubbo兼容性验证后,我们开始在各个业务线推动dubbo的升级工作。截止到12月初,已经有30%的dubbo服务的完成了版本升级。按照排期,预计于2020年3月底前完成公司dubbo版本的统一升级。</li>
+</ol>
+<h3>兼容性问题汇总</h3>
+<p>  在推动升级dubbo2.7.3版本的过程整体上比较顺利,当然也遇到了一些兼容性问题:</p>
+<ul>
+<li>
+<p><strong>创建zookeeper节点时提示没有权限</strong>
+dubbo配置文件中已经配置了zookeeper的用户名密码,但在创建zookeeper节点时却抛出<code>KeeperErrorCode = NoAuth</code>的异常,这种情况分别对应两个兼容性问题:</p>
+<ul>
+<li>issues:<a href="https://github.com/apache/dubbo/issues/5076">https://github.com/apache/dubbo/issues/5076</a>
+dubbo在未配置配置中心时,默认使用注册中心作为配置中心。通过注册中心的配置信息初始化配置中心配置时,由于遗漏了用户名密码,导致此问题。</li>
+<li>issues:<a href="https://github.com/apache/dubbo/issues/4991">https://github.com/apache/dubbo/issues/4991</a>
+dubbo在建立与zookeeper的连接时会根据zookeeper的address复用之前已建立的连接。当多个注册中心使用同一个address,但权限不同时,就会出现<code>NoAuth</code>的问题。
+参考社区的pr,我们在内部版本进行了修复。</li>
+</ul>
+</li>
+<li>
+<p><strong>curator版本兼容性问题</strong></p>
+<ul>
+<li>dubbo2.7.3与低版本的curator不兼容,因此我们默认将curator版本升级至4.2.0</li>
+</ul>
+<pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.curator<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>curator-framework<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>4.2.0<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+<span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.apache.curator<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>curator-recipes<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>4.2.0<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
+</code></pre>
+<ul>
+<li>分布式调度框架elastic-job-lite强依赖低版本的curator,与dubbo2.7.3使用的curator版本不兼容,这给dubbo版本升级工作带来了一定阻塞。考虑到elastic-job-lite已经很久没有人进行维护,目前一些业务线计划将elastic-job-lite替换为其他的调度框架。</li>
+</ul>
+</li>
+<li>
+<p><strong>openFeign与dubbo兼容性问题</strong>
+issues: <a href="https://github.com/apache/dubbo/issues/3990">https://github.com/apache/dubbo/issues/3990</a>
+dubbo的ServiceBean监听spring的ContextRefreshedEvent,进行服务暴露。openFeign提前触发了ContextRefreshedEvent,此时ServiceBean还未完成初始化,于是就导致了应用启动异常。
+参考社区的pr,我们在内部版本修复了此问题。</p>
+</li>
+<li>
+<p><strong>RpcException兼容性问题</strong>
+dubbo低版本consumer不能识别dubbo2.7版本provider抛出的<code>org.apache.dubbo.rpc.RpcException</code>。因此,在consumer全部升级到2.7之前,不建议将provider的<code>com.alibaba.dubbo.rpc.RpcException</code>改为<code>org.apache.dubbo.rpc.RpcException</code></p>
+</li>
+<li>
+<p><strong>qos端口占用</strong>
+dubbo2.7.3默认开启qos功能,导致一些混部在物理机的dubbo服务升级时出现qos端口占用问题。关闭qos功能后恢复。</p>
+</li>
+<li>
+<p><strong>自定义扩展兼容性问题</strong>
+业务线对于dubbo的自定义扩展比较少,因此在自定义扩展的兼容性方面暂时还没有遇到比较难处理的问题,基本上都是变更package导致的问题,由业务线自行修复。</p>
+</li>
+<li>
+<p><strong>skywalking agent兼容性问题</strong>
+我们项目中一般使用skywalking进行链路追踪,由于skywalking agent6.0的plugin不支持dubbo2.7,因此统一升级skywalking agent到6.1。</p>
+</li>
+</ul>
+<h2>三、dubbo多机房方案</h2>
+<p>  瓜子目前正在进行第二机房的建设工作,dubbo多机房是第二机房建设中比较重要的一个话题。在dubbo版本统一的前提下,我们就能够更顺利的开展dubbo多机房相关的调研与开发工作。</p>
+<h3>初步方案</h3>
+<p>  我们咨询了dubbo社区的建议,并结合瓜子云平台的现状,初步确定了dubbo多机房的方案。</p>
+<ol>
+<li>在每个机房内,部署一套独立的zookeeper集群。集群间信息不同步。这样就没有了zookeeper集群跨机房延迟与数据不同步的问题。</li>
+<li>dubbo服务注册时,仅注册到本机房的zookeeper集群;订阅时,同时订阅两个机房的zookeeper集群。</li>
+<li>实现同机房优先调用的路由逻辑。以减少跨机房调用导致的不必要网络延迟。</li>
+</ol>
+<h3>同机房优先调用</h3>
+<p>  dubbo同机房优先调用的实现比较简单,相关逻辑如下:</p>
+<ol>
+<li>瓜子云平台默认将机房的标志信息注入容器的环境变量中。</li>
+<li>provider暴露服务时,读取环境变量中的机房标志信息,追加到待暴露服务的url中。</li>
+<li>consumer调用provider时,读取环境变量中的机房标志信息,根据路由策略优先调用具有相同标志信息的provider。</li>
+</ol>
+<p>  针对以上逻辑,我们简单实现了dubbo通过环境变量进行路由的功能,并向社区提交了pr。
+  dubbo通过环境变量路由pr: <a href="https://github.com/apache/dubbo/pull/5348">https://github.com/apache/dubbo/pull/5348</a></p>
+</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a href=" [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/blogDetail.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-practice-from-guazi.json b/zh-cn/blog/dubbo-practice-from-guazi.json
new file mode 100644
index 0000000..2ce860d
--- /dev/null
+++ b/zh-cn/blog/dubbo-practice-from-guazi.json
@@ -0,0 +1,6 @@
+{
+  "filename": "dubbo-practice-from-guazi.md",
+  "__html": "<h1>dubbo在瓜子二手车的实践</h1>\n<h2>前言</h2>\n<p>  随着瓜子业务的不断发展,系统规模在逐渐扩大,目前在瓜子的私有云上已经运行着数百个dubbo应用,上千个dubbo实例。瓜子各部门业务迅速发展,版本没有来得及统一,各个部门都有自己的用法。随着第二机房的建设,dubbo版本统一的需求变得越发迫切。几个月前,公司发生了一次与dubbo相关的生产事故,成为了公司dubbo版本升级的诱因。</p>\n<p>  接下来,我会从这次事故开始,讲讲我们这段时间所做的dubbo版本升级的历程以及dubbo后续多机房的方案。</p>\n<h2>一、Ephermal节点未及时删除导致provider不能恢复注册的问题修复</h2>\n<h3>事故背景</h3>\n<p>  在生产环境,瓜子内部各业务线共用一套zookeeper集群作为dubbo的注册中心。2019年9月份,机房的一台交换机发生故障,导致zookeeper集群出现�
 ��几分钟的网络波动。在zookeeper集群恢复后,正常情况下dubbo的provider应该会很快重新 [...]
+  "link": "/zh-cn/blog/dubbo-practice-from-guazi.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/index.html b/zh-cn/blog/index.html
index ea6de38..9dba3bf 100644
--- a/zh-cn/blog/index.html
+++ b/zh-cn/blog/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/blog.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-list-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a hre [...]
+	<div id="root"><div class="blog-list-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a hre [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
 	<script>
diff --git a/zh-cn/docs/admin/README.html b/zh-cn/docs/admin/README.html
index c71e799..28018d0 100644
--- a/zh-cn/docs/admin/README.html
+++ b/zh-cn/docs/admin/README.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/admin/SUMMARY.html b/zh-cn/docs/admin/SUMMARY.html
index 933e839..da95b2b 100644
--- a/zh-cn/docs/admin/SUMMARY.html
+++ b/zh-cn/docs/admin/SUMMARY.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <li><a href="introduction.md">1 Dubbo Admin介绍</a>
 <ul>
 <li><a href="serviceSearch.md">1.1 服务搜索和详情</a></li>
diff --git a/zh-cn/docs/admin/install/admin-console.html b/zh-cn/docs/admin/install/admin-console.html
index 20359ca..cb76335 100644
--- a/zh-cn/docs/admin/install/admin-console.html
+++ b/zh-cn/docs/admin/install/admin-console.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>目前版本的管理控制台正在开发中,已经完成了服务查询和服务治理的功能,采用前后端分离的模式,具体的安装和使用步骤如下:</p>
 <p>安装:</p>
 <pre><code class="language-sh">git <span class="hljs-built_in">clone</span> https://github.com/apache/dubbo-admin.git /var/tmp/dubbo-admin
diff --git a/zh-cn/docs/admin/install/consumer-demo.html b/zh-cn/docs/admin/install/consumer-demo.html
index ef206ce..90307e3 100644
--- a/zh-cn/docs/admin/install/consumer-demo.html
+++ b/zh-cn/docs/admin/install/consumer-demo.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>安装:</p>
 <pre><code class="language-sh">git <span class="hljs-built_in">clone</span> https://github.com/apache/dubbo.git
 <span class="hljs-built_in">cd</span> dubbo/dubbo-demo/dubbo-demo-xml
diff --git a/zh-cn/docs/admin/install/introduction.html b/zh-cn/docs/admin/install/introduction.html
index 0b576c7..382c16a 100644
--- a/zh-cn/docs/admin/install/introduction.html
+++ b/zh-cn/docs/admin/install/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>你可以只运行 Demo Provider 和 Demo Consumer,它们缺省配置为通过 Multicast  <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 注册中心广播互相发现,建议在不同机器上运行,如果在同一机器上,需设置 <code>unicast=false</code>:即: <code>multicast://224.5.6.7:1234?unicast=false</code>,否则发给消费者的单播消息可能被提供者抢占,两个消费者在同一台机器也一样,只有 multicast 注册中心有此问题。</p>
 <p>你也可以运行多个 Demo Provider 和 Demo Consumer,来验证软负载均衡,Demo Consumer 可以直接启动多个实例,而多个 Demo Provider 因有端口冲突,可在不同机器上运行,或者修改 Demo Provider 安装目录下 <code>conf/dubbo.properties</code> 配置中的 <code>dubbo.protocol.port</code> 的值。</p>
 <p>你也可以增加运行 Simple Monitor 监控中心,它缺省配置为通过 Multicast 注册中心广播发现 Provider 和 Consumer,并展示出它们的依赖关系,以及它们之间调用的次数和时间。</p>
diff --git a/zh-cn/docs/admin/install/provider-demo.html b/zh-cn/docs/admin/install/provider-demo.html
index c43e5d0..489b3bb 100644
--- a/zh-cn/docs/admin/install/provider-demo.html
+++ b/zh-cn/docs/admin/install/provider-demo.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>安装:</p>
 <pre><code class="language-sh">git <span class="hljs-built_in">clone</span> https://github.com/apache/dubbo.git
 <span class="hljs-built_in">cd</span> dubbo/dubbo-demo/dubbo-demo-xml
diff --git a/zh-cn/docs/admin/install/redis.html b/zh-cn/docs/admin/install/redis.html
index 8d7209d..57f2f43 100644
--- a/zh-cn/docs/admin/install/redis.html
+++ b/zh-cn/docs/admin/install/redis.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Redis <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 使用方式参见: <a href="http://dubbo.apache.org/books/dubbo-user-book/references/registry/redis.html">Redis 注册中心参考手册</a>。</p>
 <p>只需搭一个原生的 Redis 服务器,并将<a href="http://dubbo.apache.org/books/dubbo-user-book/quick-start.html">快速启动</a>中 Provider 和 Consumer 里的 <code>conf/dubbo.properties</code> 中的 <code>dubbo.registry.addrss</code> 的值改为 <code>redis://127.0.0.1:6379</code> 即可使用。</p>
 <p>Redis 注册中心集群 <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> 采用在客户端同时写入多个服务器,读取单个服务器的策略实现。</p>
diff --git a/zh-cn/docs/admin/install/simple-monitor-center.html b/zh-cn/docs/admin/install/simple-monitor-center.html
index 15c8ed8..439cb3b 100644
--- a/zh-cn/docs/admin/install/simple-monitor-center.html
+++ b/zh-cn/docs/admin/install/simple-monitor-center.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h4>不再单独提供监控中心,功能会整合到运维控制台,基于Metrics提供更丰富,实时的信息展示,敬请期待</h4>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/admin/install/simple-registry-center.html b/zh-cn/docs/admin/install/simple-registry-center.html
index bc54cee..b16712a 100644
--- a/zh-cn/docs/admin/install/simple-registry-center.html
+++ b/zh-cn/docs/admin/install/simple-registry-center.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/admin/install/zookeeper.html b/zh-cn/docs/admin/install/zookeeper.html
index 0e648b4..80e3c25 100644
--- a/zh-cn/docs/admin/install/zookeeper.html
+++ b/zh-cn/docs/admin/install/zookeeper.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>建议使用 <code>dubbo-2.3.3</code> 以上版本的 zookeeper <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 注册中心客户端。</p>
 <p>Dubbo 未对 Zookeeper 服务器端做任何侵入修改,只需安装原生的 Zookeeper 服务器即可,所有注册中心逻辑适配都在调用 Zookeeper 客户端时完成。</p>
 <p>安装:</p>
diff --git a/zh-cn/docs/admin/introduction.html b/zh-cn/docs/admin/introduction.html
index 61a1453..091641e 100644
--- a/zh-cn/docs/admin/introduction.html
+++ b/zh-cn/docs/admin/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>目前的管理控制台已经发布0.1版本,结构上采取了前后端分离的方式,前端使用Vue和Vuetify分别作为Javascript框架和UI框架,后端采用Spring Boot框架。既可以按照标准的Maven方式进行打包,部署,也可以采用前后端分离的部署方式,方便开发,功能上,目前具备了服务查询,服务治理(包括Dubbo2.7中新增的治理规则)以及服务测试三部分内容。</p>
 <h3>Maven方式部署</h3>
 <ul>
diff --git a/zh-cn/docs/admin/ops/dubbo-ops.html b/zh-cn/docs/admin/ops/dubbo-ops.html
index 06065c1..bf4fc1c 100644
--- a/zh-cn/docs/admin/ops/dubbo-ops.html
+++ b/zh-cn/docs/admin/ops/dubbo-ops.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>搜索页面</h2>
 <p>当你需要管理 Dubbo 的服务时,首先要搜索到这个服务,然后打开它的管理页面</p>
 <p><img src="../sources/images/dubbo-search.jpg" alt="/admin-guide/images/dubbo-search.png"></p>
diff --git a/zh-cn/docs/admin/ops/introduction.html b/zh-cn/docs/admin/ops/introduction.html
index cd1d4e7..e2c7c68 100644
--- a/zh-cn/docs/admin/ops/introduction.html
+++ b/zh-cn/docs/admin/ops/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/admin/ops/pinpoint.html b/zh-cn/docs/admin/ops/pinpoint.html
index a30d7f6..6a33642 100644
--- a/zh-cn/docs/admin/ops/pinpoint.html
+++ b/zh-cn/docs/admin/ops/pinpoint.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在使用Dubbo进行服务化或者整合应用后,假设某个服务后台日志显示有异常,这个服务又被多个应用调用的情况下,我们通常很难判断是哪个应用调用的,问题的起因是什么,因此我们需要一套分布式跟踪系统来快速定位问题,Pinpoint可以帮助我们快速定位问题(当然,解决方案也不止这一种)。</p>
 <h2>什么是Pinpoint(摘自<a href="https://skyao.gitbooks.io/learning-pinpoint/">Pinpoint学习笔记</a>)</h2>
 <p><a href="https://github.com/naver/pinpoint">Pinpoint</a>是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统。
diff --git a/zh-cn/docs/admin/ops/skywalking.html b/zh-cn/docs/admin/ops/skywalking.html
index 52489a1..8f4d356 100644
--- a/zh-cn/docs/admin/ops/skywalking.html
+++ b/zh-cn/docs/admin/ops/skywalking.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>Apache Skywalking(Incubator)简介</h2>
 <p><a href="https://github.com/apache/incubator-skywalking">Apache Skywalking(Incubator)</a> 专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统。<a href="https://github.com/apache/incubator-skywalking">Apache Skywalking(Incubator)</a>通过加载探针的方式收集应用调用链路信息,并对采集的调用链路信息进行分析,生成应用间关系和服务间关系以及服务指标。<a href="https://github.com/apache/incubator-skywalking">Apache Skywalking (Incubating)</a>目前支持多种语言,其中包括<a href="https://github.com/apache/incubator-skywalking">Java</a>,<a href="https://github.com/OpenSkywalking/skyw [...]
 <p>目前Skywalking已经支持从6个可视化维度剖析分布式系统的运行情况。总览视图是应用和组件的全局视图,其中包括组件和应用数量,应用的告警波动,慢服务列表以及应用吞吐量;拓扑图从应用依赖关系出发,展现整个应用的拓扑关系;应用视图则是从单个应用的角度,展现应用的上下游关系,TopN的服务和服务器,JVM的相关信息以及对应的主机信息。服务视图关注单个服务入口的运行情况以及此服务的上下游依赖关系,依赖度,帮助用户针对单个服务的优化和监控;调用链展现了调用的单次请求经过的所有埋点以及每个埋点的执行时长;告警视图根据配置阈值针对应用、服务器、服务进行实时告警。</p>
diff --git a/zh-cn/docs/admin/serviceGovernance.html b/zh-cn/docs/admin/serviceGovernance.html
index 6689221..34847bf 100644
--- a/zh-cn/docs/admin/serviceGovernance.html
+++ b/zh-cn/docs/admin/serviceGovernance.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>服务治理</h2>
 <p>服务治理主要作用是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的,主要有以下几个功能:</p>
 <h3>应用级别的服务治理</h3>
diff --git a/zh-cn/docs/admin/serviceSearch.html b/zh-cn/docs/admin/serviceSearch.html
index e9bc79f..5d83db5 100644
--- a/zh-cn/docs/admin/serviceSearch.html
+++ b/zh-cn/docs/admin/serviceSearch.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务查询是Dubbo OPS最基本的功能,目前支持服务,应用和IP三个维度的查询,并且服务和应用支持模糊查询和自动提示:
 <img src="sources/images/searchResult.png" alt="searchResult">
 其中详情页展示了服务提供者,消费者等信息,元数据信息需要在Dubbo2.7及之后的版本才会展示:<br>
diff --git a/zh-cn/docs/admin/serviceTest.html b/zh-cn/docs/admin/serviceTest.html
index 6bd9831..676309a 100644
--- a/zh-cn/docs/admin/serviceTest.html
+++ b/zh-cn/docs/admin/serviceTest.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/dev/README.html b/zh-cn/docs/dev/README.html
index 877d3ec..595c8f4 100644
--- a/zh-cn/docs/dev/README.html
+++ b/zh-cn/docs/dev/README.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/dev/SPI.html b/zh-cn/docs/dev/SPI.html
index 76170a2..2652c4e 100644
--- a/zh-cn/docs/dev/SPI.html
+++ b/zh-cn/docs/dev/SPI.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展点配置</h2>
 <h3>来源:</h3>
 <p>Dubbo 的扩展点加载从 JDK 标准的 SPI (Service Provider Interface) 扩展点发现机制加强而来。</p>
diff --git a/zh-cn/docs/dev/SUMMARY.html b/zh-cn/docs/dev/SUMMARY.html
index 0188316..dcc91a6 100644
--- a/zh-cn/docs/dev/SUMMARY.html
+++ b/zh-cn/docs/dev/SUMMARY.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <ul>
 <li><a href="./build.md">1 源码构建</a></li>
 <li><a href="./design.md">2 框架设计</a></li>
diff --git a/zh-cn/docs/dev/TCK.html b/zh-cn/docs/dev/TCK.html
index ebddd4c..251aa44 100644
--- a/zh-cn/docs/dev/TCK.html
+++ b/zh-cn/docs/dev/TCK.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 的协议,通讯,序列化,注册中心,负载均策等扩展点,都有多种可选策略,以应对不同应用场景,而我们的测试用例很分散,当用户自己需要加一种新的实现时,总是不确定能否满足扩展点的完整契约。</p>
 <p>所以,我们需要对核心扩展点写 <a href="http://en.wikipedia.org/wiki/Technology_Compatibility_Kit">TCK</a> (Technology Compatibility Kit),用户增加一种扩展实现,只需通过 TCK,即可确保与框架的其它部分兼容运行,可以有效提高整体健壮性,也方便第三方扩展者接入,加速开源社区的成熟。</p>
 <p>开源社区的行知同学已着手研究这一块,他的初步想法是借鉴 JBoss 的 CDI-TCK,做一个 Dubbo 的 TCK 基础框架,在此之上实现 Dubbo 的扩展点 TCK 用例。</p>
diff --git a/zh-cn/docs/dev/build.html b/zh-cn/docs/dev/build.html
index b376eae..7f5d48a 100644
--- a/zh-cn/docs/dev/build.html
+++ b/zh-cn/docs/dev/build.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>代码签出</h2>
 <p>通过以下的这个命令签出最新的项目源码 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
 <pre><code class="language-sh">git <span class="hljs-built_in">clone</span> https://github.com/apache/dubbo.git dubbo
diff --git a/zh-cn/docs/dev/checklist.html b/zh-cn/docs/dev/checklist.html
index e30d39f..45d9584 100644
--- a/zh-cn/docs/dev/checklist.html
+++ b/zh-cn/docs/dev/checklist.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>发布前 checklist</h2>
 <ul>
 <li>jira ticket 过一遍</li>
diff --git a/zh-cn/docs/dev/code-smell.html b/zh-cn/docs/dev/code-smell.html
index b37bf99..13b919a 100644
--- a/zh-cn/docs/dev/code-smell.html
+++ b/zh-cn/docs/dev/code-smell.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>这里记录的是 Dubbo 设计或实现不优雅的地方。</p>
 <h2>URL 转换</h2>
 <h3>1. 点对点暴露和引用服务</h3>
diff --git a/zh-cn/docs/dev/coding.html b/zh-cn/docs/dev/coding.html
index 42abd4c..36745d9 100644
--- a/zh-cn/docs/dev/coding.html
+++ b/zh-cn/docs/dev/coding.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>代码风格</h2>
 <p>Dubbo 的源代码和 JavaDoc 遵循以下的规范:</p>
 <ul>
diff --git a/zh-cn/docs/dev/contract.html b/zh-cn/docs/dev/contract.html
index e262a94..233ff45 100644
--- a/zh-cn/docs/dev/contract.html
+++ b/zh-cn/docs/dev/contract.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>这里记录的是 Dubbo 公共契约,希望所有扩展点遵守。</p>
 <h2>URL</h2>
 <ul>
diff --git a/zh-cn/docs/dev/contribution.html b/zh-cn/docs/dev/contribution.html
index 09256ba..907d454 100644
--- a/zh-cn/docs/dev/contribution.html
+++ b/zh-cn/docs/dev/contribution.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>流程</h2>
 <ul>
 <li>如果是扩展功能,直接新增工程,黑盒依赖 Dubbo 进行扩展。</li>
diff --git a/zh-cn/docs/dev/design.html b/zh-cn/docs/dev/design.html
index eb42755..2965444 100644
--- a/zh-cn/docs/dev/design.html
+++ b/zh-cn/docs/dev/design.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>整体设计</h2>
 <p><img src="sources/images/dubbo-framework.jpg" alt="/dev-guide/images/dubbo-framework.jpg"></p>
 <p>图例说明:</p>
diff --git a/zh-cn/docs/dev/implementation.html b/zh-cn/docs/dev/implementation.html
index 4419908..e7fef67 100644
--- a/zh-cn/docs/dev/implementation.html
+++ b/zh-cn/docs/dev/implementation.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>初始化过程细节</h2>
 <h3>解析服务</h3>
 <p>基于 dubbo.jar 内的 <code>META-INF/spring.handlers</code> 配置,Spring 在遇到 dubbo 名称空间时,会回调 <code>DubboNamespaceHandler</code>。</p>
diff --git a/zh-cn/docs/dev/impls/cache.html b/zh-cn/docs/dev/impls/cache.html
index 7df9c71..7b65675 100644
--- a/zh-cn/docs/dev/impls/cache.html
+++ b/zh-cn/docs/dev/impls/cache.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>用请求参数作为 key,缓存返回结果。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/cluster.html b/zh-cn/docs/dev/impls/cluster.html
index 9cc9623..c6b22cd 100644
--- a/zh-cn/docs/dev/impls/cluster.html
+++ b/zh-cn/docs/dev/impls/cluster.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>当有多个服务提供方时,将多个服务提供方组织成一个集群,并伪装成一个提供方。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/compiler.html b/zh-cn/docs/dev/impls/compiler.html
index abe0e7b..0f7cc44 100644
--- a/zh-cn/docs/dev/impls/compiler.html
+++ b/zh-cn/docs/dev/impls/compiler.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>Java 代码编译器,用于动态生成字节码,加速调用。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/config-center.html b/zh-cn/docs/dev/impls/config-center.html
index d6f1dae..ee22d79 100644
--- a/zh-cn/docs/dev/impls/config-center.html
+++ b/zh-cn/docs/dev/impls/config-center.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>设计目的</h2>
 <p>配置中心的核心功能是作为Key-Value存储,Dubbo框架告知配置中心其关心的key,配置中心返回该key对应的value值。</p>
 <p>按照应用场景划分,配置中心在Dubbo框架中主要承担以下职责:</p>
diff --git a/zh-cn/docs/dev/impls/container.html b/zh-cn/docs/dev/impls/container.html
index bd616ca..57ea0b7 100644
--- a/zh-cn/docs/dev/impls/container.html
+++ b/zh-cn/docs/dev/impls/container.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>服务容器扩展,用于自定义加载内容。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/dispatcher.html b/zh-cn/docs/dev/impls/dispatcher.html
index 6f60364..c080a8e 100644
--- a/zh-cn/docs/dev/impls/dispatcher.html
+++ b/zh-cn/docs/dev/impls/dispatcher.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>通道信息派发器,用于指定线程池模型。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/exchanger.html b/zh-cn/docs/dev/impls/exchanger.html
index bd8ec37..c327fd1 100644
--- a/zh-cn/docs/dev/impls/exchanger.html
+++ b/zh-cn/docs/dev/impls/exchanger.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>基于传输层之上,实现 Request-Response 信息交换语义。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/exporter-listener.html b/zh-cn/docs/dev/impls/exporter-listener.html
index bd67d66..0fcb147 100644
--- a/zh-cn/docs/dev/impls/exporter-listener.html
+++ b/zh-cn/docs/dev/impls/exporter-listener.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>当有服务暴露时,触发该事件。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/extension-factory.html b/zh-cn/docs/dev/impls/extension-factory.html
index 5016b3c..522e605 100644
--- a/zh-cn/docs/dev/impls/extension-factory.html
+++ b/zh-cn/docs/dev/impls/extension-factory.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>扩展点本身的加载容器,可从不同容器加载扩展点。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/filter.html b/zh-cn/docs/dev/impls/filter.html
index 92d6cfa..6bb3da2 100644
--- a/zh-cn/docs/dev/impls/filter.html
+++ b/zh-cn/docs/dev/impls/filter.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>服务提供方和服务消费方调用过程拦截,Dubbo 本身的大多功能均基于此扩展点实现,每次远程方法执行,该拦截都会被执行,请注意对性能的影响。</p>
 <p>约定:</p>
diff --git a/zh-cn/docs/dev/impls/introduction.html b/zh-cn/docs/dev/impls/introduction.html
index 2279976..c67ef7e 100644
--- a/zh-cn/docs/dev/impls/introduction.html
+++ b/zh-cn/docs/dev/impls/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>SPI 扩展接口仅用于系统集成,或 Contributor 扩展功能插件。</p>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/dev/impls/invoker-listener.html b/zh-cn/docs/dev/impls/invoker-listener.html
index f836c54..4dc4e52 100644
--- a/zh-cn/docs/dev/impls/invoker-listener.html
+++ b/zh-cn/docs/dev/impls/invoker-listener.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>当有服务引用时,触发该事件。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/load-balance.html b/zh-cn/docs/dev/impls/load-balance.html
index 6e40cec..45d66bc 100644
--- a/zh-cn/docs/dev/impls/load-balance.html
+++ b/zh-cn/docs/dev/impls/load-balance.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>从多个服务提者方中选择一个进行调用</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/logger-adapter.html b/zh-cn/docs/dev/impls/logger-adapter.html
index 716df41..9750448 100644
--- a/zh-cn/docs/dev/impls/logger-adapter.html
+++ b/zh-cn/docs/dev/impls/logger-adapter.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>日志输出适配扩展点。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/merger.html b/zh-cn/docs/dev/impls/merger.html
index 775e839..952033c 100644
--- a/zh-cn/docs/dev/impls/merger.html
+++ b/zh-cn/docs/dev/impls/merger.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>合并返回结果,用于分组聚合。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/monitor.html b/zh-cn/docs/dev/impls/monitor.html
index 1f62009..a2d96b1 100644
--- a/zh-cn/docs/dev/impls/monitor.html
+++ b/zh-cn/docs/dev/impls/monitor.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>负责服务调用次和调用时间的监控。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/networker.html b/zh-cn/docs/dev/impls/networker.html
index bfcd3c8..d5049f9 100644
--- a/zh-cn/docs/dev/impls/networker.html
+++ b/zh-cn/docs/dev/impls/networker.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>对等网络节点组网器。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/page.html b/zh-cn/docs/dev/impls/page.html
index 647afd8..f604d67 100644
--- a/zh-cn/docs/dev/impls/page.html
+++ b/zh-cn/docs/dev/impls/page.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>对等网络节点组网器。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/protocol.html b/zh-cn/docs/dev/impls/protocol.html
index 2abfb94..707b9f2 100644
--- a/zh-cn/docs/dev/impls/protocol.html
+++ b/zh-cn/docs/dev/impls/protocol.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>RPC 协议扩展,封装远程调用细节。</p>
 <p>契约:</p>
diff --git a/zh-cn/docs/dev/impls/proxy-factory.html b/zh-cn/docs/dev/impls/proxy-factory.html
index 2a54956..d9a643d 100644
--- a/zh-cn/docs/dev/impls/proxy-factory.html
+++ b/zh-cn/docs/dev/impls/proxy-factory.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>将 <code>Invoker</code> 接口转换成业务接口。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/registry.html b/zh-cn/docs/dev/impls/registry.html
index ecf4f25..9fe584b 100644
--- a/zh-cn/docs/dev/impls/registry.html
+++ b/zh-cn/docs/dev/impls/registry.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>负责服务的注册与发现。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/remoting.html b/zh-cn/docs/dev/impls/remoting.html
index fc1979a..af78792 100644
--- a/zh-cn/docs/dev/impls/remoting.html
+++ b/zh-cn/docs/dev/impls/remoting.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>远程通讯的服务器及客户端传输实现。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/router.html b/zh-cn/docs/dev/impls/router.html
index bc50f27..b46bad8 100644
--- a/zh-cn/docs/dev/impls/router.html
+++ b/zh-cn/docs/dev/impls/router.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>从多个服务提供方中选择一个进行调用。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/serialize.html b/zh-cn/docs/dev/impls/serialize.html
index d6486e1..ab0ca44 100644
--- a/zh-cn/docs/dev/impls/serialize.html
+++ b/zh-cn/docs/dev/impls/serialize.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>将对象转成字节流,用于网络传输,以及将字节流转为对象,用于在收到字节流数据后还原成对象。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/status-checker.html b/zh-cn/docs/dev/impls/status-checker.html
index ee6f79c..fb0fc39 100644
--- a/zh-cn/docs/dev/impls/status-checker.html
+++ b/zh-cn/docs/dev/impls/status-checker.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>检查服务依赖各种资源的状态,此状态检查可同时用于 telnet 的 status 命令和 hosting 的 status 页面。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/telnet-handler.html b/zh-cn/docs/dev/impls/telnet-handler.html
index 5a4a91b..a8b85cd 100644
--- a/zh-cn/docs/dev/impls/telnet-handler.html
+++ b/zh-cn/docs/dev/impls/telnet-handler.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>所有服务器均支持 telnet 访问,用于人工干预。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/threadpool.html b/zh-cn/docs/dev/impls/threadpool.html
index 4328685..03c277f 100644
--- a/zh-cn/docs/dev/impls/threadpool.html
+++ b/zh-cn/docs/dev/impls/threadpool.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>服务提供方线程池实现策略,当服务器收到一个请求时,需要在线程池中创建一个线程去执行服务提供方业务逻辑。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/impls/validation.html b/zh-cn/docs/dev/impls/validation.html
index b17c018..5fb4dc8 100644
--- a/zh-cn/docs/dev/impls/validation.html
+++ b/zh-cn/docs/dev/impls/validation.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>扩展说明</h2>
 <p>参数验证扩展点。</p>
 <h2>扩展接口</h2>
diff --git a/zh-cn/docs/dev/introduction.html b/zh-cn/docs/dev/introduction.html
index 0343d1e..1bf37b7 100644
--- a/zh-cn/docs/dev/introduction.html
+++ b/zh-cn/docs/dev/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/dev/principals/code-detail.html b/zh-cn/docs/dev/principals/code-detail.html
index b950b98..d7fff1e 100644
--- a/zh-cn/docs/dev/principals/code-detail.html
+++ b/zh-cn/docs/dev/principals/code-detail.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://javatar.iteye.com/blog/1056664">http://javatar.iteye.com/blog/1056664</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/principals/configuration.html b/zh-cn/docs/dev/principals/configuration.html
index 40620a8..23fc5fc 100644
--- a/zh-cn/docs/dev/principals/configuration.html
+++ b/zh-cn/docs/dev/principals/configuration.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://javatar.iteye.com/blog/949527">http://javatar.iteye.com/blog/949527</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/principals/dummy.html b/zh-cn/docs/dev/principals/dummy.html
index 6bf3b26..1374765 100644
--- a/zh-cn/docs/dev/principals/dummy.html
+++ b/zh-cn/docs/dev/principals/dummy.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://javatar.iteye.com/blog/804187">http://javatar.iteye.com/blog/804187</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/principals/expansibility.html b/zh-cn/docs/dev/principals/expansibility.html
index 389b2a6..b2da2e7 100644
--- a/zh-cn/docs/dev/principals/expansibility.html
+++ b/zh-cn/docs/dev/principals/expansibility.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://javatar.iteye.com/blog/690845">http://javatar.iteye.com/blog/690845</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/principals/extension.html b/zh-cn/docs/dev/principals/extension.html
index 6cd060e..8f422ab 100644
--- a/zh-cn/docs/dev/principals/extension.html
+++ b/zh-cn/docs/dev/principals/extension.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://javatar.iteye.com/blog/1041832">http://javatar.iteye.com/blog/1041832</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/principals/general-knowledge.html b/zh-cn/docs/dev/principals/general-knowledge.html
index 6294764..f4fd83b 100644
--- a/zh-cn/docs/dev/principals/general-knowledge.html
+++ b/zh-cn/docs/dev/principals/general-knowledge.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://javatar.iteye.com/blog/706098">http://javatar.iteye.com/blog/706098</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/principals/introduction.html b/zh-cn/docs/dev/principals/introduction.html
index 2f60214..121f5d8 100644
--- a/zh-cn/docs/dev/principals/introduction.html
+++ b/zh-cn/docs/dev/principals/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>本章节的设计原则摘录自梁飞在 javaeye 上发表的系列文章。</p>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/dev/principals/robustness.html b/zh-cn/docs/dev/principals/robustness.html
index 7edea96..fb4e699 100644
--- a/zh-cn/docs/dev/principals/robustness.html
+++ b/zh-cn/docs/dev/principals/robustness.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <blockquote>
 <p><a href="http://oldratlee.com/380/tech/java/robustness-of-implement.html">http://oldratlee.com/380/tech/java/robustness-of-implement.html</a></p>
 </blockquote>
diff --git a/zh-cn/docs/dev/release.html b/zh-cn/docs/dev/release.html
index 7fff14b..48cc8ed 100644
--- a/zh-cn/docs/dev/release.html
+++ b/zh-cn/docs/dev/release.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><strong>新功能的开发</strong> 和 <strong>稳定性的提高</strong> 对产品都很重要。但是添加新功能会影响稳定性,Dubbo 使用如下的版本开发模式来保障两者。</p>
 <h2>2 个版本并行开发</h2>
 <ul>
diff --git a/zh-cn/docs/developers/committer-guide/apache-dubbo-page_dev.html b/zh-cn/docs/developers/committer-guide/apache-dubbo-page_dev.html
index 969a773..104b465 100644
--- a/zh-cn/docs/developers/committer-guide/apache-dubbo-page_dev.html
+++ b/zh-cn/docs/developers/committer-guide/apache-dubbo-page_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Apache有一个官方的网站,用来维护所有的孵化项目的信息。每一个孵化项目在这个网站下都有一个信息页。
 Dubbo的信息页地址是<a href="https://incubator.apache.org/projects/dubbo.html">https://incubator.apache.org/projects/dubbo.html</a>。</p>
 <p>当项目发生比较大的变化,比如新的committer的加入,新的PMC的当选,或是新版本的Release等,都需要将这些更新信息维护到这个页面。
diff --git a/zh-cn/docs/developers/committer-guide/label-an-issue-guide_dev.html b/zh-cn/docs/developers/committer-guide/label-an-issue-guide_dev.html
index 4d0dae2..37d1ddf 100644
--- a/zh-cn/docs/developers/committer-guide/label-an-issue-guide_dev.html
+++ b/zh-cn/docs/developers/committer-guide/label-an-issue-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果您正在处理一个问题,请记得<strong>给这个问题标记一个或者多个您认为有意义的标签</strong>。有了标签,其他开发人员就会很轻松地识别出问题,以便对其进行分类并跟踪进度。</p>
 <p>对于需要编码和发版修复的issues和pull requests,需要您<strong>将其标记为<a href="https://github.com/apache/incubator*dubbo/milestones">milestone</a></strong>。</p>
 <p>一些常用的标签:</p>
diff --git a/zh-cn/docs/developers/committer-guide/new-committer-guide_dev.html b/zh-cn/docs/developers/committer-guide/new-committer-guide_dev.html
index 4ba959e..8698845 100644
--- a/zh-cn/docs/developers/committer-guide/new-committer-guide_dev.html
+++ b/zh-cn/docs/developers/committer-guide/new-committer-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>一、Apache 提交者的产生</h2>
 <h3>项目孵化初始化提交者</h3>
 <p>项目孵化阶段,在孵化项目提案中,会有初始化提交者列表这一选项。确认你是初始化提交者的一员。项目在 apache 孵化器社区投票通过后,提交者可以开始准备注册账户了。可以参看<a href="https://wiki.apache.org/incubator/">孵化器 wiki</a></p>
diff --git a/zh-cn/docs/developers/committer-guide/release-guide_dev.html b/zh-cn/docs/developers/committer-guide/release-guide_dev.html
index d92fd8e..ddfd4d4 100644
--- a/zh-cn/docs/developers/committer-guide/release-guide_dev.html
+++ b/zh-cn/docs/developers/committer-guide/release-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>理解Apache发布的内容和流程</h2>
 <p>总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。</p>
 <p>请参考以下链接,找到更多关于ASF的发布指南:</p>
diff --git a/zh-cn/docs/developers/committer-guide/website-guide_dev.html b/zh-cn/docs/developers/committer-guide/website-guide_dev.html
index 0da2989..315ee26 100644
--- a/zh-cn/docs/developers/committer-guide/website-guide_dev.html
+++ b/zh-cn/docs/developers/committer-guide/website-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <ol>
 <li>Apache Dubbo 的网站仓库是 <a href="https://github.com/apache/dubbo-website">https://github.com/apache/dubbo-website</a></li>
 <li>网站构建完毕后,它会被自动发布到 <a href="http://dubbo.apache.org">dubbo.apache.org</a>,您也可以通过 <a href="https://selfserve.apache.org">https://selfserve.apache.org</a> 手动触发(需要使用 Apache 账号登陆)</li>
diff --git a/zh-cn/docs/developers/contributor-guide/become-a-committer_dev.html b/zh-cn/docs/developers/contributor-guide/become-a-committer_dev.html
index b432270..706dd00 100644
--- a/zh-cn/docs/developers/contributor-guide/become-a-committer_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/become-a-committer_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>每个人都可以成为Apache项目的贡献者。作为一个贡献者只是意味着你对项目感兴趣并以某种方式做出贡献,从提出合理的问题(这些问题记录了项目并向开发人员提供反馈)到提供新的特性作为补丁。</p>
 <p>如果你成为对一个项目有价值的贡献者,你有可能被邀请成为一个committer。committer是ASF(Apache软件基金会)中用来表示提交特定项目的人的术语。它给你带来对项目仓库和资源写的权限。</p>
 <p>在Dubbo社区,如果一个committer获得大量的优秀成绩,就可以被邀请加入项目管理委员会(PMC)。</p>
diff --git a/zh-cn/docs/developers/contributor-guide/cla-signing-guide_dev.html b/zh-cn/docs/developers/contributor-guide/cla-signing-guide_dev.html
index 32334f0..bed26f0 100644
--- a/zh-cn/docs/developers/contributor-guide/cla-signing-guide_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/cla-signing-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>以下情况,需要您签署Apache ICLA:</p>
 <ul>
 <li>在Dubbo被捐赠给Apache之前,您已经为Dubbo作出了很多贡献,并且您以前没有签署过Alibaba-CLA。</li>
diff --git a/zh-cn/docs/developers/contributor-guide/dubbo-extension-guide_dev.html b/zh-cn/docs/developers/contributor-guide/dubbo-extension-guide_dev.html
index d634700..73a26c9 100644
--- a/zh-cn/docs/developers/contributor-guide/dubbo-extension-guide_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/dubbo-extension-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo使用微内核+插件的设计模式。内核只负责组装插件,Dubbo的功能都是由扩展点(插件)实现,这就意味着Dubbo的所有功能都可以被用户定制的扩展所替代。</p>
 <h3>Dubbo生态系统</h3>
 <p>我们建议您将扩展加入到Dubbo生态系统。使用这种模式,可以使Dubbo的核心仓库更干净,并且可以减少维护工作。更少的代码也可以提高核心仓库的构建速度。</p>
diff --git a/zh-cn/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html b/zh-cn/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html
index c909849..02c3ea6 100644
--- a/zh-cn/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Apache incubator的Dubbo开发者邮件列表(dev@dubbo.apache.org)已经建立,请随时订阅并参考[^1]获取更多细节。</p>
 <p>你也可以直接查看<a href="https://lists.apache.org/list.html?dev@dubbo.apache.org">历史邮件</a></p>
 <p>下面是一个关于Dubbo邮件列表订阅的简短指南:</p>
diff --git a/zh-cn/docs/developers/contributor-guide/new-contributor-guide_dev.html b/zh-cn/docs/developers/contributor-guide/new-contributor-guide_dev.html
index 2d2ea2d..7f25edb 100644
--- a/zh-cn/docs/developers/contributor-guide/new-contributor-guide_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/new-contributor-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>这篇向导旨在给正在准备向Dubbo提交贡献的新手提供指导。</p>
 <h3>邮件列表描述</h3>
 <p>邮件列表是Dubbo官方推荐的讨论方式,所有与Dubbo相关的内容都可以在这里讨论,请点击 <a href="https://github.com/apache/dubbo/issues/1393">issue</a> 了解更多关于邮件列表订阅的内容</p>
diff --git a/zh-cn/docs/developers/contributor-guide/reporting-security-issues_dev.html b/zh-cn/docs/developers/contributor-guide/reporting-security-issues_dev.html
index 60ce82d..3476673 100644
--- a/zh-cn/docs/developers/contributor-guide/reporting-security-issues_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/reporting-security-issues_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Apache Software Foundation在消除其软件项目中的安全性问题方面采取严格的立场。Apache Dubbo对与其功能和特性有关的问题非常敏感并很快提出。</p>
 <h2>报告漏洞</h2>
 <p>如果您对Dubbo的安全性有担心,或者发现漏洞或潜在威胁,请发送电子邮件至security@dubbo.apache.org与Apache Dubbo安全团队联系。在邮件中,指定问题或潜在威胁的描述。还敦促您推荐重现和复制问题的方法。Dubbo社区会在评估和分析调查结果之后与您联系。</p>
diff --git a/zh-cn/docs/developers/contributor-guide/software-donation-guide_dev.html b/zh-cn/docs/developers/contributor-guide/software-donation-guide_dev.html
index bf432d8..d2baf4d 100644
--- a/zh-cn/docs/developers/contributor-guide/software-donation-guide_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/software-donation-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在您阅读这篇指南之前,请确保您已经向PMC确认了实际需要的SGA。</p>
 <p>如果您向Apache Dubbo 捐赠了大量的代码或文档,则需要在合并代码或者文档之前签署<a href="https://www.apache.org/licenses/#grants">软件授权书</a>。</p>
 <h3>操作步骤</h3>
diff --git a/zh-cn/docs/developers/contributor-guide/test-coverage-guide_dev.html b/zh-cn/docs/developers/contributor-guide/test-coverage-guide_dev.html
index 4e3bd4a..8b6743d 100644
--- a/zh-cn/docs/developers/contributor-guide/test-coverage-guide_dev.html
+++ b/zh-cn/docs/developers/contributor-guide/test-coverage-guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h3>1.写单元测试的收益</h3>
 <ul>
 <li>单元测试能帮助每个人深入代码细节,了解代码的功能。</li>
diff --git a/zh-cn/docs/developers/developers_dev.html b/zh-cn/docs/developers/developers_dev.html
index 048eb83..5ccc060 100644
--- a/zh-cn/docs/developers/developers_dev.html
+++ b/zh-cn/docs/developers/developers_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>本页面展示了Dubbo的开发团队。请通过提交PR的方式把自己的信息添加到列表上。注:排名不分先后</p>
 <h3>提交者</h3>
 <table>
diff --git a/zh-cn/docs/developers/guide_dev.html b/zh-cn/docs/developers/guide_dev.html
index d11dd3d..13bd029 100644
--- a/zh-cn/docs/developers/guide_dev.html
+++ b/zh-cn/docs/developers/guide_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo是在非限制性的Apache 2.0许可下发布的,遵循标准的Github开发流程,使用Github追踪处理问题,并将pull request合并到master中。如果您想为Dubbo 做贡献(即便是一些微小的),请不要犹豫,遵循下面的指导方针。</p>
 <h3>签署贡献者许可协议</h3>
 <p>在我们接受一个补丁或pull request之前,我们需要您签署贡献者许可协议。签署贡献者协议并不授予任何人对代码仓库的提交权限,但是它意味着我们可以接受您的贡献,并且如果我们这样做,您将获得一个作者标注。主动贡献者可能会被邀请加入核心团队,并有权限合并pull request。</p>
diff --git a/zh-cn/docs/developers/user-guide/faq_dev.html b/zh-cn/docs/developers/user-guide/faq_dev.html
index c35cb90..31311da 100644
--- a/zh-cn/docs/developers/user-guide/faq_dev.html
+++ b/zh-cn/docs/developers/user-guide/faq_dev.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h3>dubbo-admin在哪里?</h3>
 <p>从Dubbo 2.6.1版本开始,dubbo-admin已经从核心库迁移到https://github.com/apache/dubbo-admin</p>
 <h3>我应该选择哪个版本?</h3>
diff --git a/zh-cn/docs/source_code_guide/adaptive-extension.html b/zh-cn/docs/source_code_guide/adaptive-extension.html
index 5df6996..aed9298 100644
--- a/zh-cn/docs/source_code_guide/adaptive-extension.html
+++ b/zh-cn/docs/source_code_guide/adaptive-extension.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,拓展就无法被加载。对于这个矛盾的问题,Dubbo 通过自适应拓展机制很好的解决了。自适应拓展机制的实现逻辑比较复杂,首先 Dubbo 会为拓展接口生成具有代理功能的代码。然后通过 javassist 或 jdk 编译这段代码,得到 Class 类。最后再通过反射创建代理类,整个过程比较复杂。为了让大家对自适应拓展有一个感性的认识,下面我们通过一个示例进行演示。这是一个与汽车相关的例子,我们有一个车轮制造厂接口 WheelMaker:</p>
 <pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">WheelMaker</span> </span>{
     <span class="hljs-function">Wheel <span class="hljs-title">makeWheel</span><span class="hljs-params">(URL url)</span></span>;
diff --git a/zh-cn/docs/source_code_guide/cluster.html b/zh-cn/docs/source_code_guide/cluster.html
index e45f9cb..a066ea9 100644
--- a/zh-cn/docs/source_code_guide/cluster.html
+++ b/zh-cn/docs/source_code_guide/cluster.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样,在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理措施也是需要考虑的,是重试呢,还是抛出异常,亦或是只打印异常等。为了处理这些问题,Dubbo 定义了集群接口 Cluster 以及 Cluster Invoker。集群 Cluster 用途是将多个服务提供者合并为一个 Cluster Invoker,并将这个 Invoker 暴露给服务消费者。这样一来,服务消费者只需通过这个 Invoker 进行远程调用即可,至于具体调用哪个服务提供者,以及调用失败后如何处理等问题,现在都交给集群模块去处理。集群模块是服务提供者和服�
 ��消费者的中间层,为服务消费者屏蔽了服务提供者的情况,这样服务消费者就可以专心处理远程调用相关事宜。比如发请求,接受服务提供者返回的数据等。这就是集群的作用。</p>
 <p>Dubbo 提供了多种集群实现,包含但不限于 Failover Cluster、Failfast Cluster 和 Failsafe Cluster 等。每种集群实现类的用途不同,接下来会一一进行分析。</p>
 <h2>2. 集群容错</h2>
diff --git a/zh-cn/docs/source_code_guide/directory.html b/zh-cn/docs/source_code_guide/directory.html
index b1a4f58..9ece560 100644
--- a/zh-cn/docs/source_code_guide/directory.html
+++ b/zh-cn/docs/source_code_guide/directory.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>本篇文章,将开始分析 Dubbo 集群容错方面的源码。集群容错源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。这几个部分的源码逻辑相对比较独立,我们将会分四篇文章进行分析。本篇文章作为集群容错的开篇文章,将和大家一起分析服务目录相关的源码。在进行深入分析之前,我们先来了解一下服务目录是什么。服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口、服务协议等。通过这些信息,服务消费者就可通过 Netty 等客户端进行远程调用。在一个服务集群中,服务提供者数量并不是一成不变的,如果集群中新增了一台机器,相应地在服务目录中就要新增一条服务提供者记录。或者,如果服务提供者的配置修改了,服务目录
 中的记录也要做相应的更新。如果这样说,服务目录和注册中心的功能不就雷同了吗?确实如此,这里这么说是为了方便大家理解。实际上服务目录在获取注册中心的服务配置信息后,会为每条配置信息生成一个 Invoker 对象,并把这个 Invoker 对象存 [...]
 <p>关于服务目录这里就先介绍这些,大家先有个大致印象。接下来我们通过继承体系图来了解一下服务目录的家族成员都有哪些。</p>
 <h2>2. 继承体系</h2>
diff --git a/zh-cn/docs/source_code_guide/dubbo-spi.html b/zh-cn/docs/source_code_guide/dubbo-spi.html
index 14b14f8..b15aa90 100644
--- a/zh-cn/docs/source_code_guide/dubbo-spi.html
+++ b/zh-cn/docs/source_code_guide/dubbo-spi.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 Dubbo 进行拓展。如果大家想要学习 Dubbo 的源码,SPI 机制务必弄懂。接下来,我们先来了解一下 Java SPI 与 Dubbo SPI 的用法,然后再来分析 Dubbo SPI 的源码。</p>
 <p>需要特别说明的是,本篇文章以及本系列其他文章所分析的源码版本均为 <strong>dubbo-2.6.4</strong>。因此大家在阅读文章的过程中,需注意将代码版本切换到 dubbo-2.6.4 tag 上。</p>
 <h2>2.SPI 示例</h2>
diff --git a/zh-cn/docs/source_code_guide/export-service.html b/zh-cn/docs/source_code_guide/export-service.html
index a620c34..2d23bd8 100644
--- a/zh-cn/docs/source_code_guide/export-service.html
+++ b/zh-cn/docs/source_code_guide/export-service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>本篇文章,我们来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。本篇文章将会对这三个部分代码进行详细的分析。</p>
 <h2>2.源码分析</h2>
 <p>服务导出的入口方法是 ServiceBean 的 onApplicationEvent。onApplicationEvent 是一个事件响应方法,该方法会在收到 Spring 上下文刷新事件后执行服务导出操作。方法代码如下:</p>
diff --git a/zh-cn/docs/source_code_guide/loadbalance.html b/zh-cn/docs/source_code_guide/loadbalance.html
index 8fe557f..3b5d59a 100644
--- a/zh-cn/docs/source_code_guide/loadbalance.html
+++ b/zh-cn/docs/source_code_guide/loadbalance.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,一般很难接触到硬件负载均衡。但软件负载均衡还是可以接触到的,比如 Nginx。在 Dubbo 中,也有负载均衡的概念和相应的实现。Dubbo 需要对服务消费者的调用请求进行分配,避免少数服务提供者负载过大。服务提供者负载过大,会导致部分请求超时。因此将负载均衡到每个服务提供者上,是非常必要的。Dubbo 提供了4种负载均衡实现,分别是基于权重随机算法的 RandomLoadBalance�
 �基于最少活跃调用数算法的 LeastActiveLoadBalance、基于 hash 一致性的 ConsistentHashLoadBalance,以及基于加权轮询算法的 RoundRobinLoadBalance。这几个负载均衡算法代码 [...]
 <p>本系列文章在编写之初是基于 Dubbo 2.6.4 的,近期,Dubbo 2.6.5 发布了,其中就有针对对负载均衡部分的优化。因此我们在分析完 2.6.4 版本后的源码后,会另外分析 2.6.5 更新的部分。其他的就不多说了,进入正题吧。</p>
 <h2>2.源码分析</h2>
diff --git a/zh-cn/docs/source_code_guide/refer-service.html b/zh-cn/docs/source_code_guide/refer-service.html
index c8560dd..cff8d38 100644
--- a/zh-cn/docs/source_code_guide/refer-service.html
+++ b/zh-cn/docs/source_code_guide/refer-service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>上一篇文章详细分析了服务导出的过程,本篇文章我们趁热打铁,继续分析服务引用过程。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,服务消费者还需要经历 Invoker 创建、代理类创建等步骤。这些步骤,将在后续章节中一一进行分析。</p>
 <h2>2.服务引用原理</h2>
 <p>Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的。默认情况下,Dubbo 使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 &lt;dubbo:reference&gt; 的 init 属性开启。下面我们按照 Dubbo 默认配置进行分析,整个分析过程从 ReferenceBean 的 getObject 方法开始。当我们的服务被注入到其他类中时,Spring 会第一时间调用 getObject 方法,并由该方法执行服务引用逻辑。按照惯例,在进行具体工作之前,需先进行配置检查与收集工作。接着根据收集到的信息决定服务用的方式,有三种,第一种是引用本地 (JVM) 服务,第二是通过直连方式引用远程服务,第三是通过注册中心引�
 ��远程服务。不管是哪种引用方式,最后都会得到一个 Invoker 实例。如果有多个注册中心,多个服务提供 [...]
diff --git a/zh-cn/docs/source_code_guide/router.html b/zh-cn/docs/source_code_guide/router.html
index 95d1470..72d75a9 100644
--- a/zh-cn/docs/source_code_guide/router.html
+++ b/zh-cn/docs/source_code_guide/router.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>上一篇文章分析了集群容错的第一部分 — 服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。在详细分析服务路由的源码之前,先来介绍一下服务路由是什么。服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者。Dubbo 目前提供了三种服务路由实现,分别为条件路由 ConditionRouter、脚本路由 ScriptRouter 和标签路由 TagRouter。其中条件路由是我们最常使用的,标签路由是一个新的实现,暂时还未发布,该实现预计会在 2.7.x 版本中发布。本篇文章将分析条件路由相关源码,脚本路由和标签路由这里就不分析了。</p>
 <h2>2. 源码分析</h2>
 <p>条件路由规则由两个条件组成,分别用于对服务消费者和提供者进行匹配。比如有这样一条规则:</p>
diff --git a/zh-cn/docs/source_code_guide/service-invoking-process.html b/zh-cn/docs/source_code_guide/service-invoking-process.html
index cc6e015..f98163d 100644
--- a/zh-cn/docs/source_code_guide/service-invoking-process.html
+++ b/zh-cn/docs/source_code_guide/service-invoking-process.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在前面的文章中,我们分析了 Dubbo SPI、服务导出与引入、以及集群容错方面的代码。经过前文的铺垫,本篇文章我们终于可以分析服务调用过程了。Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进行分析。本篇文章将会重点分析请求的发送与接收、编解码、线程派发以及响应的发送与接收等过程,至于服务降级、过滤器链和序列化大家自行进行分析,也可以将其当成一个黑盒,暂时忽略也没关系。介绍完本篇文章要分析的内容,接下来我们进入正题吧。</p>
 <h2>2. 源码分析</h2>
 <p>在进行源码分析之前,我们先来通过一张图了解 Dubbo 服务调用过程。</p>
diff --git a/zh-cn/docs/user/README.html b/zh-cn/docs/user/README.html
index 1ec269e..c6a7575 100644
--- a/zh-cn/docs/user/README.html
+++ b/zh-cn/docs/user/README.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果你正依赖<code>dubbo</code>作为你业务工程的RPC通信框架,这里可以作为你的参考手册</p>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/user/SUMMARY.html b/zh-cn/docs/user/SUMMARY.html
index 61d0a5d..90990bf 100644
--- a/zh-cn/docs/user/SUMMARY.html
+++ b/zh-cn/docs/user/SUMMARY.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <ul>
 <li><a href="./preface/index.md">1 入门</a>
 <ul>
diff --git a/zh-cn/docs/user/benchmark-tool.html b/zh-cn/docs/user/benchmark-tool.html
index 285f6ec..150e28d 100644
--- a/zh-cn/docs/user/benchmark-tool.html
+++ b/zh-cn/docs/user/benchmark-tool.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <ul>
 <li>下载源码: git clone <a href="https://github.com/apache/dubbo.git">https://github.com/apache/dubbo.git</a></li>
 <li>编译benchmark: cd dubbo/dubbo-test/dubbo-test-benchmark; mvn clean install</li>
diff --git a/zh-cn/docs/user/best-practice.html b/zh-cn/docs/user/best-practice.html
index 5709b47..af7ddcd 100644
--- a/zh-cn/docs/user/best-practice.html
+++ b/zh-cn/docs/user/best-practice.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>分包</h2>
 <p>建议将服务接口、服务模型、服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。</p>
 <p>如果需要,也可以考虑在 API 包中放置一份 Spring 的引用配置,这样使用方只需在 Spring 加载过程中引用此配置即可。配置建议放在模块的包目录下,以免冲突,如:<code>com/alibaba/china/xxx/dubbo-reference.xml</code>。</p>
diff --git a/zh-cn/docs/user/capacity-plan.html b/zh-cn/docs/user/capacity-plan.html
index f66609e..e83c4e1 100644
--- a/zh-cn/docs/user/capacity-plan.html
+++ b/zh-cn/docs/user/capacity-plan.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>以下数据供参考:</p>
 <h2>使用 Dubbo 的会员服务项目</h2>
 <ul>
diff --git a/zh-cn/docs/user/configuration/annotation.html b/zh-cn/docs/user/configuration/annotation.html
index 185dc4b..999c9d6 100644
--- a/zh-cn/docs/user/configuration/annotation.html
+++ b/zh-cn/docs/user/configuration/annotation.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>需要 <code>2.6.3</code> 及以上版本支持
 点此查看<a href="https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-annotation">完整示例</a></p>
 <h2>服务提供方</h2>
diff --git a/zh-cn/docs/user/configuration/api.html b/zh-cn/docs/user/configuration/api.html
index b545597..51bfd33 100644
--- a/zh-cn/docs/user/configuration/api.html
+++ b/zh-cn/docs/user/configuration/api.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <h2>服务提供者</h2>
 <pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.rpc.config.ApplicationConfig;
diff --git a/zh-cn/docs/user/configuration/config-center.html b/zh-cn/docs/user/configuration/config-center.html
index 160b465..4697ebf 100644
--- a/zh-cn/docs/user/configuration/config-center.html
+++ b/zh-cn/docs/user/configuration/config-center.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>配置中心(v2.7.0)在Dubbo中承担两个职责:</p>
 <ol>
 <li>外部化配置。启动配置的集中式存储 (简单理解为dubbo.properties的外部化存储)。</li>
diff --git a/zh-cn/docs/user/configuration/configuration-load-process.html b/zh-cn/docs/user/configuration/configuration-load-process.html
index 44b2885..a7ad813 100644
--- a/zh-cn/docs/user/configuration/configuration-load-process.html
+++ b/zh-cn/docs/user/configuration/configuration-load-process.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>此篇文档主要讲在<strong>应用启动阶段,Dubbo框架如何将所需要的配置采集起来</strong>(包括应用配置、注册中心配置、服务配置等),以完成服务的暴露和引用流程。</p>
 <p>根据驱动方式的不同(比如Spring或裸API编程)配置形式上肯定会有所差异,具体请参考<a href="./xml.md">XML配置</a>、<a href="./annotation.md">Annotation配置</a>、<a href="./api.md">API配置</a>三篇文档。除了外围驱动方式上的差异,Dubbo的配置读取总体上遵循了以下几个原则:</p>
 <ol>
diff --git a/zh-cn/docs/user/configuration/environment-variables.html b/zh-cn/docs/user/configuration/environment-variables.html
index 41fd4f5..4d44b3c 100644
--- a/zh-cn/docs/user/configuration/environment-variables.html
+++ b/zh-cn/docs/user/configuration/environment-variables.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>从2.7.3版本开始,Dubbo会自动从约定key中读取配置,并将配置以Key-Value的形式写入到URL中。</p>
 <p>支持的key有以下两个:</p>
 <ol>
diff --git a/zh-cn/docs/user/configuration/index.html b/zh-cn/docs/user/configuration/index.html
index dcce449..41660f1 100644
--- a/zh-cn/docs/user/configuration/index.html
+++ b/zh-cn/docs/user/configuration/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/user/configuration/properties-deprecated.html b/zh-cn/docs/user/configuration/properties-deprecated.html
index 9c0aba6..6322ab9 100644
--- a/zh-cn/docs/user/configuration/properties-deprecated.html
+++ b/zh-cn/docs/user/configuration/properties-deprecated.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果公共配置很简单,没有多注册中心,多协议等情况,或者想多个 Spring 容器想共享配置,可以使用 dubbo.properties 作为缺省配置。</p>
 <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>
 <h2>映射规则</h2>
diff --git a/zh-cn/docs/user/configuration/properties.html b/zh-cn/docs/user/configuration/properties.html
index 7a9d3d8..34deb92 100644
--- a/zh-cn/docs/user/configuration/properties.html
+++ b/zh-cn/docs/user/configuration/properties.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果你的应用足够简单,例如,不需要多注册中心或多协议,并且需要在spring容器中共享配置,那么,我们可以直接使用 <code>dubbo.properties</code>作为默认配置。</p>
 <p>Dubbo可以自动加载classpath根目录下的dubbo.properties,但是你同样可以使用JVM参数来指定路径:<code>-Ddubbo.properties.file=xxx.properties</code>。</p>
 <h1>映射规则</h1>
diff --git a/zh-cn/docs/user/configuration/xml.html b/zh-cn/docs/user/configuration/xml.html
index 79b46a5..48c7628 100644
--- a/zh-cn/docs/user/configuration/xml.html
+++ b/zh-cn/docs/user/configuration/xml.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>有关 XML 的详细配置项,请参见:<a href="../references/xml/introduction.md">配置参考手册</a>。如果不想使用 Spring 配置,而希望通过 API 的方式进行调用,请参见:<a href="./api.md">API配置</a>。想知道如何使用配置,请参见:<a href="../quick-start.md">快速启动</a>。</p>
 <p>请在此查看文档描述的<a href="https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-basic">完整示例</a></p>
 <h2>provider.xml 示例</h2>
diff --git a/zh-cn/docs/user/coveragence.html b/zh-cn/docs/user/coveragence.html
index 2426843..f2a13ee 100644
--- a/zh-cn/docs/user/coveragence.html
+++ b/zh-cn/docs/user/coveragence.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <ul>
 <li>v2.0   Codecov报表 , 从2017-12-29后开始统计
 测试覆盖率为 : <a href="https://codecov.io/gh/apache/dubbo"><img src="https://codecov.io/gh/apache/dubbo/branch/master/graph/badge.svg" alt="codecov"></a> , 可以从 <a href="https://codecov.io/gh/apache/dubbo">https://codecov.io/gh/apache/dubbo</a> 页面得到覆盖率报表</li>
diff --git a/zh-cn/docs/user/demos/GooglePb-generic-reference.html b/zh-cn/docs/user/demos/GooglePb-generic-reference.html
index e7a82e8..32bb1de 100644
--- a/zh-cn/docs/user/demos/GooglePb-generic-reference.html
+++ b/zh-cn/docs/user/demos/GooglePb-generic-reference.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参考 <a href="http://dubbo.apache.org/zh-cn/docs/user/demos/group-merger.html">泛化调用</a>。
 一般泛化调用只能用于生成的服务参数为POJO的情况,而GoogleProtobuf的对象是基于Builder生成的非正常POJO,可以通过protobuf-json泛化调用。<br>
 GoogleProtobuf序列化相关的Demo可以参考<a href="https://github.com/vio-lin/dubbo-samples/tree/protobuf-demo">protobuf-demo</a></p>
diff --git a/zh-cn/docs/user/demos/accesslog.html b/zh-cn/docs/user/demos/accesslog.html
index d057bc7..9f045fd 100644
--- a/zh-cn/docs/user/demos/accesslog.html
+++ b/zh-cn/docs/user/demos/accesslog.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果你想记录每一次请求信息,可开启访问日志,类似于apache的访问日志。<strong>注意</strong>:此日志量比较大,请注意磁盘容量。</p>
 <p>将访问日志输出到当前应用的log4j日志:</p>
 <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>
diff --git a/zh-cn/docs/user/demos/async-call-deprecated.html b/zh-cn/docs/user/demos/async-call-deprecated.html
index d06dee5..0e318ce 100644
--- a/zh-cn/docs/user/demos/async-call-deprecated.html
+++ b/zh-cn/docs/user/demos/async-call-deprecated.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
 <p><img src="../sources/images/future.jpg" alt="/user-guide/images/future.jpg"></p>
 <p>在 consumer.xml 中配置:</p>
diff --git a/zh-cn/docs/user/demos/async-call.html b/zh-cn/docs/user/demos/async-call.html
index c0384a5..4c361b3 100644
--- a/zh-cn/docs/user/demos/async-call.html
+++ b/zh-cn/docs/user/demos/async-call.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>从v2.7.0开始,Dubbo的所有异步编程接口开始以<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html">CompletableFuture</a>为基础</p>
 <p>基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。</p>
 <p><img src="../sources/images/future.jpg" alt="/user-guide/images/future.jpg"></p>
diff --git a/zh-cn/docs/user/demos/async-execute-on-provider.html b/zh-cn/docs/user/demos/async-execute-on-provider.html
index 21e4964..dc2b9d2 100644
--- a/zh-cn/docs/user/demos/async-execute-on-provider.html
+++ b/zh-cn/docs/user/demos/async-execute-on-provider.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Provider端异步执行将阻塞的业务从Dubbo内部线程池切换到业务自定义线程,避免Dubbo线程池的过度占用,有助于避免不同服务间的互相影响。异步执行无益于节省资源或提升RPC响应性能,因为如果业务执行需要阻塞,则始终还是要有线程来负责执行。</p>
 <blockquote>
 <p>注意:Provider端异步执行和Consumer端异步调用是相互独立的,你可以任意正交组合两端配置</p>
diff --git a/zh-cn/docs/user/demos/attachment.html b/zh-cn/docs/user/demos/attachment.html
index 174aa3b..07a1480 100644
--- a/zh-cn/docs/user/demos/attachment.html
+++ b/zh-cn/docs/user/demos/attachment.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>可以通过 <code>RpcContext</code> 上的 <code>setAttachment</code> 和 <code>getAttachment</code> 在服务消费方和提供方之间进行参数的隐式传递。 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
 <p><img src="../sources/images/context.png" alt="/user-guide/images/context.png"></p>
 <h4>在服务消费方端设置隐式参数</h4>
diff --git a/zh-cn/docs/user/demos/auth.html b/zh-cn/docs/user/demos/auth.html
new file mode 100644
index 0000000..3c76408
--- /dev/null
+++ b/zh-cn/docs/user/demos/auth.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="auth" />
+	<meta name="description" content="auth" />
+	<!-- 网页标签标题 -->
+	<title>auth</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+<p>类似支付之类的对安全性敏感的业务可能会有限制匿名调用的需求。在加固安全性方面,2.7.5 引入了基于AK/SK机制的认证鉴权机制,并且引入了鉴权服务中心,主要原理是消费端在请求需要鉴权的服务时,会通过SK、请求元数据、时间戳、参数等信息来生成对应的请求签名,通过Dubbo的Attahcment机制携带到对端进行验签,验签通过才进行业务逻辑处理。如下图所示:</p>
+<p><img src="https://raw.githubusercontent.com/Ooo0oO0o0oO/res/master/auth.png" alt=""></p>
+<p>具体的接入方式也并不复杂:</p>
+<ol>
+<li>
+<p>使用者需要在微服务站点上填写自己的应用信息,并为该应用生成唯一的证书凭证。</p>
+</li>
+<li>
+<p>之后在管理站点上提交工单,申请某个敏感业务服务的使用权限,并由对应业务管理者进行审批,审批通过之后,会生成对应的AK/SK到鉴权服务中心。</p>
+</li>
+<li>
+<p>导入该证书到对应的应用下,并且进行配置。配置方式也十分简单,以注解方式为例:</p>
+<p>服务提供端,只需要设置<code>service.auth</code>为true,表示该服务的调用需要鉴权认证通过。<code>param.sign</code>为<code>true</code>表示需要对参数也进行校验。</p>
+<pre><code class="language-java"><span class="hljs-meta">@Service</span>(parameters = {<span class="hljs-string">"service.auth"</span>,<span class="hljs-string">"true"</span>,<span class="hljs-string">"param.sign"</span>,<span class="hljs-string">"true"</span>})
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">AuthDemoServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">AuthService</span> </span>{
+}
+
+</code></pre>
+<p>服务消费端,只需要配置好对应的证书等信息即可,之后会自动地在对这些需要认证的接口发起调用前进行签名操作,通过与鉴权服务的交互,用户无需在代码中配置AK/SK这些敏感信息,并且在不重启应用的情况下刷新AK/SK,达到权限动态下发的目的。</p>
+</li>
+</ol>
+<p>该方案目前已经提交给Dubbo开源社区,并且完成了基本框架的合并,除了AK/SK的鉴权方式之外,通过SPI机制支持用户可定制化的鉴权认证以及适配公司内部基础设施的密钥存储。</p>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/documentation.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/auth.json b/zh-cn/docs/user/demos/auth.json
new file mode 100644
index 0000000..980236b
--- /dev/null
+++ b/zh-cn/docs/user/demos/auth.json
@@ -0,0 +1,6 @@
+{
+  "filename": "auth.md",
+  "__html": "<h1>服务鉴权</h1>\n<p>类似支付之类的对安全性敏感的业务可能会有限制匿名调用的需求。在加固安全性方面,2.7.5 引入了基于AK/SK机制的认证鉴权机制,并且引入了鉴权服务中心,主要原理是消费端在请求需要鉴权的服务时,会通过SK、请求元数据、时间戳、参数等信息来生成对应的请求签名,通过Dubbo的Attahcment机制携带到对端进行验签,验签通过才进行业务逻辑处理。如下图所示:</p>\n<p><img src=\"https://raw.githubusercontent.com/Ooo0oO0o0oO/res/master/auth.png\" alt=\"\"></p>\n<p>具体的接入方式也并不复杂:</p>\n<ol>\n<li>\n<p>使用者需要在微服务站点上填写自己的应用信息,并为该应用生成唯一的证书凭证。</p>\n</li>\n<li>\n<p>之后在管理站点上提交工单,申请某个敏感业务服务的使用权限,并由对应业务管理者进行审批,审批通过之后,会生成对应的AK/SK到�
 �权服务中心。</p>\n</li>\n< [...]
+  "link": "/zh-cn/docs/user/demos/auth.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/callback-parameter.html b/zh-cn/docs/user/demos/callback-parameter.html
index 16ae090..2fa5cde 100644
--- a/zh-cn/docs/user/demos/callback-parameter.html
+++ b/zh-cn/docs/user/demos/callback-parameter.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>参数回调方式与调用本地 callback 或 listener 相同,只需要在 Spring 的配置文件中声明哪个参数是 callback 类型即可。Dubbo 将基于长连接生成反向代理,这样就可以从服务器端调用客户端逻辑 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>。可以参考 <a href="https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-callback">dubbo 项目中的示例代码</a>。</p>
 <h4>服务接口示例</h4>
 <h6>CallbackService.java</h6>
diff --git a/zh-cn/docs/user/demos/concurrency-control.html b/zh-cn/docs/user/demos/concurrency-control.html
index d958bdb..0d2a61f 100644
--- a/zh-cn/docs/user/demos/concurrency-control.html
+++ b/zh-cn/docs/user/demos/concurrency-control.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>配置样例</h2>
 <h3>样例 1</h3>
 <p>限制 <code>com.foo.BarService</code> 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:</p>
diff --git a/zh-cn/docs/user/demos/config-connections.html b/zh-cn/docs/user/demos/config-connections.html
index b981f67..17268f7 100644
--- a/zh-cn/docs/user/demos/config-connections.html
+++ b/zh-cn/docs/user/demos/config-connections.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>服务端连接控制</h2>
 <p>限制服务器端接受的连接不能超过 10 个 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
 <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>
diff --git a/zh-cn/docs/user/demos/config-rule-deprecated.html b/zh-cn/docs/user/demos/config-rule-deprecated.html
index 4995f14..fc9e368 100644
--- a/zh-cn/docs/user/demos/config-rule-deprecated.html
+++ b/zh-cn/docs/user/demos/config-rule-deprecated.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>向注册中心写入动态配置覆盖规则 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>。该功能通常由监控中心或治理中心的页面完成。</p>
 <pre><code class="language-java">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory<span class="hljs-class">.<span class="hljs-keyword">class</span>).<span class="hljs-title">getAdaptiveExtension</span>()</span>;
 Registry registry = registryFactory.getRegistry(URL.valueOf(<span class="hljs-string">"zookeeper://10.20.153.10:2181"</span>));
diff --git a/zh-cn/docs/user/demos/config-rule.html b/zh-cn/docs/user/demos/config-rule.html
index 27208c9..ac82f9e 100644
--- a/zh-cn/docs/user/demos/config-rule.html
+++ b/zh-cn/docs/user/demos/config-rule.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>查看<a href="./config-rule-deprecated.md">老版本配置规则</a>。</p>
 <p>覆盖规则是Dubbo设计的在无需重启应用的情况下,动态调整RPC调用行为的一种能力。2.7.0版本开始,支持从<strong>服务</strong>和<strong>应用</strong>两个粒度来调整动态配置。</p>
 <h2>概览</h2>
diff --git a/zh-cn/docs/user/demos/consumer-threadpool.html b/zh-cn/docs/user/demos/consumer-threadpool.html
new file mode 100644
index 0000000..f5ff4c3
--- /dev/null
+++ b/zh-cn/docs/user/demos/consumer-threadpool.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="consumer-threadpool" />
+	<meta name="description" content="consumer-threadpool" />
+	<!-- 网页标签标题 -->
+	<title>consumer-threadpool</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+<p>2.7.5 版本对整个调用链路做了全面的优化,根据压测结果显示,总体 QPS 性能提升将近 30%,同时也减少了调用过程中的内存分配开销。其中一个值得提及的设计点是 2.7.5 引入了 Servicerepository 的概念,在服务注册阶段提前生成 ServiceDescriptor 和 MethodDescriptor,以减少 RPC 调用阶段计算 Service 原信息带来的资源消耗。</p>
+<h2>消费端线程池模型优化</h2>
+<p>对 2.7.5 版本之前的 Dubbo 应用,尤其是一些消费端应用,当面临需要消费大量服务且并发数比较大的大流量场景时(典型如网关类场景),经常会出现消费端线程数分配过多的问题,具体问题讨论可参见以下 issue :</p>
+<p><a href="https://github.com/apache/dubbo/issues/2013">https://github.com/apache/dubbo/issues/2013</a></p>
+<p>改进后的消费端线程池模型,通过复用业务端被阻塞的线程,很好的解决了这个问题。</p>
+<p><strong>老的线程池模型</strong></p>
+<p><img src="./img/docs/consumer-threadpool0.png" alt="消费端线程池.png"></p>
+<p>我们重点关注 Consumer 部分:</p>
+<ol>
+<li>业务线程发出请求,拿到一个 Future 实例。</li>
+<li>业务线程紧接着调用 future.get 阻塞等待业务结果返回。</li>
+<li>当业务数据返回后,交由独立的 Consumer 端线程池进行反序列化等处理,并调用 future.set 将反序列化后的业务结果置回。</li>
+<li>业务线程拿到结果直接返回</li>
+</ol>
+<p><strong>2.7.5 版本引入的线程池模型</strong></p>
+<p><img src="./img/consumer-threadpool1.png" alt="消费端线程池新.png"></p>
+<ol>
+<li>业务线程发出请求,拿到一个 Future 实例。</li>
+<li>在调用 future.get() 之前,先调用 ThreadlessExecutor.wait(),wait 会使业务线程在一个阻塞队列上等待,直到队列中被加入元素。</li>
+<li>当业务数据返回后,生成一个 Runnable Task 并放入 ThreadlessExecutor 队列</li>
+<li>业务线程将 Task 取出并在本线程中执行:反序列化业务数据并 set 到 Future。</li>
+<li>业务线程拿到结果直接返回</li>
+</ol>
+<p>这样,相比于老的线程池模型,由业务线程自己负责监测并解析返回结果,免去了额外的消费端线程池开销。</p>
+<p>关于性能优化,在接下来的版本中将会持续推进,主要从以下两个方面入手:</p>
+<ol>
+<li>RPC 调用链路。目前能看到的点包括:进一步减少执行链路的内存分配、在保证协议兼容性的前提下提高协议传输效率、提高 Filter、Router 等计算效率。</li>
+<li>服务治理链路。进一步减少地址推送、服务治理规则推送等造成的内存、cpu 资源消耗。</li>
+</ol>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/documentation.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/consumer-threadpool.json b/zh-cn/docs/user/demos/consumer-threadpool.json
new file mode 100644
index 0000000..fe38386
--- /dev/null
+++ b/zh-cn/docs/user/demos/consumer-threadpool.json
@@ -0,0 +1,6 @@
+{
+  "filename": "consumer-threadpool.md",
+  "__html": "<h1>消费端线程池模型</h1>\n<p>2.7.5 版本对整个调用链路做了全面的优化,根据压测结果显示,总体 QPS 性能提升将近 30%,同时也减少了调用过程中的内存分配开销。其中一个值得提及的设计点是 2.7.5 引入了 Servicerepository 的概念,在服务注册阶段提前生成 ServiceDescriptor 和 MethodDescriptor,以减少 RPC 调用阶段计算 Service 原信息带来的资源消耗。</p>\n<h2>消费端线程池模型优化</h2>\n<p>对 2.7.5 版本之前的 Dubbo 应用,尤其是一些消费端应用,当面临需要消费大量服务且并发数比较大的大流量场景时(典型如网关类场景),经常会出现消费端线程数分配过多的问题,具体问题讨论可参见以下 issue :</p>\n<p><a href=\"https://github.com/apache/dubbo/issues/2013\">https://github.com/apache/dubbo/issues/2013</a></p>\n<p> [...]
+  "link": "/zh-cn/docs/user/demos/consumer-threadpool.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/context.html b/zh-cn/docs/user/demos/context.html
index 46cb061..c7ea3ad 100644
--- a/zh-cn/docs/user/demos/context.html
+++ b/zh-cn/docs/user/demos/context.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>上下文中存放的是当前调用过程中所需的环境信息。所有配置信息都将转换为 URL 的参数,参见 <a href="../references/xml/introduction.md">schema 配置参考手册</a> 中的<strong>对应URL参数</strong>一列。</p>
 <p>RpcContext 是一个 ThreadLocal 的临时状态记录器,当接收到 RPC 请求,或发起 RPC 请求时,RpcContext 的状态都会变化。比如:A 调 B,B 再调 C,则 B 机器上,在 B 调 C 之前,RpcContext 记录的是 A 调 B 的信息,在 B 调 C 之后,RpcContext 记录的是 B 调 C 的信息。</p>
 <h2>服务消费方</h2>
diff --git a/zh-cn/docs/user/demos/delay-publish.html b/zh-cn/docs/user/demos/delay-publish.html
index e5971f8..9a92390 100644
--- a/zh-cn/docs/user/demos/delay-publish.html
+++ b/zh-cn/docs/user/demos/delay-publish.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果你的服务需要预热时间,比如初始化缓存,等待相关资源就位等,可以使用 delay 进行延迟暴露。我们在 Dubbo 2.6.5 版本中对服务延迟暴露逻辑进行了细微的调整,将需要延迟暴露(delay &gt; 0)服务的倒计时动作推迟到了 Spring 初始化完成后进行。你在使用 Dubbo 的过程中,并不会感知到此变化,因此请放心使用。</p>
 <h2>Dubbo-2.6.5 之前版本</h2>
 <h3>延迟到 Spring 初始化完成后,再暴露服务<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></h3>
diff --git a/zh-cn/docs/user/demos/distributed-transaction.html b/zh-cn/docs/user/demos/distributed-transaction.html
index a1898f5..4912e4f 100644
--- a/zh-cn/docs/user/demos/distributed-transaction.html
+++ b/zh-cn/docs/user/demos/distributed-transaction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>分布式事务基于 JTA/XA 规范实现 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>。</p>
 <p>两阶段提交:</p>
 <p><img src="../sources/images/jta-xa.jpg" alt="/user-guide/images/jta-xa.jpg"></p>
diff --git a/zh-cn/docs/user/demos/dump.html b/zh-cn/docs/user/demos/dump.html
index e298220..6f41240 100644
--- a/zh-cn/docs/user/demos/dump.html
+++ b/zh-cn/docs/user/demos/dump.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>默认策略:</p>
 <ul>
 <li>导出路径,user.home标识的用户主目录</li>
diff --git a/zh-cn/docs/user/demos/echo-service.html b/zh-cn/docs/user/demos/echo-service.html
index e3d18ef..9e64253 100644
--- a/zh-cn/docs/user/demos/echo-service.html
+++ b/zh-cn/docs/user/demos/echo-service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>回声测试用于检测服务是否可用,回声测试按照正常请求流程执行,能够测试整个调用是否通畅,可用于监控。</p>
 <p>所有服务自动实现 <code>EchoService</code> 接口,只需将任意服务引用强制转型为 <code>EchoService</code>,即可使用。</p>
 <p>Spring 配置:</p>
diff --git a/zh-cn/docs/user/demos/events-notify.html b/zh-cn/docs/user/demos/events-notify.html
index b9dff6b..ced7205 100644
--- a/zh-cn/docs/user/demos/events-notify.html
+++ b/zh-cn/docs/user/demos/events-notify.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在调用之前、调用之后、出现异常时,会触发 <code>oninvoke</code>、<code>onreturn</code>、<code>onthrow</code> 三个事件,可以配置当事件发生时,通知哪个类的哪个方法 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>。</p>
 <h4>服务提供者与消费者共享服务接口</h4>
 <pre><code class="language-java"><span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IDemoService</span> </span>{
diff --git a/zh-cn/docs/user/demos/explicit-target.html b/zh-cn/docs/user/demos/explicit-target.html
index f0f02b0..3ff018c 100644
--- a/zh-cn/docs/user/demos/explicit-target.html
+++ b/zh-cn/docs/user/demos/explicit-target.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。</p>
 <p><img src="../sources/images/dubbo-directly.jpg" alt="/user-guide/images/dubbo-directly.jpg"></p>
 <h2>通过 XML 配置</h2>
diff --git a/zh-cn/docs/user/demos/fault-tolerent-strategy.html b/zh-cn/docs/user/demos/fault-tolerent-strategy.html
index 3e94bf5..f56b7c7 100644
--- a/zh-cn/docs/user/demos/fault-tolerent-strategy.html
+++ b/zh-cn/docs/user/demos/fault-tolerent-strategy.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。</p>
 <p><img src="../sources/images/cluster.jpg" alt="cluster"></p>
 <p>各节点关系:</p>
diff --git a/zh-cn/docs/user/demos/generic-reference.html b/zh-cn/docs/user/demos/generic-reference.html
index b4c22e3..a06ec46 100644
--- a/zh-cn/docs/user/demos/generic-reference.html
+++ b/zh-cn/docs/user/demos/generic-reference.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 <code>Map</code> 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 <code>GenericService</code> 调用所有服务实现。</p>
 <h2>通过 Spring 使用泛化调用</h2>
 <p>在 Spring 配置申明 <code>generic=&quot;true&quot;</code>:</p>
diff --git a/zh-cn/docs/user/demos/generic-service.html b/zh-cn/docs/user/demos/generic-service.html
index db01b2a..69da8b5 100644
--- a/zh-cn/docs/user/demos/generic-service.html
+++ b/zh-cn/docs/user/demos/generic-service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>泛接口实现方式主要用于服务器端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的远程服务Mock框架,可通过实现GenericService接口处理所有服务请求。</p>
 <p>在 Java 代码中实现 <code>GenericService</code> 接口:</p>
 <pre><code class="language-java"><span class="hljs-keyword">package</span> com.foo;
diff --git a/zh-cn/docs/user/demos/graceful-shutdown.html b/zh-cn/docs/user/demos/graceful-shutdown.html
index a30ccda..4adcb69 100644
--- a/zh-cn/docs/user/demos/graceful-shutdown.html
+++ b/zh-cn/docs/user/demos/graceful-shutdown.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果用户使用 <code>kill -9 PID</code> 等强制关闭指令,是不会执行优雅停机的,只有通过 <code>kill PID</code> 时,才会执行。</p>
 <h2>原理</h2>
 <h3>服务提供方</h3>
diff --git a/zh-cn/docs/user/demos/group-merger.html b/zh-cn/docs/user/demos/group-merger.html
index 7192f66..3265711 100644
--- a/zh-cn/docs/user/demos/group-merger.html
+++ b/zh-cn/docs/user/demos/group-merger.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>按组合并返回结果 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。</p>
 <p>相关代码可以参考 <a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-merge">dubbo 项目中的示例</a></p>
 <h2>配置</h2>
diff --git a/zh-cn/docs/user/demos/hostname-binding.html b/zh-cn/docs/user/demos/hostname-binding.html
index fc8979b..a54d794 100644
--- a/zh-cn/docs/user/demos/hostname-binding.html
+++ b/zh-cn/docs/user/demos/hostname-binding.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>查找顺序</h2>
 <p>缺省主机 IP 查找顺序:</p>
 <ul>
diff --git a/zh-cn/docs/user/demos/index.html b/zh-cn/docs/user/demos/index.html
index 12444c4..2bd3c4f 100644
--- a/zh-cn/docs/user/demos/index.html
+++ b/zh-cn/docs/user/demos/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/user/demos/introduction.html b/zh-cn/docs/user/demos/introduction.html
index 5ff5dce..a105a47 100644
--- a/zh-cn/docs/user/demos/introduction.html
+++ b/zh-cn/docs/user/demos/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><img src="../sources/images/check.gif" alt="warning">想完整的运行起来,请参见:<a href="quickstart.md">快速启动</a>,这里只列出各种场景的配置方式。
 <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>
 </blockquote>
diff --git a/zh-cn/docs/user/demos/lazy-connect.html b/zh-cn/docs/user/demos/lazy-connect.html
index e0e3a55..2b34846 100644
--- a/zh-cn/docs/user/demos/lazy-connect.html
+++ b/zh-cn/docs/user/demos/lazy-connect.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>延迟连接用于减少长连接数。当有调用发起时,再创建长连接。<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
 <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>
 </code></pre>
diff --git a/zh-cn/docs/user/demos/loadbalance.html b/zh-cn/docs/user/demos/loadbalance.html
index 5d255f5..fdd228e 100644
--- a/zh-cn/docs/user/demos/loadbalance.html
+++ b/zh-cn/docs/user/demos/loadbalance.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 <code>random</code> 随机调用。</p>
 <p>可以自行扩展负载均衡策略,参见:<a href="../../dev/impls/load-balance.md">负载均衡扩展</a></p>
 <h2>负载均衡策略</h2>
diff --git a/zh-cn/docs/user/demos/local-call.html b/zh-cn/docs/user/demos/local-call.html
index 1847428..d6c52f7 100644
--- a/zh-cn/docs/user/demos/local-call.html
+++ b/zh-cn/docs/user/demos/local-call.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>本地调用使用了 injvm 协议,是一个伪协议,它不开启端口,不发起远程调用,只在 JVM 内直接关联,但执行 Dubbo 的 Filter 链。</p>
 <h2>配置</h2>
 <p>定义 injvm 协议</p>
diff --git a/zh-cn/docs/user/demos/local-mock.html b/zh-cn/docs/user/demos/local-mock.html
index ee46d7f..c2f0277 100644
--- a/zh-cn/docs/user/demos/local-mock.html
+++ b/zh-cn/docs/user/demos/local-mock.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>本地伪装 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 通常用于服务降级,比如某验权服务,当服务提供方全部挂掉后,客户端不抛出异常,而是通过 Mock 数据返回授权失败。</p>
 <p>在 spring 配置文件中按以下方式配置:</p>
 <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"</span> /&gt;</span>
diff --git a/zh-cn/docs/user/demos/local-stub.html b/zh-cn/docs/user/demos/local-stub.html
index b6bea9c..95b8d25 100644
--- a/zh-cn/docs/user/demos/local-stub.html
+++ b/zh-cn/docs/user/demos/local-stub.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。</p>
 <p><img src="../sources/images/stub.jpg" alt="/user-guide/images/stub.jpg"></p>
 <p>在 spring 配置文件中按以下方式配置:</p>
diff --git a/zh-cn/docs/user/demos/logger-strategy.html b/zh-cn/docs/user/demos/logger-strategy.html
index 95bad3c..81908c2 100644
--- a/zh-cn/docs/user/demos/logger-strategy.html
+++ b/zh-cn/docs/user/demos/logger-strategy.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>自 <code>2.2.1</code> 开始,dubbo 开始内置 log4j、slf4j、jcl、jdk 这些日志框架的适配[1],也可以通过以下方式显式配置日志输出策略:</p>
 <ol start="0">
 <li>
diff --git a/zh-cn/docs/user/demos/multi-protocols.html b/zh-cn/docs/user/demos/multi-protocols.html
index 88598bd..d1df40e 100644
--- a/zh-cn/docs/user/demos/multi-protocols.html
+++ b/zh-cn/docs/user/demos/multi-protocols.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。</p>
 <h2>不同服务不同协议</h2>
 <p>不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议</p>
diff --git a/zh-cn/docs/user/demos/multi-registry.html b/zh-cn/docs/user/demos/multi-registry.html
index 00c9927..eb16bd4 100644
--- a/zh-cn/docs/user/demos/multi-registry.html
+++ b/zh-cn/docs/user/demos/multi-registry.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 支持同一服务向多注册中心同时注册,或者不同服务分别注册到不同的注册中心上去,甚至可以同时引用注册在不同注册中心上的同名服务。另外,注册中心是支持自定义扩展的 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>。</p>
 <h2>多注册中心注册</h2>
 <p>比如:中文站有些服务来不及在青岛部署,只在杭州部署,而青岛的其它应用需要引用此服务,就可以将服务同时注册到两个注册中心。</p>
diff --git a/zh-cn/docs/user/demos/multi-versions.html b/zh-cn/docs/user/demos/multi-versions.html
index 331e4f4..da186b2 100644
--- a/zh-cn/docs/user/demos/multi-versions.html
+++ b/zh-cn/docs/user/demos/multi-versions.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。</p>
 <p>可以按照以下的步骤进行版本迁移:</p>
 <ol start="0">
diff --git a/zh-cn/docs/user/demos/netty4.html b/zh-cn/docs/user/demos/netty4.html
index 55f3c52..14604f4 100644
--- a/zh-cn/docs/user/demos/netty4.html
+++ b/zh-cn/docs/user/demos/netty4.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>provider端:</p>
 <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>
 </code></pre>
diff --git a/zh-cn/docs/user/demos/parameter-validation.html b/zh-cn/docs/user/demos/parameter-validation.html
index c18a74f..9c268e1 100644
--- a/zh-cn/docs/user/demos/parameter-validation.html
+++ b/zh-cn/docs/user/demos/parameter-validation.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <h2>Maven 依赖</h2>
 <pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
diff --git a/zh-cn/docs/user/demos/preflight-check.html b/zh-cn/docs/user/demos/preflight-check.html
index 0884331..d42e8a0 100644
--- a/zh-cn/docs/user/demos/preflight-check.html
+++ b/zh-cn/docs/user/demos/preflight-check.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认  <code>check=&quot;true&quot;</code>。</p>
 <p>可以通过 <code>check=&quot;false&quot;</code> 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。</p>
 <p>另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可用时,会抛出异常,拿到 null 引用,如果 <code>check=&quot;false&quot;</code>,总是会返回引用,当服务恢复时,能自动连上。</p>
diff --git a/zh-cn/docs/user/demos/protobuf-idl.html b/zh-cn/docs/user/demos/protobuf-idl.html
new file mode 100644
index 0000000..9422fbc
--- /dev/null
+++ b/zh-cn/docs/user/demos/protobuf-idl.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="protobuf-idl" />
+	<meta name="description" content="protobuf-idl" />
+	<!-- 网页标签标题 -->
+	<title>protobuf-idl</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+<p>当前 Dubbo 的服务定义和具体的编程语言绑定,没有提供一种语言中立的服务描述格式,比如 Java 就是定义 Interface 接口,到了其他语言又得重新以另外的格式定义一遍。
+2.7.5 版本通过支持 Protobuf IDL 实现了语言中立的服务定义。</p>
+<p>日后,不论我们使用什么语言版本来开发 Dubbo 服务,都可以直接使用 IDL 定义如下服务,具体请<a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-protobuf">参见示例</a></p>
+<pre><code class="language-idl">syntax = &quot;proto3&quot;;
+
+option java_multiple_files = true;
+option java_package = &quot;org.apache.dubbo.demo&quot;;
+option java_outer_classname = &quot;DemoServiceProto&quot;;
+option objc_class_prefix = &quot;DEMOSRV&quot;;
+
+package demoservice;
+
+// The demo service definition.
+service DemoService {
+  rpc SayHello (HelloRequest) returns (HelloReply) {}
+}
+
+// The request message containing the user's name.
+message HelloRequest {
+  string name = 1;
+}
+
+// The response message containing the greetings
+message HelloReply {
+  string message = 1;
+}
+</code></pre>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/documentation.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/protobuf-idl.json b/zh-cn/docs/user/demos/protobuf-idl.json
new file mode 100644
index 0000000..edcf0f9
--- /dev/null
+++ b/zh-cn/docs/user/demos/protobuf-idl.json
@@ -0,0 +1,6 @@
+{
+  "filename": "protobuf-idl.md",
+  "__html": "<h1>使用 IDL 定义服务</h1>\n<p>当前 Dubbo 的服务定义和具体的编程语言绑定,没有提供一种语言中立的服务描述格式,比如 Java 就是定义 Interface 接口,到了其他语言又得重新以另外的格式定义一遍。\n2.7.5 版本通过支持 Protobuf IDL 实现了语言中立的服务定义。</p>\n<p>日后,不论我们使用什么语言版本来开发 Dubbo 服务,都可以直接使用 IDL 定义如下服务,具体请<a href=\"https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-protobuf\">参见示例</a></p>\n<pre><code class=\"language-idl\">syntax = &quot;proto3&quot;;\n\noption java_multiple_files = true;\noption java_package = &quot;org.apache.dubbo.demo&quot;; [...]
+  "link": "/zh-cn/docs/user/demos/protobuf-idl.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/reference-config-cache.html b/zh-cn/docs/user/demos/reference-config-cache.html
index 9936615..2ff5aca 100644
--- a/zh-cn/docs/user/demos/reference-config-cache.html
+++ b/zh-cn/docs/user/demos/reference-config-cache.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><code>ReferenceConfig</code> 实例很重,封装了与注册中心的连接以及与提供者的连接,需要缓存。否则重复生成 <code>ReferenceConfig</code> 可能造成性能问题并且会有内存和连接泄漏。在 API 方式编程时,容易忽略此问题。</p>
 <p>因此,自 <code>2.4.0</code> 版本开始, dubbo 提供了简单的工具类 <code>ReferenceConfigCache</code>用于缓存 <code>ReferenceConfig</code> 实例。</p>
 <p>使用方式如下:</p>
diff --git a/zh-cn/docs/user/demos/registry-only.html b/zh-cn/docs/user/demos/registry-only.html
index 9c32624..f6752ad 100644
--- a/zh-cn/docs/user/demos/registry-only.html
+++ b/zh-cn/docs/user/demos/registry-only.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务。这个时候,可以让服务提供者方只注册服务到另一注册中心,而不从另一注册中心订阅服务。</p>
 <p>禁用订阅配置</p>
 <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>
diff --git a/zh-cn/docs/user/demos/result-cache.html b/zh-cn/docs/user/demos/result-cache.html
index a962436..2d9a563 100644
--- a/zh-cn/docs/user/demos/result-cache.html
+++ b/zh-cn/docs/user/demos/result-cache.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <h2>缓存类型</h2>
 <ul>
diff --git a/zh-cn/docs/user/demos/routing-rule-deprecated.html b/zh-cn/docs/user/demos/routing-rule-deprecated.html
index 58f4288..12922ea 100644
--- a/zh-cn/docs/user/demos/routing-rule-deprecated.html
+++ b/zh-cn/docs/user/demos/routing-rule-deprecated.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <h2>写入路由规则</h2>
 <p>向注册中心写入路由规则的操作通常由监控中心或治理中心的页面完成</p>
diff --git a/zh-cn/docs/user/demos/routing-rule.html b/zh-cn/docs/user/demos/routing-rule.html
index 06e9afd..5dcb98e 100644
--- a/zh-cn/docs/user/demos/routing-rule.html
+++ b/zh-cn/docs/user/demos/routing-rule.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在此查看<a href="./routing-rule-deprecated.md">老版本路由规则(2.6.x or before)</a></p>
 <p>路由规则在发起一次RPC调用前起到过滤目标服务器地址的作用,过滤后的地址列表,将作为消费端最终发起RPC调用的备选地址。</p>
 <ul>
diff --git a/zh-cn/docs/user/demos/serialization.html b/zh-cn/docs/user/demos/serialization.html
index 6ce2b2e..6e41de3 100644
--- a/zh-cn/docs/user/demos/serialization.html
+++ b/zh-cn/docs/user/demos/serialization.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>启用Kryo和FST</h2>
 <p>使用Kryo和FST非常简单,只需要在dubbo RPC的XML配置中添加一个属性即可:</p>
 <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>
diff --git a/zh-cn/docs/user/demos/service-container.html b/zh-cn/docs/user/demos/service-container.html
index 3453b25..5450d09 100644
--- a/zh-cn/docs/user/demos/service-container.html
+++ b/zh-cn/docs/user/demos/service-container.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务容器是一个 standalone 的启动程序,因为后台服务不需要 Tomcat 或 JBoss 等 Web 容器的功能,如果硬要用 Web 容器去加载服务提供方,增加复杂性,也浪费资源。</p>
 <p>服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。</p>
 <p>服务容器的加载内容可以扩展,内置了 spring, jetty, log4j 等加载,可通过<a href="http://dubbo.apache.org/zh-cn/docs/dev/impls/container.html">容器扩展点</a>进行扩展。配置配在 java 命令的 -D 参数或者 <code>dubbo.properties</code> 中。</p>
diff --git a/zh-cn/docs/user/demos/service-downgrade.html b/zh-cn/docs/user/demos/service-downgrade.html
index 39bb83f..85c60a4 100644
--- a/zh-cn/docs/user/demos/service-downgrade.html
+++ b/zh-cn/docs/user/demos/service-downgrade.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>可以通过服务降级功能 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。</p>
 <p>向注册中心写入动态配置覆盖规则:</p>
 <pre><code class="language-java">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory<span class="hljs-class">.<span class="hljs-keyword">class</span>).<span class="hljs-title">getAdaptiveExtension</span>()</span>;
diff --git a/zh-cn/docs/user/demos/service-group.html b/zh-cn/docs/user/demos/service-group.html
index 294ec6c..9f8414b 100644
--- a/zh-cn/docs/user/demos/service-group.html
+++ b/zh-cn/docs/user/demos/service-group.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>当一个接口有多种实现时,可以用 group 区分。</p>
 <h2>服务</h2>
 <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>
diff --git a/zh-cn/docs/user/demos/set-host.html b/zh-cn/docs/user/demos/set-host.html
index cb10d6e..21936e5 100644
--- a/zh-cn/docs/user/demos/set-host.html
+++ b/zh-cn/docs/user/demos/set-host.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>在<code>dubbo</code>中,<code>provider</code>启动时主要做两个事情,一是启动server,二是向注册中心注册服务.启动server时需要绑定socket,向注册中心注册服务时也需要发送socket唯一标识服务地址.</p>
 <ol>
 <li><code>dubbo</code>中不设置<code>host</code>时默认<code>host</code>是什么?</li>
diff --git a/zh-cn/docs/user/demos/simplify-registry-data.html b/zh-cn/docs/user/demos/simplify-registry-data.html
index 84154d8..ed4d959 100644
--- a/zh-cn/docs/user/demos/simplify-registry-data.html
+++ b/zh-cn/docs/user/demos/simplify-registry-data.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>dubbo provider中的服务配置项有接近<a href="http://dubbo.apache.org/en-us/docs/user/references/xml/dubbo-service.html">30个配置项</a>。 排除注册中心服务治理需要之外,很大一部分配置项是provider自己使用,不需要透传给消费者。这部分数据不需要进入注册中心,而只需要以key-value形式持久化存储。</p>
 <p>dubbo consumer中的配置项也有<a href="http://dubbo.apache.org/en-us/docs/user/references/xml/dubbo-reference.html">20+个配置项</a>。在注册中心之中,服务消费者列表中只需要关注application,version,group,ip,dubbo版本等少量配置,其他配置也可以以key-value形式持久化存储。</p>
 <p>这些数据是以服务为维度注册进入注册中心,导致了数据量的膨胀,进而引发注册中心(如zookeeper)的网络开销增大,性能降低。</p>
diff --git a/zh-cn/docs/user/demos/static-service.html b/zh-cn/docs/user/demos/static-service.html
index f85688ce..5ce85d6 100644
--- a/zh-cn/docs/user/demos/static-service.html
+++ b/zh-cn/docs/user/demos/static-service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。</p>
 <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>
 </code></pre>
diff --git a/zh-cn/docs/user/demos/stickiness.html b/zh-cn/docs/user/demos/stickiness.html
index 65f9cee..bab8629 100644
--- a/zh-cn/docs/user/demos/stickiness.html
+++ b/zh-cn/docs/user/demos/stickiness.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>粘滞连接用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非该提供者挂了,再连另一台。</p>
 <p>粘滞连接将自动开启<a href="./lazy-connect.md">延迟连接</a>,以减少长连接数。</p>
 <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">"xxxService"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"com.xxx.XxxService"</span> <span class="hljs-attr">sticky</span>=<span class="hljs-string">"true"</span> /&gt;</span>
diff --git a/zh-cn/docs/user/demos/subscribe-only.html b/zh-cn/docs/user/demos/subscribe-only.html
index bbdfa92..a5fc55e 100644
--- a/zh-cn/docs/user/demos/subscribe-only.html
+++ b/zh-cn/docs/user/demos/subscribe-only.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。</p>
 <p>可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。</p>
 <p><img src="../sources/images/subscribe-only.jpg" alt="/user-guide/images/subscribe-only.jpg"></p>
diff --git a/zh-cn/docs/user/demos/thread-model.html b/zh-cn/docs/user/demos/thread-model.html
index 42bfc11..83f3975 100644
--- a/zh-cn/docs/user/demos/thread-model.html
+++ b/zh-cn/docs/user/demos/thread-model.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。</p>
 <p>但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。</p>
 <p>如果用 IO 线程处理事件,又在事件处理过程中发起新的 IO 请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。</p>
diff --git a/zh-cn/docs/user/demos/tls.html b/zh-cn/docs/user/demos/tls.html
new file mode 100644
index 0000000..2717684
--- /dev/null
+++ b/zh-cn/docs/user/demos/tls.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="tls" />
+	<meta name="description" content="tls" />
+	<!-- 网页标签标题 -->
+	<title>tls</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+<p>2.7.5 版本在传输链路的安全性上做了很多工作,对于内置的 Dubbo Netty Server 和新引入的 gRPC 协议都提供了基于 TLS 的安全链路传输机制。</p>
+<p>TLS 的配置都有统一的入口,如下所示:</p>
+<p><strong>Provider 端</strong></p>
+<pre><code class="language-java">SslConfig sslConfig = <span class="hljs-keyword">new</span> SslConfig();
+sslConfig.setServerKeyCertChainPath(<span class="hljs-string">"path to cert"</span>);
+sslConfig.setServerPrivateKeyPath(args[<span class="hljs-number">1</span>]);
+<span class="hljs-comment">// 如果开启双向 cert 认证</span>
+<span class="hljs-keyword">if</span> (mutualTls) {
+  sslConfig.setServerTrustCertCollectionPath(args[<span class="hljs-number">2</span>]);
+}
+
+ProtocolConfig protocolConfig = <span class="hljs-keyword">new</span> ProtocolConfig(<span class="hljs-string">"dubbo/grpc"</span>);
+protocolConfig.setSslEnabled(<span class="hljs-keyword">true</span>);
+</code></pre>
+<p><strong>Consumer 端</strong></p>
+<pre><code class="language-java"><span class="hljs-keyword">if</span> (!mutualTls) {}
+    sslConfig.setClientTrustCertCollectionPath(args[<span class="hljs-number">0</span>]);
+} <span class="hljs-keyword">else</span> {
+    sslConfig.setClientTrustCertCollectionPath(args[<span class="hljs-number">0</span>]);
+    sslConfig.setClientKeyCertChainPath(args[<span class="hljs-number">1</span>]);
+    sslConfig.setClientPrivateKeyPath(args[<span class="hljs-number">2</span>]);
+}
+</code></pre>
+<p>为尽可能保证应用启动的灵活性,TLS Cert 的指定还能通过 -D 参数或环境变量等方式来在启动阶段根据部署环境动态指定,具体请参见 Dubbo 配置读取规则与 TLS 示例</p>
+<p>Dubbo 配置读取规则:<a href="http://dubbo.apache.org/zh-cn/docs/user/configuration/configuration-load-process.html">http://dubbo.apache.org/zh-cn/docs/user/configuration/configuration-load-process.html</a></p>
+<p>TLS 示例:<a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-ssl">https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-ssl</a></p>
+<blockquote>
+<p>如果要使用的是 gRPC 协议,在开启 TLS 时会使用到协议协商机制,因此必须使用支持 ALPN 机制的 Provider,推荐使用的是 netty-tcnative,具体可参见 gRPC Java 社区的总结: <a href="https://github.com/grpc/grpc-java/blob/master/SECURITY.md">https://github.com/grpc/grpc-java/blob/master/SECURITY.md</a></p>
+</blockquote>
+<p>在服务调用的安全性上,Dubbo 在后续的版本中会持续投入,其中服务发现/调用的鉴权机制预计在接下来的版本中就会和大家见面。</p>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/documentation.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/tls.json b/zh-cn/docs/user/demos/tls.json
new file mode 100644
index 0000000..596e0f5
--- /dev/null
+++ b/zh-cn/docs/user/demos/tls.json
@@ -0,0 +1,6 @@
+{
+  "filename": "tls.md",
+  "__html": "<h1>开启 TLS</h1>\n<p>2.7.5 版本在传输链路的安全性上做了很多工作,对于内置的 Dubbo Netty Server 和新引入的 gRPC 协议都提供了基于 TLS 的安全链路传输机制。</p>\n<p>TLS 的配置都有统一的入口,如下所示:</p>\n<p><strong>Provider 端</strong></p>\n<pre><code class=\"language-java\">SslConfig sslConfig = <span class=\"hljs-keyword\">new</span> SslConfig();\nsslConfig.setServerKeyCertChainPath(<span class=\"hljs-string\">\"path to cert\"</span>);\nsslConfig.setServerPrivateKeyPath(args[<span class=\"hljs-number\">1</span>]);\n<span class=\"hljs-com [...]
+  "link": "/zh-cn/docs/user/demos/tls.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/token-authorization.html b/zh-cn/docs/user/demos/token-authorization.html
index 81b1c09..8cdfd61 100644
--- a/zh-cn/docs/user/demos/token-authorization.html
+++ b/zh-cn/docs/user/demos/token-authorization.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>通过令牌验证在注册中心控制权限,以决定要不要下发令牌给消费者,可以防止消费者绕过注册中心访问提供者,另外通过注册中心可灵活改变授权方式,而不需修改或升级提供者</p>
 <p><img src="../sources/images/dubbo-token.jpg" alt="/user-guide/images/dubbo-token.jpg"></p>
 <p>可以全局设置开启令牌验证:</p>
diff --git a/zh-cn/docs/user/dependencies.html b/zh-cn/docs/user/dependencies.html
index 8db85f2..ab2bbb9 100644
--- a/zh-cn/docs/user/dependencies.html
+++ b/zh-cn/docs/user/dependencies.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>必须依赖</h2>
 <p>JDK 1.6+ <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
 <h2>缺省依赖</h2>
diff --git a/zh-cn/docs/user/languages/erlang/reference.html b/zh-cn/docs/user/languages/erlang/reference.html
index d4ec793..27989b3 100644
--- a/zh-cn/docs/user/languages/erlang/reference.html
+++ b/zh-cn/docs/user/languages/erlang/reference.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>基础配置</h2>
 <p>消费者配置项需要添加到<code>sys.config</code>文件<code>dubboerl</code>应用配置项里。</p>
 <pre><code class="language-erlang">{dubboerl,[
diff --git a/zh-cn/docs/user/languages/erlang/serialization.html b/zh-cn/docs/user/languages/erlang/serialization.html
index 8cc9a4d..ff9e498 100644
--- a/zh-cn/docs/user/languages/erlang/serialization.html
+++ b/zh-cn/docs/user/languages/erlang/serialization.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>当前该库只实现了<code>dubbo://</code>通讯协议。</p>
 <p>序列化方式实现了<code>hessian</code>和<code>json</code>两种方式。</p>
 <h2>配置样例</h2>
diff --git a/zh-cn/docs/user/languages/erlang/service.html b/zh-cn/docs/user/languages/erlang/service.html
index 8139109..fab0d98 100644
--- a/zh-cn/docs/user/languages/erlang/service.html
+++ b/zh-cn/docs/user/languages/erlang/service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>基本配置</h2>
 <p>提供者配置项需要添加到<code>sys.config</code>文件<code>dubboerl</code>应用配置项里。</p>
 <pre><code class="language-erlang">{dubboerl,[
diff --git a/zh-cn/docs/user/languages/erlang/start.html b/zh-cn/docs/user/languages/erlang/start.html
index a825ead..9027243 100644
--- a/zh-cn/docs/user/languages/erlang/start.html
+++ b/zh-cn/docs/user/languages/erlang/start.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>建议先使用java定义接口jar,并使用<a href="https://github.com/apache/dubbo-erlang/tree/master/tools/erlanalysis">erlanalysis</a> 工具解析java接口至Erlang lib</p>
 <h2>导入依赖库</h2>
 <h3>使用 Rebar 编译工具。</h3>
diff --git a/zh-cn/docs/user/maturity.html b/zh-cn/docs/user/maturity.html
index 68f8112..6631aff 100644
--- a/zh-cn/docs/user/maturity.html
+++ b/zh-cn/docs/user/maturity.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>功能成熟度</h2>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/new-features-in-a-glance.html b/zh-cn/docs/user/new-features-in-a-glance.html
new file mode 100644
index 0000000..6836228
--- /dev/null
+++ b/zh-cn/docs/user/new-features-in-a-glance.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="new-features-in-a-glance" />
+	<meta name="description" content="new-features-in-a-glance" />
+	<!-- 网页标签标题 -->
+	<title>new-features-in-a-glance</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+<p>[TOC]</p>
+<h2>版本速览</h2>
+<p>Dubbo 社区目前主力维护的有 2.6.x 和 2.7.x 两大版本,其中,</p>
+<ul>
+<li>2.6.x 主要以 bugfix 和少量 enhancements 为主,因此能完全保证稳定性</li>
+<li>2.7.x 作为社区的主要开发版本,得到持续更新并增加了大量新 feature 和优化,同时也带来了一些稳定性挑战</li>
+</ul>
+<h3>2.7.x 版本</h3>
+<table>
+<thead>
+<tr>
+<th></th>
+<th>版本</th>
+<th>重要功能</th>
+<th>升级建议</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>2.7.5</td>
+<td>服务自省<br />HTTP/2(gRPC) <br />Protobuf <br />TLS<br />性能优化<br /><br /><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.5">https://github.com/apache/dubbo/releases/tag/dubbo-2.7.5</a></td>
+<td>不建议大规模生产使用</td>
+</tr>
+<tr>
+<td>2</td>
+<td>2.7.4.1</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.4.1">bugfixes and enhancements of 2.7.3</a></td>
+<td><strong>推荐生产使用</strong></td>
+</tr>
+<tr>
+<td>3</td>
+<td>2.7.3</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.3">bigfixes of and enhancements of 2.7.2</a></td>
+<td><strong>推荐生产使用</strong></td>
+</tr>
+<tr>
+<td>4</td>
+<td>2.7.2</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.2">bigfixes of and enhancements of 2.7.1</a></td>
+<td>不建议大规模生产使用</td>
+</tr>
+<tr>
+<td>5</td>
+<td>2.7.1</td>
+<td><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.1">bigfixes of and enhancements of 2.7.0</a></td>
+<td>不建议大规模生产使用</td>
+</tr>
+<tr>
+<td>6</td>
+<td>2.7.0</td>
+<td>异步编程模型 - 消费端/提供端异步<br />服务治理规则增强<br />简化的注册模型<br />配置中心、元数据中心<br />package 重构<br /><br /><a href="https://github.com/apache/dubbo/releases/tag/dubbo-2.7.0">https://github.com/apache/dubbo/releases/tag/dubbo-2.7.0</a></td>
+<td>beta 版本,2.6.x 重构后首个版本</td>
+</tr>
+</tbody>
+</table>
+<h3>2.6.x 及之前版本</h3>
+<table>
+<thead>
+<tr>
+<th></th>
+<th>版本</th>
+<th>重要功能</th>
+<th>升级建议</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>2.6.x</td>
+<td>bugfix</td>
+<td>建议持续升级最新版本,所有版本生产可用</td>
+</tr>
+<tr>
+<td>2</td>
+<td>2.5.x</td>
+<td>停止维护</td>
+<td>建议升级最新 2.6.x 版本</td>
+</tr>
+<tr>
+<td>3</td>
+<td>2.4.x 及之前</td>
+<td>停止维护</td>
+<td>建议升级最新 2.6.x 版本</td>
+</tr>
+</tbody>
+</table>
+<h2>值得关注的新特性</h2>
+<ul>
+<li>Dubbo 云原生计划(敬请期待...)</li>
+<li>Kubernetes Native Service Discovery(敬请期待...)</li>
+<li><a href="./references/protocol/gRPC.md">gRPC (HTTP/2) 协议</a></li>
+<li><a href="./demos/protobuf-idl.md">使用 Protobuf 定义 Dubbo 服务</a></li>
+<li><a href="./demos/tls.md">TLS 安全传输</a></li>
+<li><a href="">实例级服务发现</a></li>
+<li><a href="./demos/auth.md">服务鉴权</a></li>
+<li>性能优化
+<ul>
+<li><a href="../../../blog/zh-cn/2.7.5-release.md">调用链路提升 30%</a></li>
+<li><a href="./demos/consumer-threadpool.md">消费端线程模型</a></li>
+<li><a href="">地址推送链路</a></li>
+</ul>
+</li>
+</ul>
+<h2>热门文章列表</h2>
+<p><a href="../../../blog/zh-cn/apche-dubbo-2019-2020.md">从 2019 到 2020,Apache Dubbo 年度总结</a><br>
+<a href="../../../blog/zh-cn/2.7.5-release.md">Dubbo 2.7.5 里程碑版本发布</a><br>
+<a href="../../../blog/zh-cn/Dubbo-supporting-gRPC-HTTP2-and-protobuf.md">Dubbo 在协议与多语言方向的探索:支持 gRPC、Protobuf</a></p>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/documentation.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/user/new-features-in-a-glance.json b/zh-cn/docs/user/new-features-in-a-glance.json
new file mode 100644
index 0000000..c668806
--- /dev/null
+++ b/zh-cn/docs/user/new-features-in-a-glance.json
@@ -0,0 +1,6 @@
+{
+  "filename": "new-features-in-a-glance.md",
+  "__html": "<h1>Dubbo 版本发布及新特性速览</h1>\n<p>[TOC]</p>\n<h2>版本速览</h2>\n<p>Dubbo 社区目前主力维护的有 2.6.x 和 2.7.x 两大版本,其中,</p>\n<ul>\n<li>2.6.x 主要以 bugfix 和少量 enhancements 为主,因此能完全保证稳定性</li>\n<li>2.7.x 作为社区的主要开发版本,得到持续更新并增加了大量新 feature 和优化,同时也带来了一些稳定性挑战</li>\n</ul>\n<h3>2.7.x 版本</h3>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>版本</th>\n<th>重要功能</th>\n<th>升级建议</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>2.7.5</td>\n<td>服务自省<br />HTTP/2(gRPC) <br />Protobuf <br />TLS<br />性能优化<br /><br /><a hre [...]
+  "link": "/zh-cn/docs/user/new-features-in-a-glance.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/user/perf-test.html b/zh-cn/docs/user/perf-test.html
index 532025e..5bbb136 100644
--- a/zh-cn/docs/user/perf-test.html
+++ b/zh-cn/docs/user/perf-test.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>测试说明</h2>
 <ol>
 <li>本次性能测试,测试了 dubbo 2.0 所有支持的协议在不同大小和数据类型下的表现,并与 dubbo 1.0 进行了对比。</li>
diff --git a/zh-cn/docs/user/preface/architecture.html b/zh-cn/docs/user/preface/architecture.html
index 5cb41d5..8ca374a 100644
--- a/zh-cn/docs/user/preface/architecture.html
+++ b/zh-cn/docs/user/preface/architecture.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><img src="../sources/images/dubbo-architecture.jpg" alt="dubbo-architucture"></p>
 <h5>节点角色说明</h5>
 <table>
diff --git a/zh-cn/docs/user/preface/background.html b/zh-cn/docs/user/preface/background.html
index 5e5afc5..db05c75 100644
--- a/zh-cn/docs/user/preface/background.html
+++ b/zh-cn/docs/user/preface/background.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。</p>
 <p><img src="../sources/images/dubbo-architecture-roadmap.jpg" alt="image"></p>
 <h4>单一应用架构</h4>
diff --git a/zh-cn/docs/user/preface/index.html b/zh-cn/docs/user/preface/index.html
index a770500..082e619 100644
--- a/zh-cn/docs/user/preface/index.html
+++ b/zh-cn/docs/user/preface/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/user/preface/requirements.html b/zh-cn/docs/user/preface/requirements.html
index 18fc665..c0b0be3 100644
--- a/zh-cn/docs/user/preface/requirements.html
+++ b/zh-cn/docs/user/preface/requirements.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><img src="../sources/images/dubbo-service-governance.jpg" alt="image"></p>
 <p>在大规模服务化之前,应用可能只是通过 RMI 或 Hessian 等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过 F5 等硬件进行负载均衡。</p>
 <p><strong>当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。</strong> 此时需要一个服务注册中心,动态地注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和 Failover,降低对 F5 硬件负载均衡器的依赖,也能减少部分成本。</p>
diff --git a/zh-cn/docs/user/preface/usage.html b/zh-cn/docs/user/preface/usage.html
index f778fc6..f28e667 100644
--- a/zh-cn/docs/user/preface/usage.html
+++ b/zh-cn/docs/user/preface/usage.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>本地服务 Spring 配置</h2>
 <p>local.xml:</p>
 <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>
diff --git a/zh-cn/docs/user/quick-start.html b/zh-cn/docs/user/quick-start.html
index b7b0748..6797787 100644
--- a/zh-cn/docs/user/quick-start.html
+++ b/zh-cn/docs/user/quick-start.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 <a href="https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html">Spring 的 Schema 扩展</a> 进行加载。</p>
 <p>如果不想使用 Spring 配置,可以通过 <a href="./configuration/api.md">API 的方式</a> 进行调用。</p>
 <h2>服务提供者</h2>
diff --git a/zh-cn/docs/user/recommend.html b/zh-cn/docs/user/recommend.html
index d555e7d..02c1193 100644
--- a/zh-cn/docs/user/recommend.html
+++ b/zh-cn/docs/user/recommend.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>在 Provider 端尽量多配置 Consumer 端属性</h2>
 <p>原因如下:</p>
 <ul>
diff --git a/zh-cn/docs/user/references/api.html b/zh-cn/docs/user/references/api.html
index b39762d..6ae3243 100644
--- a/zh-cn/docs/user/references/api.html
+++ b/zh-cn/docs/user/references/api.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 的常规功能,都保持零侵入,但有些功能不得不用 API 侵入才能实现 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>。</p>
 <p>API 汇总如下:</p>
 <h2>配置 API</h2>
diff --git a/zh-cn/docs/user/references/maven.html b/zh-cn/docs/user/references/maven.html
index f6579c4..27e3ff9 100644
--- a/zh-cn/docs/user/references/maven.html
+++ b/zh-cn/docs/user/references/maven.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <h2>启动一个简易注册中心</h2>
 <p>以指定的9099端口启动一个简易注册中心 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
 <pre><code class="language-sh">mvn dubbo:registry -Dport=9099 
diff --git a/zh-cn/docs/user/references/metadata/introduction.html b/zh-cn/docs/user/references/metadata/introduction.html
index 5f0677a..56e0c6b 100644
--- a/zh-cn/docs/user/references/metadata/introduction.html
+++ b/zh-cn/docs/user/references/metadata/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>dubbo provider中的服务配置项有接近<a href="http://dubbo.apache.org/en-us/docs/user/references/xml/dubbo-service.html">30个配置项</a>。 排除注册中心服务治理需要之外,很大一部分配置项是provider自己使用,不需要透传给消费者。这部分数据不需要进入注册中心,而只需要以key-value形式持久化存储。
 dubbo consumer中的配置项也有<a href="http://dubbo.apache.org/en-us/docs/user/references/xml/dubbo-reference.html">20+个配置项</a>。在注册中心之中,服务消费者列表中只需要关注application,version,group,ip,dubbo版本等少量配置,其他配置也可以以key-value形式持久化存储。
 这些数据是以服务为维度注册进入注册中心,导致了数据量的膨胀,进而引发注册中心(如zookeeper)的网络开销增大,性能降低。<br>
diff --git a/zh-cn/docs/user/references/metadata/metadata-redis.html b/zh-cn/docs/user/references/metadata/metadata-redis.html
index fd2dec4..1530faf 100644
--- a/zh-cn/docs/user/references/metadata/metadata-redis.html
+++ b/zh-cn/docs/user/references/metadata/metadata-redis.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/user/references/metadata/metadata-zookeeper.html b/zh-cn/docs/user/references/metadata/metadata-zookeeper.html
index 9af52cc..2dee79a 100644
--- a/zh-cn/docs/user/references/metadata/metadata-zookeeper.html
+++ b/zh-cn/docs/user/references/metadata/metadata-zookeeper.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
 	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
diff --git a/zh-cn/docs/user/references/protocol/dubbo.html b/zh-cn/docs/user/references/protocol/dubbo.html
index 84a1751..5e1a9b2 100644
--- a/zh-cn/docs/user/references/protocol/dubbo.html
+++ b/zh-cn/docs/user/references/protocol/dubbo.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。</p>
 <p>反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。</p>
 <p><img src="../../sources/images/dubbo-protocol.jpg" alt="dubbo-protocol.jpg"></p>
diff --git a/zh-cn/docs/user/references/protocol/gRPC.html b/zh-cn/docs/user/references/protocol/gRPC.html
new file mode 100644
index 0000000..b5c9636
--- /dev/null
+++ b/zh-cn/docs/user/references/protocol/gRPC.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="gRPC" />
+	<meta name="description" content="gRPC" />
+	<!-- 网页标签标题 -->
+	<title>gRPC</title>
+	<link rel="shortcut icon" href="/img/dubbo.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+<p>Dubbo 自 2.7.5 版本开始支持 gRPC 协议,对于计划使用 HTTP/2 通信,或者想利用 gRPC 带来的 Stream、反压、Reactive 编程等能力的开发者来说,
+都可以考虑启用 gRPC 协议。</p>
+<h2>支持 gRPC 的好处</h2>
+<ul>
+<li>为期望使用 gRPC 协议的用户带来服务治理能力,方便接入 Dubbo 体系</li>
+<li>用户可以使用 Dubbo 风格的,基于接口的编程风格来定义和使用远程服务</li>
+</ul>
+<h2>如何在 Dubbo 中使用 gRPC</h2>
+<p>大概需要以下步骤:</p>
+<ol>
+<li>使用 IDL 定义服务</li>
+<li>配置 compiler 插件,本地预编译</li>
+<li>配置暴露/引用 Dubbo 服务</li>
+</ol>
+<p>具体可参见以下<a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-grpc/dubbo-samples-original">示例</a></p>
+<p>除了原生 StreamObserver 接口类型之外,Dubbo 还支持 <a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-grpc/dubbo-samples-rxjava">RxJava</a>、<a href="https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-grpc/dubbo-samples-reactor">Reactor</a> 编程风格的 API</p>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+  <script src="/build/documentation.js"></script>
+  <!-- Global site tag (gtag.js) - Google Analytics -->
+	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"></script>
+	<script>
+		window.dataLayer = window.dataLayer || [];
+		function gtag(){dataLayer.push(arguments);}
+		gtag('js', new Date());
+
+		gtag('config', 'UA-112489517-1');
+	</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/user/references/protocol/gRPC.json b/zh-cn/docs/user/references/protocol/gRPC.json
new file mode 100644
index 0000000..3e48c19
--- /dev/null
+++ b/zh-cn/docs/user/references/protocol/gRPC.json
@@ -0,0 +1,6 @@
+{
+  "filename": "gRPC.md",
+  "__html": "<h1>grpc://</h1>\n<p>Dubbo 自 2.7.5 版本开始支持 gRPC 协议,对于计划使用 HTTP/2 通信,或者想利用 gRPC 带来的 Stream、反压、Reactive 编程等能力的开发者来说,\n都可以考虑启用 gRPC 协议。</p>\n<h2>支持 gRPC 的好处</h2>\n<ul>\n<li>为期望使用 gRPC 协议的用户带来服务治理能力,方便接入 Dubbo 体系</li>\n<li>用户可以使用 Dubbo 风格的,基于接口的编程风格来定义和使用远程服务</li>\n</ul>\n<h2>如何在 Dubbo 中使用 gRPC</h2>\n<p>大概需要以下步骤:</p>\n<ol>\n<li>使用 IDL 定义服务</li>\n<li>配置 compiler 插件,本地预编译</li>\n<li>配置暴露/引用 Dubbo 服务</li>\n</ol>\n<p>具体可参见以下<a href=\"https://github.com/apache/dubbo-samples/tree/master [...]
+  "link": "/zh-cn/docs/user/references/protocol/gRPC.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/user/references/protocol/hessian.html b/zh-cn/docs/user/references/protocol/hessian.html
index 0171974..575f8a8 100644
--- a/zh-cn/docs/user/references/protocol/hessian.html
+++ b/zh-cn/docs/user/references/protocol/hessian.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Hessian <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。</p>
 <p>Dubbo 的 Hessian 协议可以和原生 Hessian 服务互操作,即:</p>
 <ul>
diff --git a/zh-cn/docs/user/references/protocol/http.html b/zh-cn/docs/user/references/protocol/http.html
index 9a583de..e7e361a 100644
--- a/zh-cn/docs/user/references/protocol/http.html
+++ b/zh-cn/docs/user/references/protocol/http.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
 <h2>特性</h2>
 <ul>
diff --git a/zh-cn/docs/user/references/protocol/introduction.html b/zh-cn/docs/user/references/protocol/introduction.html
index ee5f0dd..b22f579 100644
--- a/zh-cn/docs/user/references/protocol/introduction.html
+++ b/zh-cn/docs/user/references/protocol/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>推荐使用 Dubbo 协议。各协议的性能情况,请参见:<a href="../../perf-test.md">性能测试报告</a></p>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/user/references/protocol/memcached.html b/zh-cn/docs/user/references/protocol/memcached.html
index bbb8c98..5032e80 100644
--- a/zh-cn/docs/user/references/protocol/memcached.html
+++ b/zh-cn/docs/user/references/protocol/memcached.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <h2>注册 memcached 服务的地址</h2>
 <pre><code class="language-java">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory<span class="hljs-class">.<span class="hljs-keyword">class</span>).<span class="hljs-title">getAdaptiveExtension</span>()</span>;
diff --git a/zh-cn/docs/user/references/protocol/redis.html b/zh-cn/docs/user/references/protocol/redis.html
index c830423..db4401e 100644
--- a/zh-cn/docs/user/references/protocol/redis.html
+++ b/zh-cn/docs/user/references/protocol/redis.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <h2>注册 redis 服务的地址</h2>
 <pre><code class="language-java">RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory<span class="hljs-class">.<span class="hljs-keyword">class</span>).<span class="hljs-title">getAdaptiveExtension</span>()</span>;
diff --git a/zh-cn/docs/user/references/protocol/rest.html b/zh-cn/docs/user/references/protocol/rest.html
index 8347977..824af2a 100644
--- a/zh-cn/docs/user/references/protocol/rest.html
+++ b/zh-cn/docs/user/references/protocol/rest.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>基于标准的Java REST API——JAX-RS 2.0(Java API for RESTful Web Services的简写)实现的REST调用支持</p>
 <h2>快速入门</h2>
 <p>在dubbo中开发一个REST风格的服务会比较简单,下面以一个注册用户的简单服务为例说明。</p>
diff --git a/zh-cn/docs/user/references/protocol/rmi.html b/zh-cn/docs/user/references/protocol/rmi.html
index 1917a4c..c2f1c0a 100644
--- a/zh-cn/docs/user/references/protocol/rmi.html
+++ b/zh-cn/docs/user/references/protocol/rmi.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>RMI 协议采用 JDK 标准的 <code>java.rmi.*</code> 实现,采用阻塞式短连接和 JDK 标准序列化方式。</p>
 <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>
 <h2>特性</h2>
diff --git a/zh-cn/docs/user/references/protocol/thrift.html b/zh-cn/docs/user/references/protocol/thrift.html
index 55f96db..3361bf4 100644
--- a/zh-cn/docs/user/references/protocol/thrift.html
+++ b/zh-cn/docs/user/references/protocol/thrift.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <p>使用 dubbo thrift 协议同样需要使用 thrift 的 idl compiler 编译生成相应的 java 代码,后续版本中会在这方面做一些增强。</p>
 <h2>依赖</h2>
diff --git a/zh-cn/docs/user/references/protocol/webservice.html b/zh-cn/docs/user/references/protocol/webservice.html
index 7656b9b..e0fc517 100644
--- a/zh-cn/docs/user/references/protocol/webservice.html
+++ b/zh-cn/docs/user/references/protocol/webservice.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <p>可以和原生 WebService 服务互操作,即:</p>
 <ul>
diff --git a/zh-cn/docs/user/references/qos.html b/zh-cn/docs/user/references/qos.html
index 181161d..0d98f7c 100644
--- a/zh-cn/docs/user/references/qos.html
+++ b/zh-cn/docs/user/references/qos.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>dubbo <code>2.5.8</code> 新版本增加了 QOS 模块,提供了新的 telnet 命令支持。</p>
 <h2>端口</h2>
 <p>新版本的 telnet 端口 与 dubbo 协议的端口是不同的端口,默认为 <code>22222</code>,可通过配置文件<code>dubbo.properties</code> 修改:</p>
diff --git a/zh-cn/docs/user/references/registry/introduction.html b/zh-cn/docs/user/references/registry/introduction.html
index 0da2e69..499d67d 100644
--- a/zh-cn/docs/user/references/registry/introduction.html
+++ b/zh-cn/docs/user/references/registry/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>推荐使用 <a href="./zookeeper.md">Zookeeper 注册中心</a></p>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/user/references/registry/multicast.html b/zh-cn/docs/user/references/registry/multicast.html
index 36d21e7..0e8affe 100644
--- a/zh-cn/docs/user/references/registry/multicast.html
+++ b/zh-cn/docs/user/references/registry/multicast.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。</p>
 <p><img src="../../sources/images/multicast.jpg" alt="/user-guide/images/multicast.jpg"></p>
 <ol start="0">
diff --git a/zh-cn/docs/user/references/registry/nacos.html b/zh-cn/docs/user/references/registry/nacos.html
index d677fe2..43cb94f 100644
--- a/zh-cn/docs/user/references/registry/nacos.html
+++ b/zh-cn/docs/user/references/registry/nacos.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Nacos 是 Dubbo 生态系统中重要的注册中心实现,其中 <a href="https://github.com/apache/incubator-dubbo/tree/master/dubbo-registry/dubbo-registry-nacos"><code>dubbo-registry-nacos</code></a> 则是 Dubbo 融合 Nacos 注册中心的实现。</p>
 <h2>预备工作</h2>
 <p>当您将 <a href="https://github.com/apache/incubator-dubbo/tree/master/dubbo-registry/dubbo-registry-nacos"><code>dubbo-registry-nacos</code></a> 整合到您的 Dubbo 工程之前,请确保后台已经启动 Nacos 服务。如果您尚且不熟悉 Nacos 的基本使用的话,可先行参考 <a href="https://nacos.io/en-us/docs/quick-start.html">Nacos 快速入门</a>。建议使用 Nacos <code>1.0.0</code> 及以上的版本。</p>
diff --git a/zh-cn/docs/user/references/registry/redis.html b/zh-cn/docs/user/references/registry/redis.html
index dba0027..5a7e9a6 100644
--- a/zh-cn/docs/user/references/registry/redis.html
+++ b/zh-cn/docs/user/references/registry/redis.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <p><img src="../../sources/images/dubbo-redis-registry.jpg" alt="/user-guide/images/dubbo-redis-registry.jpg"></p>
 <p>使用 Redis 的 Key/Map 结构存储数据结构:</p>
diff --git a/zh-cn/docs/user/references/registry/simple.html b/zh-cn/docs/user/references/registry/simple.html
index b7f92a3..8ae8297 100644
--- a/zh-cn/docs/user/references/registry/simple.html
+++ b/zh-cn/docs/user/references/registry/simple.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>Simple 注册中心本身就是一个普通的 Dubbo 服务,可以减少第三方依赖,使整体通讯方式一致。</p>
 <h2>配置</h2>
 <p>将 Simple 注册中心暴露成 Dubbo 服务:</p>
diff --git a/zh-cn/docs/user/references/registry/zookeeper.html b/zh-cn/docs/user/references/registry/zookeeper.html
index 336c4e8..785deaf 100644
--- a/zh-cn/docs/user/references/registry/zookeeper.html
+++ b/zh-cn/docs/user/references/registry/zookeeper.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <p><img src="../../sources/images/zookeeper.jpg" alt="/user-guide/images/zookeeper.jpg"></p>
 <p>流程说明:</p>
diff --git a/zh-cn/docs/user/references/telnet.html b/zh-cn/docs/user/references/telnet.html
index c8d7849..85a91b0 100644
--- a/zh-cn/docs/user/references/telnet.html
+++ b/zh-cn/docs/user/references/telnet.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>从 <code>2.0.5</code> 版本开始,dubbo 开始支持通过 telnet 命令来进行服务治理。</p>
 <h2>使用</h2>
 <pre><code class="language-sh">telnet localhost 20880
diff --git a/zh-cn/docs/user/references/xml/dubbo-application.html b/zh-cn/docs/user/references/xml/dubbo-application.html
index 1a2ede6..3e52eb6 100644
--- a/zh-cn/docs/user/references/xml/dubbo-application.html
+++ b/zh-cn/docs/user/references/xml/dubbo-application.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>应用信息配置。对应的配置类:<code>org.apache.dubbo.config.ApplicationConfig</code></p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-argument.html b/zh-cn/docs/user/references/xml/dubbo-argument.html
index 05a07e4..a093d28 100644
--- a/zh-cn/docs/user/references/xml/dubbo-argument.html
+++ b/zh-cn/docs/user/references/xml/dubbo-argument.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>方法参数配置。对应的配置类: <code>org.apache.dubbo.config.ArgumentConfig</code>。该标签为 <code>&lt;dubbo:method&gt;</code> 的子标签,用于方法参数的特征描述,比如:</p>
 <pre><code class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"findXxx"</span> <span class="hljs-attr">timeout</span>=<span class="hljs-string">"3000"</span> <span class="hljs-attr">retries</span>=<span class="hljs-string">"2"</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">dubbo:argument</span> <span class="hljs-attr">index</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">callback</span>=<span class="hljs-string">"true"</span> /&gt;</span>
diff --git a/zh-cn/docs/user/references/xml/dubbo-config-center.html b/zh-cn/docs/user/references/xml/dubbo-config-center.html
index 72fb473..d0b8d95 100644
--- a/zh-cn/docs/user/references/xml/dubbo-config-center.html
+++ b/zh-cn/docs/user/references/xml/dubbo-config-center.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>配置中心。对应的配置类:<code>org.apache.dubbo.config.ConfigCenterConfig</code></p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-consumer.html b/zh-cn/docs/user/references/xml/dubbo-consumer.html
index 1f1ec55..46afb4f 100644
--- a/zh-cn/docs/user/references/xml/dubbo-consumer.html
+++ b/zh-cn/docs/user/references/xml/dubbo-consumer.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务消费者缺省值配置。配置类: <code>org.apache.dubbo.config.ConsumerConfig</code> 。同时该标签为 <code>&lt;dubbo:reference&gt;</code> 标签的缺省值设置。</p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-method.html b/zh-cn/docs/user/references/xml/dubbo-method.html
index 43ac8d9..45b6c1d 100644
--- a/zh-cn/docs/user/references/xml/dubbo-method.html
+++ b/zh-cn/docs/user/references/xml/dubbo-method.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>方法级配置。对应的配置类: <code>org.apache.dubbo.config.MethodConfig</code>。同时该标签为 <code>&lt;dubbo:service&gt;</code> 或 <code>&lt;dubbo:reference&gt;</code> 的子标签,用于控制到方法级。</p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-module.html b/zh-cn/docs/user/references/xml/dubbo-module.html
index 7fe8ac0..bf56866 100644
--- a/zh-cn/docs/user/references/xml/dubbo-module.html
+++ b/zh-cn/docs/user/references/xml/dubbo-module.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>模块信息配置。对应的配置类 <code>org.apache.dubbo.config.ModuleConfig</code></p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-monitor.html b/zh-cn/docs/user/references/xml/dubbo-monitor.html
index 3b05086..bb3e87f 100644
--- a/zh-cn/docs/user/references/xml/dubbo-monitor.html
+++ b/zh-cn/docs/user/references/xml/dubbo-monitor.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>监控中心配置。对应的配置类: <code>org.apache.dubbo.config.MonitorConfig</code></p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-parameter.html b/zh-cn/docs/user/references/xml/dubbo-parameter.html
index 8af62a6..552e977 100644
--- a/zh-cn/docs/user/references/xml/dubbo-parameter.html
+++ b/zh-cn/docs/user/references/xml/dubbo-parameter.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>选项参数配置。对应的配置类:<code>java.util.Map</code>。同时该标签为<code>&lt;dubbo:protocol&gt;</code>或<code>&lt;dubbo:service&gt;</code>或<code>&lt;dubbo:provider&gt;</code>或<code>&lt;dubbo:reference&gt;</code>或<code>&lt;dubbo:consumer&gt;</code>的子标签,用于配置自定义参数,该配置项将作为扩展点设置自定义参数使用。</p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-protocol.html b/zh-cn/docs/user/references/xml/dubbo-protocol.html
index a4bb637..59a8028 100644
--- a/zh-cn/docs/user/references/xml/dubbo-protocol.html
+++ b/zh-cn/docs/user/references/xml/dubbo-protocol.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务提供者协议配置。对应的配置类: <code>org.apache.dubbo.config.ProtocolConfig</code>。同时,如果需要支持多协议,可以声明多个 <code>&lt;dubbo:protocol&gt;</code> 标签,并在 <code>&lt;dubbo:service&gt;</code> 中通过 <code>protocol</code> 属性指定使用的协议。</p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-provider.html b/zh-cn/docs/user/references/xml/dubbo-provider.html
index 248e928..e8db291 100644
--- a/zh-cn/docs/user/references/xml/dubbo-provider.html
+++ b/zh-cn/docs/user/references/xml/dubbo-provider.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务提供者缺省值配置。对应的配置类: <code>org.apache.dubbo.config.ProviderConfig</code>。同时该标签为 <code>&lt;dubbo:service&gt;</code> 和 <code>&lt;dubbo:protocol&gt;</code> 标签的缺省值设置。</p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-reference.html b/zh-cn/docs/user/references/xml/dubbo-reference.html
index f71170f..28704f2 100644
--- a/zh-cn/docs/user/references/xml/dubbo-reference.html
+++ b/zh-cn/docs/user/references/xml/dubbo-reference.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务消费者引用服务配置。对应的配置类: <code>org.apache.dubbo.config.ReferenceConfig</code></p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-registry.html b/zh-cn/docs/user/references/xml/dubbo-registry.html
index 82174b5..50b0334 100644
--- a/zh-cn/docs/user/references/xml/dubbo-registry.html
+++ b/zh-cn/docs/user/references/xml/dubbo-registry.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>注册中心配置。对应的配置类: <code>org.apache.dubbo.config.RegistryConfig</code>。同时如果有多个不同的注册中心,可以声明多个 <code>&lt;dubbo:registry&gt;</code> 标签,并在 <code>&lt;dubbo:service&gt;</code> 或 <code>&lt;dubbo:reference&gt;</code> 的 <code>registry</code> 属性指定使用的注册中心。</p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/dubbo-service.html b/zh-cn/docs/user/references/xml/dubbo-service.html
index 1dbcb74..d770ce8 100644
--- a/zh-cn/docs/user/references/xml/dubbo-service.html
+++ b/zh-cn/docs/user/references/xml/dubbo-service.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>服务提供者暴露服务配置。对应的配置类:<code>org.apache.dubbo.config.ServiceConfig</code></p>
 <table>
 <thead>
diff --git a/zh-cn/docs/user/references/xml/introduction.html b/zh-cn/docs/user/references/xml/introduction.html
index 15e34d3..111221c 100644
--- a/zh-cn/docs/user/references/xml/introduction.html
+++ b/zh-cn/docs/user/references/xml/introduction.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <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>
 <p>所有配置项分为三大类,参见下表中的&quot;作用&quot; 一列。</p>
 <ul>
diff --git a/zh-cn/docs/user/rest.html b/zh-cn/docs/user/rest.html
index d05cd95..0961732 100644
--- a/zh-cn/docs/user/rest.html
+++ b/zh-cn/docs/user/rest.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><strong>作者:沈理</strong></p>
 <p><strong>文档版权:<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0许可证 署名-禁止演绎</a></strong></p>
 <p>完善中……</p>
diff --git a/zh-cn/docs/user/serialization.html b/zh-cn/docs/user/serialization.html
index 2e2f3a5..10b96e4 100644
--- a/zh-cn/docs/user/serialization.html
+++ b/zh-cn/docs/user/serialization.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><strong>作者:沈理</strong></p>
 <p><strong>文档版权:<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0许可证 署名-禁止演绎</a></strong></p>
 <p>完善中……</p>
diff --git a/zh-cn/docs/user/simple-monitor.html b/zh-cn/docs/user/simple-monitor.html
index fd4df26..95aebbc 100644
--- a/zh-cn/docs/user/simple-monitor.html
+++ b/zh-cn/docs/user/simple-monitor.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><img src="sources/images/check.gif" alt="warning">监控中心也是一个标准的Dubbo服务,可以通过注册中心发现,也可以直连。</p>
 </blockquote>
 <blockquote>
diff --git a/zh-cn/docs/user/versions/index.html b/zh-cn/docs/user/versions/index.html
index ce4abc0..e1b0cd7 100644
--- a/zh-cn/docs/user/versions/index.html
+++ b/zh-cn/docs/user/versions/index.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p><a href="./version-270.md">2.7.x升级步骤及注意事项</a></p>
 </div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a  [...]
 	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
diff --git a/zh-cn/docs/user/versions/version-270.html b/zh-cn/docs/user/versions/version-270.html
index d7f6c97..24ff8e7 100644
--- a/zh-cn/docs/user/versions/version-270.html
+++ b/zh-cn/docs/user/versions/version-270.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
 <p>环境要求:需要<strong>Java 8</strong>及以上版本。</p>
 <p>2.7.0版本在改造的过程中遵循了一个原则,即<strong>保持与低版本的兼容性,因此从功能层面来说它是与2.6.x及更低版本完全兼容的</strong>,而接下来将要提到的兼容性问题主要是<a href="#1.1">包重命名</a>带来的。另外,虽然功能用法保持向后兼容,但参考本文能帮助您尽快用到2.7.0版本的新特性。</p>
 <h2>升级步骤</h2>