You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by GitBox <gi...@apache.org> on 2018/05/16 09:45:18 UTC
[GitHub] liubao68 closed pull request #707: [SCB-585]change folder structure
and add compiled pages
liubao68 closed pull request #707: [SCB-585]change folder structure and add compiled pages
URL: https://github.com/apache/incubator-servicecomb-java-chassis/pull/707
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/docs-source/LANGS.md b/LANGS.md
similarity index 100%
rename from docs-source/LANGS.md
rename to LANGS.md
diff --git a/docs-source/book.json b/book.json
similarity index 100%
rename from docs-source/book.json
rename to book.json
diff --git a/docs/.github/PULL_REQUEST_TEMPLATE.md b/docs/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..0bcae50e7
--- /dev/null
+++ b/docs/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,10 @@
+Follow this checklist to help us incorporate your contribution quickly and easily:
+
+ - [ ] Make sure there is a [JIRA issue](https://issues.apache.org/jira/browse/SCB) filed for the change (usually before you start working on it). Trivial changes like typos do not require a JIRA issue. Your pull request should address just this issue, without pulling in other changes.
+ - [ ] Each commit in the pull request should have a meaningful subject line and body.
+ - [ ] Format the pull request title like `[SCB-XXX] Fixes bug in ApproximateQuantiles`, where you replace `SCB-XXX` with the appropriate JIRA issue.
+ - [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
+ - [ ] Run `mvn clean install` to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
+ - [ ] If this contribution is large, please file an Apache [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).
+
+---
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 000000000..67e5a7dcf
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,85 @@
+# Output Directory
+target/
+
+# C pre-compile
+*.gch
+*.pch
+
+# C compile
+*.a
+*.o
+*.ko
+*.la
+*.lo
+*.obj
+*.elf
+*.so
+*.so.*
+*.dylib
+*.exe
+*.lib
+*.dll
+*.out
+*.app
+*.hex
+
+# Debug files
+*.dSYM/
+
+# Java
+*.class
+
+# Java Package Files
+*.jar
+*.war
+*.ear
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+# Zip Files
+*.rar
+*.zip
+*.7z
+*.tar
+*.gz
+
+# Ant
+build/
+
+# Compiled Python
+__pycache__/
+*.py[cod]
+*py.class
+
+# Eclipse
+.settings/
+.classpath
+.project
+
+# IntelliJ, based on http://devnet.jetbrains.net/docs/DOC-1186
+.idea/
+*.iml
+*.ipr
+*.iws
+
+# logs and trace
+*.log
+*.trace
+*.dat
+
+# vi swap
+*.swp
+
+# Backup Files
+*.bak
+*.old
+
+# SVN metadata
+.svn/
+
+# Mac
+.DS_Store
+
+# gradle
+.gradle
diff --git a/docs/.travis.settings.xml b/docs/.travis.settings.xml
new file mode 100644
index 000000000..356dd99d4
--- /dev/null
+++ b/docs/.travis.settings.xml
@@ -0,0 +1,42 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <servers>
+ <server>
+ <id>apache.snapshots.https</id>
+ <username>${env.SONATYPE_USERNAME}</username>
+ <password>${env.SONATYPE_PASSWORD}</password>
+ </server>
+ <server>
+ <id>apache.releases.https</id>
+ <username>${env.SONATYPE_USERNAME}</username>
+ <password>${env.SONATYPE_PASSWORD}</password>
+ </server>
+ </servers>
+ <profiles>
+ <profile>
+ <id>passphrase</id> <!-- give it the name of your project -->
+ <properties>
+ <gpg.homedir>/home/travis/build/apache/incubator-servicecomb-java-chassis</gpg.homedir>
+ <gpg.keyname>2DE9D2F9</gpg.keyname>
+ <gpg.passphrase>${MYPASSP}</gpg.passphrase>
+ </properties>
+ </profile>
+ </profiles>
+</settings>
diff --git a/docs/.travis.yml b/docs/.travis.yml
new file mode 100644
index 000000000..bcad90ffe
--- /dev/null
+++ b/docs/.travis.yml
@@ -0,0 +1,15 @@
+sudo: required
+language: java
+services:
+- docker
+cache:
+ directories:
+ - "$HOME/.m2"
+install: true
+jobs:
+ include:
+ - stage: Compilation and Installation
+ script: scripts/travis.sh install
+ - stage: Deploy on
+ script: if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then bash scripts/travis.sh deploy;
+ fi
diff --git a/docs/DISCLAIMER b/docs/DISCLAIMER
new file mode 100644
index 000000000..fea997507
--- /dev/null
+++ b/docs/DISCLAIMER
@@ -0,0 +1 @@
+Apache ServiceComb(incubating)Java Chassis is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
diff --git a/docs/LICENSE b/docs/LICENSE
new file mode 100644
index 000000000..c75dbb5b5
--- /dev/null
+++ b/docs/LICENSE
@@ -0,0 +1,230 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+=======================================================================
+Apache ServiceComb Java Chassis Subcomponents:
+
+The Apache ServiceComb Java Chassis project contains subcomponents with
+separate copyright notices and license terms. Your use of the source
+for these subcomponents is subject to the terms and conditions of the
+following licenses.
+
+
+================================================================
+For foundations/foundation-vertx/src/main/java/io/vertx/ext/web/impl/MimeTypesUtils.java
+transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestBodyHandler.java
+================================================================
+This product bundles files from vertx which is licensed under the Apache License v2.
+For details, see https://github.com/vert-x3/vertx-web
+
+
+================================================================
+For swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/extend/property/AbstractBaseIntegerProperty.java
+================================================================
+This product bundles files from swagger which is licensed under the Apache License v2.
+For details, see https://github.com/swagger-api/swagger-core
+
+================================================================
+For handlers/handler-bizkeeper/src/main/java/org/apache/servicecomb/bizkeeper/HystrixCommandPropertiesExt.java
+================================================================
+This product bundles files from Hystrix which is licensed under the Apache License v2.
+For details, see https://github.com/Netflix/Hystrix
diff --git a/docs/NOTICE b/docs/NOTICE
new file mode 100644
index 000000000..03549d5b7
--- /dev/null
+++ b/docs/NOTICE
@@ -0,0 +1,5 @@
+Apache ServiceComb Java Chassis
+Copyright 2017-2018 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 000000000..f29b1ebf3
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,74 @@
+# Java Chassis
+[](https://travis-ci.org/apache/incubator-servicecomb-java-chassis?branch=master) [](https://coveralls.io/github/apache/incubator-servicecomb-java-chassis?branch=master) [](http://search.maven.org/#search%7Cga%7C1%7Corg.apache.servicecomb) [](https://www.apache.org/licenses/LICENSE-2.0.html)
+
+Apache ServiceComb (incubating) Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management features
+
+## Quick Start
+
+Provider service:
+```java
+import org.apache.servicecomb.*;
+@RpcSchema(schemaId = "helloworld")
+public class HelloWorldProvider implements HelloWorld {
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+}
+```
+
+Consumer service:
+```java
+import org.apache.servicecomb.*;
+@Component
+public class HelloWorldConsumer {
+ @RpcReference(microserviceName = "pojo", schemaId = "helloworld")
+ private static HelloWorld helloWorld;
+
+ public static void main(String[] args) {
+ helloWorld.sayHello("Tank");
+ }
+}
+```
+
+## Documentation
+
+Project documentation is available on the [ServiceComb website][servicecomb-website].
+
+[servicecomb-website]: http://servicecomb.incubator.apache.org/
+
+## Building
+
+You don’t need to build from source to use Java Chassis (binaries in apache nexus ), but if you want to try out the latest and greatest, Java Chassis can be easily built with the maven. You also need JDK 1.8.
+
+ mvn clean install
+
+If you want to build the release kits from the source
+
+ mvn clean install -Prelease,distribution
+
+The first build may take a longer than expected as Maven downloads all the dependencies.
+
+## Automated Testing
+
+ To build the docker image and run the integration tests with docker, you can use maven docker profile
+
+ mvn clean install -Pdocker -Pit
+
+ If you are using docker machine, please use the following command
+
+ mvn clean install -Pdocker -Pit -Pdocker-machine
+
+## Contact
+
+Bugs: [issues](https://issues.apache.org/jira/browse/SCB)
+
+mailing list: [subscribe](mailto:dev-subscribe@servicecomb.incubator.apache.org) [dev](https://lists.apache.org/list.html?dev@servicecomb.apache.org)
+
+
+## Contributing
+
+See CONTRIBUTING for details on submitting patches and the contribution workflow.
+
+## Reporting Issues
+
+See reporting bugs for details about reporting any issues.
diff --git a/docs-source/en_US/.gitignore b/docs/en_US/.gitignore
similarity index 100%
rename from docs-source/en_US/.gitignore
rename to docs/en_US/.gitignore
diff --git a/docs-source/en_US/README.md b/docs/en_US/README.md
similarity index 100%
rename from docs-source/en_US/README.md
rename to docs/en_US/README.md
diff --git a/docs-source/en_US/assets/Versions.png b/docs/en_US/assets/Versions.png
similarity index 100%
rename from docs-source/en_US/assets/Versions.png
rename to docs/en_US/assets/Versions.png
diff --git a/docs-source/en_US/assets/deployment.png b/docs/en_US/assets/deployment.png
similarity index 100%
rename from docs-source/en_US/assets/deployment.png
rename to docs/en_US/assets/deployment.png
diff --git a/docs-source/en_US/assets/env.PNG b/docs/en_US/assets/env.PNG
similarity index 100%
rename from docs-source/en_US/assets/env.PNG
rename to docs/en_US/assets/env.PNG
diff --git a/docs-source/en_US/assets/metrics/logicDiagram.png b/docs/en_US/assets/metrics/logicDiagram.png
similarity index 100%
rename from docs-source/en_US/assets/metrics/logicDiagram.png
rename to docs/en_US/assets/metrics/logicDiagram.png
diff --git a/docs-source/en_US/assets/reactive.png b/docs/en_US/assets/reactive.png
similarity index 100%
rename from docs-source/en_US/assets/reactive.png
rename to docs/en_US/assets/reactive.png
diff --git a/docs-source/en_US/assets/reactive/nestedSync.png b/docs/en_US/assets/reactive/nestedSync.png
similarity index 100%
rename from docs-source/en_US/assets/reactive/nestedSync.png
rename to docs/en_US/assets/reactive/nestedSync.png
diff --git a/docs-source/en_US/assets/reactive/normalSync.png b/docs/en_US/assets/reactive/normalSync.png
similarity index 100%
rename from docs-source/en_US/assets/reactive/normalSync.png
rename to docs/en_US/assets/reactive/normalSync.png
diff --git a/docs-source/en_US/assets/reactive/pureReactive.png b/docs/en_US/assets/reactive/pureReactive.png
similarity index 100%
rename from docs-source/en_US/assets/reactive/pureReactive.png
rename to docs/en_US/assets/reactive/pureReactive.png
diff --git a/docs-source/en_US/assets/reactive/wrongSyncOptimization.png b/docs/en_US/assets/reactive/wrongSyncOptimization.png
similarity index 100%
rename from docs-source/en_US/assets/reactive/wrongSyncOptimization.png
rename to docs/en_US/assets/reactive/wrongSyncOptimization.png
diff --git a/docs-source/en_US/assets/sc-meta.png b/docs/en_US/assets/sc-meta.png
similarity index 100%
rename from docs-source/en_US/assets/sc-meta.png
rename to docs/en_US/assets/sc-meta.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-001.png b/docs/en_US/assets/spring-cloud-integration-001.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-001.png
rename to docs/en_US/assets/spring-cloud-integration-001.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-002.png b/docs/en_US/assets/spring-cloud-integration-002.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-002.png
rename to docs/en_US/assets/spring-cloud-integration-002.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-003.png b/docs/en_US/assets/spring-cloud-integration-003.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-003.png
rename to docs/en_US/assets/spring-cloud-integration-003.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-004.png b/docs/en_US/assets/spring-cloud-integration-004.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-004.png
rename to docs/en_US/assets/spring-cloud-integration-004.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-005.png b/docs/en_US/assets/spring-cloud-integration-005.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-005.png
rename to docs/en_US/assets/spring-cloud-integration-005.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-006.png b/docs/en_US/assets/spring-cloud-integration-006.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-006.png
rename to docs/en_US/assets/spring-cloud-integration-006.png
diff --git a/docs-source/en_US/assets/spring-cloud-integration-007.png b/docs/en_US/assets/spring-cloud-integration-007.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud-integration-007.png
rename to docs/en_US/assets/spring-cloud-integration-007.png
diff --git a/docs-source/en_US/assets/spring-cloud.png b/docs/en_US/assets/spring-cloud.png
similarity index 100%
rename from docs-source/en_US/assets/spring-cloud.png
rename to docs/en_US/assets/spring-cloud.png
diff --git a/docs-source/en_US/assets/threadPool.png b/docs/en_US/assets/threadPool.png
similarity index 100%
rename from docs-source/en_US/assets/threadPool.png
rename to docs/en_US/assets/threadPool.png
diff --git a/docs-source/en_US/assets/using-java-chassis-in-spring-boot-001.png b/docs/en_US/assets/using-java-chassis-in-spring-boot-001.png
similarity index 100%
rename from docs-source/en_US/assets/using-java-chassis-in-spring-boot-001.png
rename to docs/en_US/assets/using-java-chassis-in-spring-boot-001.png
diff --git a/docs-source/en_US/assets/using-java-chassis-in-spring-boot-002.png b/docs/en_US/assets/using-java-chassis-in-spring-boot-002.png
similarity index 100%
rename from docs-source/en_US/assets/using-java-chassis-in-spring-boot-002.png
rename to docs/en_US/assets/using-java-chassis-in-spring-boot-002.png
diff --git a/docs-source/en_US/assets/workFlow.png b/docs/en_US/assets/workFlow.png
similarity index 100%
rename from docs-source/en_US/assets/workFlow.png
rename to docs/en_US/assets/workFlow.png
diff --git a/docs/en_US/build-consumer/circuit-breaker.html b/docs/en_US/build-consumer/circuit-breaker.html
new file mode 100644
index 000000000..745fb9657
--- /dev/null
+++ b/docs/en_US/build-consumer/circuit-breaker.html
@@ -0,0 +1,1202 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>熔断策略 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="flow-control.html" />
+
+
+ <link rel="prev" href="instance-isolation.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >熔断策略</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>熔断策略是对ServiceComb熔断功能的设置,用户通过配置熔断策略可以指定在何种条件下ServiceComb框架将终止发送请求。</p>
+<h2 id="配置说明">配置说明</h2>
+<p>熔断作为异常反应机制是降级策略的一部分,相关概念还有隔离和容错。三者的关系以及配置方式参见<a href="../build-provider/configuration/downgrade-strategy.html">降级策略</a>。</p>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="instance-isolation.html" class="navigation navigation-prev " aria-label="Previous page: 实例级故障隔离">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="flow-control.html" class="navigation navigation-next " aria-label="Next page: 限流策略">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"熔断策略","level":"1.4.4.2","depth":3,"next":{"title":"限流策略","level":"1.4.4.3","depth":3,"path":"build-consumer/flow-control.md","ref":"build-consumer/flow-control.md","articles":[]},"previous":{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"path":"build-consumer/instance-isolation.md","ref":"build-consumer/instance-isolation.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/circuit-breaker.md","mtime":"2018-05-16T09:41:23.106Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/circuit-breaker.md b/docs/en_US/build-consumer/circuit-breaker.md
similarity index 100%
rename from docs-source/en_US/build-consumer/circuit-breaker.md
rename to docs/en_US/build-consumer/circuit-breaker.md
diff --git a/docs-source/en_US/build-consumer/code-first.md b/docs/en_US/build-consumer/code-first.md
similarity index 100%
rename from docs-source/en_US/build-consumer/code-first.md
rename to docs/en_US/build-consumer/code-first.md
diff --git a/docs/en_US/build-consumer/develop-consumer-using-rpc.html b/docs/en_US/build-consumer/develop-consumer-using-rpc.html
new file mode 100644
index 000000000..31c437992
--- /dev/null
+++ b/docs/en_US/build-consumer/develop-consumer-using-rpc.html
@@ -0,0 +1,1222 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>使用RPC方式开发服务消费者 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="with-contract.html" />
+
+
+ <link rel="prev" href="using-resttemplate.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >使用RPC方式开发服务消费者</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="概念阐述">概念阐述</h2>
+<p>RPC开发方式允许用户通过在服务接口上标注注解来生成服务提供者代理,从而进行服务的调用。</p>
+<h2 id="示例代码">示例代码</h2>
+<p>只需要声明一个服务接口类型的成员,并且使用@RpcReference标注该成员,声明依赖的微服务及schemaId,即可进行服务调用,示例代码如下:</p>
+<pre><code class="lang-java"><span class="hljs-meta">@Component</span>
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CodeFirstConsumerMain</span> </span>{
+ <span class="hljs-meta">@RpcReference</span>(microserviceName = <span class="hljs-string">"codefirst"</span>, schemaId = <span class="hljs-string">"codeFirstHello"</span>)
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> Hello hello;
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception </span>{
+ init();
+ System.out.println(hello.sayHi(<span class="hljs-string">"Java Chassis"</span>));
+ Person person = <span class="hljs-keyword">new</span> Person();
+ person.setName(<span class="hljs-string">"ServiceComb/Java Chassis"</span>);
+ System.out.println(hello.sayHello(person));
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init</span><span class="hljs-params">()</span> <span class="hljs-keyword">throws</span> Exception </span>{
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+</code></pre>
+<p>在以上代码中,服务消费者已经取得了服务提供者的服务接口<code>Hello</code>,并在代码中声明一个<code>Hello</code>类型的成员。通过在<code>hello</code>上使用<code>@RPCReference</code>注解指明微服务名称和schemaId,ServiceComb框架可以在程序启动时从服务中心获取到对应的服务提供者实例信息,并且生成一个代理注入到hello中,用户可以像调用本地类一样调用远程服务。</p>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="using-resttemplate.html" class="navigation navigation-prev " aria-label="Previous page: 使用RestTemplate开发服务消费者">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="with-contract.html" class="navigation navigation-next " aria-label="Next page: 使用服务契约">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"使用RPC方式开发服务消费者","level":"1.4.2","depth":2,"next":{"title":"使用服务契约","level":"1.4.3","depth":2,"path":"build-consumer/with-contract.md","ref":"build-consumer/with-contract.md","articles":[]},"previous":{"title":"使用RestTemplate开发服务消费者","level":"1.4.1","depth":2,"path":"build-consumer/using-resttemplate.md","ref":"build-consumer/using-resttemplate.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/develop-consumer-using-rpc.md","mtime":"2018-05-16T09:41:23.110Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/develop-consumer-using-rpc.md b/docs/en_US/build-consumer/develop-consumer-using-rpc.md
similarity index 100%
rename from docs-source/en_US/build-consumer/develop-consumer-using-rpc.md
rename to docs/en_US/build-consumer/develop-consumer-using-rpc.md
diff --git a/docs-source/en_US/build-consumer/diao-yong-kong-zhi.md b/docs/en_US/build-consumer/diao-yong-kong-zhi.md
similarity index 100%
rename from docs-source/en_US/build-consumer/diao-yong-kong-zhi.md
rename to docs/en_US/build-consumer/diao-yong-kong-zhi.md
diff --git a/docs/en_US/build-consumer/fault-injection.html b/docs/en_US/build-consumer/fault-injection.html
new file mode 100644
index 000000000..25b7ccf29
--- /dev/null
+++ b/docs/en_US/build-consumer/fault-injection.html
@@ -0,0 +1,1350 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>故障注入 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="../catalog/general-develop.html" />
+
+
+ <link rel="prev" href="flow-control.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >故障注入</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>用户在consumer端使用故障注入,可以设置发往指定微服务的请求的时延和错误及其触发概率。</p>
+<h2 id="注意事项">注意事项</h2>
+<p>延迟注入请求的延迟时间统一为毫秒级别</p>
+<h2 id="配置说明">配置说明</h2>
+<p>故障注入配置在microservice.yaml文件中,相关配置项见下表。要开启服务消费者端的故障注入,还需要在处理链中配置消费端故障注入handler,配置示例如下:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> handler:</span>
+<span class="hljs-attr"> chain:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> default:</span> loadbalance,fault-injection-consumer
+</code></pre>
+<p>故障注入配置项说明</p>
+<p>[scope]代表故障注入的生效范围,可配置值包括全局配置_global,或指定微服务的服务名[ServiceName]。</p>
+<p>[protocol]代表使用的通信协议,可配置值包括rest或highway。</p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">是否必选</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">注意</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[scope].policy.fault.protocols.[protocol].delay.fixedDelay</td>
+<td style="text-align:left">无</td>
+<td style="text-align:left">(0,9223372036854775807],长整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送延迟注入请求的延迟时间</td>
+<td style="text-align:left">目前时间单位是毫秒</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[scope].policy.fault.protocols.[protocol].delay.percent</td>
+<td style="text-align:left">100</td>
+<td style="text-align:left">(0,100],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送延迟注入请求的触发概率</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].policy.fault.protocols.[protocol].delay.fixedDelay</td>
+<td style="text-align:left">无</td>
+<td style="text-align:left">(0,9223372036854775807],长整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应schema的延迟注入请求的延迟时间</td>
+<td style="text-align:left">支持schema级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].policy.fault.protocols.[protocol].delay.percent</td>
+<td style="text-align:left">100</td>
+<td style="text-align:left">(0,100],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应schema的延迟注入请求的触发概率</td>
+<td style="text-align:left">支持schema级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].operations.[operation].policy.fault.protocols.[protocol].delay.fixedDelay</td>
+<td style="text-align:left">无</td>
+<td style="text-align:left">(0,9223372036854775807],长整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应operation的延迟注入请求的延迟时间</td>
+<td style="text-align:left">支持operation级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].operations.[operation].policy.fault.protocols.[protocol].delay.percent</td>
+<td style="text-align:left">100</td>
+<td style="text-align:left">(0,100],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应operation的延迟注入请求的触发概率</td>
+<td style="text-align:left">支持operation级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[scope].policy.fault.protocols.[protocol].abort.httpStatus</td>
+<td style="text-align:left">无</td>
+<td style="text-align:left">(100,999],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送错误注入请求的http错误码</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[scope].policy.fault.protocols.[protocol].abort.percent</td>
+<td style="text-align:left">100</td>
+<td style="text-align:left">(0,100],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送错误注入请求的触发概率</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].policy.fault.protocols.[protocol].abort.httpStatus</td>
+<td style="text-align:left">无</td>
+<td style="text-align:left">(100,999],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应schema的错误注入请求的http错误码</td>
+<td style="text-align:left">支持schema级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].policy.fault.protocols.[protocol].abort.percent</td>
+<td style="text-align:left">100</td>
+<td style="text-align:left">(0,100],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应schema的错误注入请求的触发概率</td>
+<td style="text-align:left">支持schema级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].operations.[operation].policy.fault.protocols.[protocol].abort.httpStatus</td>
+<td style="text-align:left">无</td>
+<td style="text-align:left">(100,999],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应operation的错误注入请求的http错误码</td>
+<td style="text-align:left">支持operation级别的配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.governance.Consumer.[ServiceName].schemas.[schema].operations.[operation].policy.fault.protocols.[protocol].abort.percent</td>
+<td style="text-align:left">100</td>
+<td style="text-align:left">(0,100],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">Consumer端发送到对应operation的错误注入请求的触发概率</td>
+<td style="text-align:left">支持operation级别的配置</td>
+</tr>
+</tbody>
+</table>
+<h2 id="示例代码">示例代码</h2>
+<pre><code>servicecomb:
+ governance:
+ Consumer:
+ _global:
+ policy:
+ fault:
+ protocols:
+ rest:
+ delay:
+ fixedDelay: 5000
+ percent: 10
+</code></pre><pre><code>servicecomb:
+ governance:
+ Consumer:
+ ServerFaultTest:
+ schemas:
+ schema:
+ operations:
+ operation:
+ policy:
+ fault:
+ protocols:
+ rest:
+ abort:
+ httpStatus: 421
+ percent: 100
+</code></pre>
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="flow-control.html" class="navigation navigation-prev " aria-label="Previous page: 限流策略">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="../catalog/general-develop.html" class="navigation navigation-next " aria-label="Next page: 通用开发">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"故障注入","level":"1.4.4.4","depth":3,"next":{"title":"通用开发","level":"1.5","depth":1,"path":"catalog/general-develop.md","ref":"catalog/general-develop.md","articles":[{"title":"应用性能监控","level":"1.5.1","depth":2,"path":"general-development/metrics.md","ref":"general-development/metrics.md","articles":[]},{"title":"微服务调用链","level":"1.5.2","depth":2,"path":"general-development/microservice-invocation-chain.md","ref":"general-development/microservice-invocation-chain.md","articles":[]},{"title":"自定义调用链打点","level":"1.5.3","depth":2,"path":"general-development/customized-tracing.md","ref":"general-development/customized-tracing.md","articles":[]},{"title":"本地开发和测试","level":"1.5.4","depth":2,"path":"general-development/local-develop-test.md","ref":"general-development/local-develop-test.md","articles":[]},{"title":"访问服务中心","level":"1.5.5","depth":2,"path":"general-development/visit-sc.md","ref":"general-development/visit-sc.md","articles":[]},{"title":"Http Filter","level":"1.5.6","depth":2,"path":"general-development/http-filter.md","ref":"general-development/http-filter.md","articles":[]},{"title":"文件上传","level":"1.5.7","depth":2,"path":"general-development/file-upload.md","ref":"general-development/file-upload.md","articles":[]},{"title":"文件下载","level":"1.5.8","depth":2,"path":"general-development/file-download.md","ref":"general-development/file-download.md","articles":[]},{"title":"Reactive","level":"1.5.9","depth":2,"path":"general-development/reactive.md","ref":"general-development/reactive.md","articles":[]},{"title":"DNS自定义配置","level":"1.5.10","depth":2,"path":"general-development/dnsconfig.md","ref":"general-development/dnsconfig.md","articles":[]},{"title":"代理设置","level":"1.5.11","depth":2,"path":"general-development/dai-li-she-zhi.md","ref":"general-development/dai-li-she-zhi.md","articles":[]},{"title":"框架上报版本号","level":"1.5.12","depth":2,"path":"general-development/report-framework-version.md","ref":"general-development/report-framework-version.md","articles":[]}]},"previous":{"title":"限流策略","level":"1.4.4.3","depth":3,"path":"build-consumer/flow-control.md","ref":"build-consumer/flow-control.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/fault-injection.md","mtime":"2018-05-16T09:41:23.113Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/fault-injection.md b/docs/en_US/build-consumer/fault-injection.md
similarity index 100%
rename from docs-source/en_US/build-consumer/fault-injection.md
rename to docs/en_US/build-consumer/fault-injection.md
diff --git a/docs/en_US/build-consumer/flow-control.html b/docs/en_US/build-consumer/flow-control.html
new file mode 100644
index 000000000..432614a78
--- /dev/null
+++ b/docs/en_US/build-consumer/flow-control.html
@@ -0,0 +1,1241 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>限流策略 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="fault-injection.html" />
+
+
+ <link rel="prev" href="circuit-breaker.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >限流策略</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>用户在consumer端使用限流策略,可以限制发往指定微服务的请求的频率。</p>
+<h2 id="注意事项">注意事项</h2>
+<p>参考3.7.2-限流策略。</p>
+<h2 id="配置说明">配置说明</h2>
+<p>限流策略配置在microservice.yaml文件中,相关配置项见下表。要开启服务消费者端的限流策略,还需要在处理链中配置消费端限流handler,配置示例如下:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> handler:</span>
+<span class="hljs-attr"> chain:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> default:</span> qps-flowcontrol-consumer
+</code></pre>
+<p>QPS流控配置项说明</p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">是否必选</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">注意</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.flowcontrol.Consumer.qps.enabled</td>
+<td style="text-align:left">true</td>
+<td style="text-align:left">Boolean</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否启用Consumer流控</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.flowcontrol.Consumer.qps.limit.[ServiceName].[Schema].[operation]</td>
+<td style="text-align:left">2147483647 (max int)</td>
+<td style="text-align:left">(0,2147483647],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">每秒钟允许的请求数</td>
+<td style="text-align:left">支持microservice、schema、operation三个级别的配置</td>
+</tr>
+</tbody>
+</table>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="circuit-breaker.html" class="navigation navigation-prev " aria-label="Previous page: 熔断策略">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="fault-injection.html" class="navigation navigation-next " aria-label="Next page: 故障注入">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"限流策略","level":"1.4.4.3","depth":3,"next":{"title":"故障注入","level":"1.4.4.4","depth":3,"path":"build-consumer/fault-injection.md","ref":"build-consumer/fault-injection.md","articles":[]},"previous":{"title":"熔断策略","level":"1.4.4.2","depth":3,"path":"build-consumer/circuit-breaker.md","ref":"build-consumer/circuit-breaker.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/flow-control.md","mtime":"2018-05-16T09:41:23.115Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/flow-control.md b/docs/en_US/build-consumer/flow-control.md
similarity index 100%
rename from docs-source/en_US/build-consumer/flow-control.md
rename to docs/en_US/build-consumer/flow-control.md
diff --git a/docs/en_US/build-consumer/instance-isolation.html b/docs/en_US/build-consumer/instance-isolation.html
new file mode 100644
index 000000000..5913b67dd
--- /dev/null
+++ b/docs/en_US/build-consumer/instance-isolation.html
@@ -0,0 +1,1267 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>实例级故障隔离 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="circuit-breaker.html" />
+
+
+ <link rel="prev" href="invoke-control.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter active" data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >实例级故障隔离</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>实例级故障隔离功能允许在微服务的部分实例调用失败时,停止向故障实例发送请求,从而达到隔离故障实例的功能。</p>
+<h2 id="配置说明">配置说明</h2>
+<p>实例级故障隔离功能集成在负载均衡功能中,负载均衡策略的配置见<a href="../build-provider/configuration/lb-strategy.html">负载均衡策略</a>。负载均衡策略中,与实例级故障隔离相关的配置项见下表。</p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">是否必选</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">注意</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.enabled</td>
+<td style="text-align:left">false</td>
+<td style="text-align:left">Boolean</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否开启故障实例隔离功能</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.continuousFailureThreshold</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">当请求实例连续出错达到此阈值时触发实例隔离</td>
+<td style="text-align:left">若配置了此项则覆盖实例故障百分比的配置,否则按照实例故障百分比触发隔离。<br>由于按请求错误率触发实例隔离在请求次数较多时不易触发也不易恢复,因此建议使用此配置项代替实例故障百分比配置。<br>请求实例成功时会将连续错误次数请零以保证实例快速恢复。</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.enableRequestThreshold</td>
+<td style="text-align:left">20</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">当实例的调用总次数达到该值时开始进入隔离逻辑门槛</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.errorThresholdPercentage</td>
+<td style="text-align:left">20</td>
+<td style="text-align:left">Integer,区间为(0,100]</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">实例故障隔离错误百分比</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.singleTestTime</td>
+<td style="text-align:left">10000</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">故障实例单点测试时间</td>
+<td style="text-align:left">-</td>
+</tr>
+</tbody>
+</table>
+<h2 id="示例代码">示例代码</h2>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+ <span class="hljs-comment"># other configuration omitted</span>
+<span class="hljs-attr"> loadbalance:</span>
+<span class="hljs-attr"> isolation:</span>
+<span class="hljs-attr"> enabled:</span> <span class="hljs-literal">true</span>
+<span class="hljs-attr"> singleTestTime:</span> <span class="hljs-number">5000</span>
+<span class="hljs-attr"> continuousFailureThreshold:</span> <span class="hljs-number">5</span> <span class="hljs-comment"># 调用某实例连续5次出错则隔离此实例</span>
+<span class="hljs-attr"> strategy:</span>
+<span class="hljs-attr"> name:</span> RoundRobin
+</code></pre>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="invoke-control.html" class="navigation navigation-prev " aria-label="Previous page: 调用控制">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="circuit-breaker.html" class="navigation navigation-next " aria-label="Next page: 熔断策略">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"next":{"title":"熔断策略","level":"1.4.4.2","depth":3,"path":"build-consumer/circuit-breaker.md","ref":"build-consumer/circuit-breaker.md","articles":[]},"previous":{"title":"调用控制","level":"1.4.4","depth":2,"path":"build-consumer/invoke-control.md","ref":"build-consumer/invoke-control.md","articles":[{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"path":"build-consumer/instance-isolation.md","ref":"build-consumer/instance-isolation.md","articles":[]},{"title":"熔断策略","level":"1.4.4.2","depth":3,"path":"build-consumer/circuit-breaker.md","ref":"build-consumer/circuit-breaker.md","articles":[]},{"title":"限流策略","level":"1.4.4.3","depth":3,"path":"build-consumer/flow-control.md","ref":"build-consumer/flow-control.md","articles":[]},{"title":"故障注入","level":"1.4.4.4","depth":3,"path":"build-consumer/fault-injection.md","ref":"build-consumer/fault-injection.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/instance-isolation.md","mtime":"2018-05-16T09:41:23.117Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/instance-isolation.md b/docs/en_US/build-consumer/instance-isolation.md
similarity index 100%
rename from docs-source/en_US/build-consumer/instance-isolation.md
rename to docs/en_US/build-consumer/instance-isolation.md
diff --git a/docs/en_US/build-consumer/invoke-control.html b/docs/en_US/build-consumer/invoke-control.html
new file mode 100644
index 000000000..fc5f545ef
--- /dev/null
+++ b/docs/en_US/build-consumer/invoke-control.html
@@ -0,0 +1,1198 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>调用控制 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="instance-isolation.html" />
+
+
+ <link rel="prev" href="with-contract.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >调用控制</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="with-contract.html" class="navigation navigation-prev " aria-label="Previous page: 使用服务契约">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="instance-isolation.html" class="navigation navigation-next " aria-label="Next page: 实例级故障隔离">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"调用控制","level":"1.4.4","depth":2,"next":{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"path":"build-consumer/instance-isolation.md","ref":"build-consumer/instance-isolation.md","articles":[]},"previous":{"title":"使用服务契约","level":"1.4.3","depth":2,"path":"build-consumer/with-contract.md","ref":"build-consumer/with-contract.md","articles":[]},"dir":"neutral"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/invoke-control.md","mtime":"2018-05-16T09:41:23.118Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/invoke-control.md b/docs/en_US/build-consumer/invoke-control.md
similarity index 100%
rename from docs-source/en_US/build-consumer/invoke-control.md
rename to docs/en_US/build-consumer/invoke-control.md
diff --git a/docs/en_US/build-consumer/using-resttemplate.html b/docs/en_US/build-consumer/using-resttemplate.html
new file mode 100644
index 000000000..10086bfab
--- /dev/null
+++ b/docs/en_US/build-consumer/using-resttemplate.html
@@ -0,0 +1,1233 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>使用RestTemplate开发服务消费者 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="develop-consumer-using-rpc.html" />
+
+
+ <link rel="prev" href="../catalog/build-consumer.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter active" data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >使用RestTemplate开发服务消费者</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="概念阐述">概念阐述</h2>
+<p>RestTemplate是Spring提供的RESTful访问接口,ServiceComb提供该接口的实现类用于服务的调用。</p>
+<h2 id="场景描述">场景描述</h2>
+<p>用户使用ServiceComb提供的RestTemplate实例,可以使用自定义的URL进行服务调用,而不用关心服务的具体地址。</p>
+<h2 id="示例代码">示例代码</h2>
+<p>RestTemplate实例通过调用<code>RestTemplateBuilder.create()</code>方法获取,再使用该实例通过自定义的URL进行服务调用,代码如下:</p>
+<pre><code class="lang-java"><span class="hljs-meta">@Component</span>
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">SpringmvcConsumerMain</span> </span>{
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> RestTemplate restTemplate = RestTemplateBuilder.create();
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception </span>{
+ init();
+ Person person = <span class="hljs-keyword">new</span> Person();
+ person.setName(<span class="hljs-string">"ServiceComb/Java Chassis"</span>);
+ String sayHiResult = restTemplate
+ .postForObject(<span class="hljs-string">"cse://springmvc/springmvchello/sayhi?name=Java Chassis"</span>, <span class="hljs-keyword">null</span>, String.class);
+ String sayHelloResult = restTemplate
+ .postForObject(<span class="hljs-string">"cse://springmvc/springmvchello/sayhello"</span>, person, String.class);
+ System.out.println(<span class="hljs-string">"RestTemplate consumer sayhi services: "</span> + sayHiResult);
+ System.out.println(<span class="hljs-string">"RestTemplate consumer sayhello services: "</span> + sayHelloResult);
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">init</span><span class="hljs-params">()</span> <span class="hljs-keyword">throws</span> Exception </span>{
+ Log4jUtils.init();
+ BeanUtils.init();
+ }
+}
+</code></pre>
+<blockquote>
+<p>说明:</p>
+<ul>
+<li>URL格式为:<code>cse://microserviceName/path?querystring</code>。以<a href="../用SpringMVC开发微服务">用SpringMVC开发微服务</a>中定义的服务提供者为例,其微服务名称是springmvc,basePath是<code>/springmvchello</code>,那么URL中的microserviceName=<code>springmvc</code>,请求sayhi时的path=<code>springmvchello/sayhi</code>,所以示例代码中请求sayhi的URL是<code>cse://springmvc/springmvchello/sayhi?name=Java Chassis</code>。</li>
+<li>使用这种URL格式,ServiceComb框架会在内部进行服务发现、熔断容错等处理并最终将请求发送到服务提供者。</li>
+</ul>
+</blockquote>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="../catalog/build-consumer.html" class="navigation navigation-prev " aria-label="Previous page: 开发服务消费者">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="develop-consumer-using-rpc.html" class="navigation navigation-next " aria-label="Next page: 使用RPC方式开发服务消费者">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"使用RestTemplate开发服务消费者","level":"1.4.1","depth":2,"next":{"title":"使用RPC方式开发服务消费者","level":"1.4.2","depth":2,"path":"build-consumer/develop-consumer-using-rpc.md","ref":"build-consumer/develop-consumer-using-rpc.md","articles":[]},"previous":{"title":"开发服务消费者","level":"1.4","depth":1,"path":"catalog/build-consumer.md","ref":"catalog/build-consumer.md","articles":[{"title":"使用RestTemplate开发服务消费者","level":"1.4.1","depth":2,"path":"build-consumer/using-resttemplate.md","ref":"build-consumer/using-resttemplate.md","articles":[]},{"title":"使用RPC方式开发服务消费者","level":"1.4.2","depth":2,"path":"build-consumer/develop-consumer-using-rpc.md","ref":"build-consumer/develop-consumer-using-rpc.md","articles":[]},{"title":"使用服务契约","level":"1.4.3","depth":2,"path":"build-consumer/with-contract.md","ref":"build-consumer/with-contract.md","articles":[]},{"title":"调用控制","level":"1.4.4","depth":2,"path":"build-consumer/invoke-control.md","ref":"build-consumer/invoke-control.md","articles":[{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"path":"build-consumer/instance-isolation.md","ref":"build-consumer/instance-isolation.md","articles":[]},{"title":"熔断策略","level":"1.4.4.2","depth":3,"path":"build-consumer/circuit-breaker.md","ref":"build-consumer/circuit-breaker.md","articles":[]},{"title":"限流策略","level":"1.4.4.3","depth":3,"path":"build-consumer/flow-control.md","ref":"build-consumer/flow-control.md","articles":[]},{"title":"故障注入","level":"1.4.4.4","depth":3,"path":"build-consumer/fault-injection.md","ref":"build-consumer/fault-injection.md","articles":[]}]}]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/using-resttemplate.md","mtime":"2018-05-16T09:41:23.120Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/using-resttemplate.md b/docs/en_US/build-consumer/using-resttemplate.md
similarity index 100%
rename from docs-source/en_US/build-consumer/using-resttemplate.md
rename to docs/en_US/build-consumer/using-resttemplate.md
diff --git a/docs/en_US/build-consumer/with-contract.html b/docs/en_US/build-consumer/with-contract.html
new file mode 100644
index 000000000..0b5bbd4b3
--- /dev/null
+++ b/docs/en_US/build-consumer/with-contract.html
@@ -0,0 +1,1235 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>使用服务契约 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="invoke-control.html" />
+
+
+ <link rel="prev" href="develop-consumer-using-rpc.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../build-provider/definition/service-definition.html">
+
+ <a href="../build-provider/definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../build-provider/define-contract.html">
+
+ <a href="../build-provider/define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../build-provider/code-first.html">
+
+ <a href="../build-provider/code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../build-provider/swagger-annotation.html">
+
+ <a href="../build-provider/swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../build-provider/springmvc.html">
+
+ <a href="../build-provider/springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../build-provider/jaxrs.html">
+
+ <a href="../build-provider/jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../build-provider/transparent-rpc.html">
+
+ <a href="../build-provider/transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../build-provider/listen-address-and-publish-address.html">
+
+ <a href="../build-provider/listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../build-provider/interface-constraints.html">
+
+ <a href="../build-provider/interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../build-provider/service-configuration.html">
+
+ <a href="../build-provider/service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="../build-provider/configuration/lb-strategy.html">
+
+ <a href="../build-provider/configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="../build-provider/configuration/ratelimite-strategy.html">
+
+ <a href="../build-provider/configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="../build-provider/configuration/downgrade-strategy.html">
+
+ <a href="../build-provider/configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="../build-provider/configuration/parameter-validator.html">
+
+ <a href="../build-provider/configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../build-provider/protocol.html">
+
+ <a href="../build-provider/protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../build-provider/protocol/thread-model.html">
+
+ <a href="../build-provider/protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../build-provider/protocol/rest-over-servlet.html">
+
+ <a href="../build-provider/protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../build-provider/protocol/rest-over-vertx.html">
+
+ <a href="../build-provider/protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../build-provider/protocol/highway-rpc.html">
+
+ <a href="../build-provider/protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../build-provider/bootup.html">
+
+ <a href="../build-provider/bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../build-provider/definition/isolate-relationship.html">
+
+ <a href="../build-provider/definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../build-provider/access-log-configuration.html">
+
+ <a href="../build-provider/access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="using-resttemplate.html">
+
+ <a href="using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="develop-consumer-using-rpc.html">
+
+ <a href="develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.4.3" data-path="with-contract.html">
+
+ <a href="with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="invoke-control.html">
+
+ <a href="invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="instance-isolation.html">
+
+ <a href="instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="circuit-breaker.html">
+
+ <a href="circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="flow-control.html">
+
+ <a href="flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="fault-injection.html">
+
+ <a href="fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >使用服务契约</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>当服务消费者调用服务提供者的服务时,需要注册服务契约。消费者有两种方式获取提供者的服务契约,一种是从服务的提供方离线获取契约文件,手工配置到项目中;另一种是从服务中心自动下载契约。</p>
+<h2 id="配置说明">配置说明</h2>
+<blockquote>
+<p>说明:服务契约的获取方式与服务消费者的开发方式是无关的,用户可以任意组合使用。</p>
+</blockquote>
+<h3 id="配置依赖服务">配置依赖服务</h3>
+<p>服务消费者需要在microservice.yaml文件中配置依赖的provider,示例配置如下:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+ <span class="hljs-comment"># other configurations omitted</span>
+<span class="hljs-attr"> references:</span>
+<span class="hljs-attr"> springmvc:</span>
+<span class="hljs-attr"> version-rule:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.1</span>
+</code></pre>
+<blockquote>
+<p>version-rule是版本匹配规则,有四种格式:</p>
+<ul>
+<li>精确版本匹配:例如<code>version-rule: 0.0.1</code>,表示只匹配版本号为0.0.1的服务提供者</li>
+<li>后续版本匹配:例如<code>version-rule: 1.0.0+</code>,表示匹配版本号大于或等于1.0.0的服务提供者</li>
+<li>最新版本:<code>version-rule: latest</code>,表示匹配最新版本的服务提供者</li>
+<li>版本范围:例如<code>1.0.0-2.0.2</code>,表示匹配版本号在1.0.0至2.0.2之间的服务提供者,包含1.0.0和2.0.2</li>
+</ul>
+<p>此配置项默认为<code>latest</code></p>
+</blockquote>
+<h3 id="手工配置服务契约">手工配置服务契约</h3>
+<p>服务消费者的开发者在线下拿到服务提供者的契约,配置到消费者工程的特定目录下。服务契约在项目中的存放目录与<a href="../build-provider/define-contract.html">定义服务契约</a>的配置说明部分相同。</p>
+<p>microservice目录下的每一个目录代表一个微服务,微服务目录下的每一个yaml文件代表一个schema契约,文件名就是schemaId。applications目录下存放需要指明appId的服务契约,用于跨app调用等场景。目录结构如下所示:</p>
+<pre><code>resources
+ - microservices
+ - serviceName # 微服务名
+ - schemaId.yaml # schema接口的契约
+ - applications
+ - appId # 应用ID
+ - serviceName # 微服务名
+ - schemaId.yaml # schema接口的契约
+</code></pre><h3 id="从服务中心自动下载契约">从服务中心自动下载契约</h3>
+<p>服务消费者也可以不用显式地将契约存放在项目目录中,当程序启动时,ServiceComb框架会自动根据microservice.yaml文件中配置的服务提供者的微服务名称和版本号,从服务中心自动下载契约信息。</p>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="develop-consumer-using-rpc.html" class="navigation navigation-prev " aria-label="Previous page: 使用RPC方式开发服务消费者">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="invoke-control.html" class="navigation navigation-next " aria-label="Next page: 调用控制">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"使用服务契约","level":"1.4.3","depth":2,"next":{"title":"调用控制","level":"1.4.4","depth":2,"path":"build-consumer/invoke-control.md","ref":"build-consumer/invoke-control.md","articles":[{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"path":"build-consumer/instance-isolation.md","ref":"build-consumer/instance-isolation.md","articles":[]},{"title":"熔断策略","level":"1.4.4.2","depth":3,"path":"build-consumer/circuit-breaker.md","ref":"build-consumer/circuit-breaker.md","articles":[]},{"title":"限流策略","level":"1.4.4.3","depth":3,"path":"build-consumer/flow-control.md","ref":"build-consumer/flow-control.md","articles":[]},{"title":"故障注入","level":"1.4.4.4","depth":3,"path":"build-consumer/fault-injection.md","ref":"build-consumer/fault-injection.md","articles":[]}]},"previous":{"title":"使用RPC方式开发服务消费者","level":"1.4.2","depth":2,"path":"build-consumer/develop-consumer-using-rpc.md","ref":"build-consumer/develop-consumer-using-rpc.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-consumer/with-contract.md","mtime":"2018-05-16T09:41:23.122Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-consumer/with-contract.md b/docs/en_US/build-consumer/with-contract.md
similarity index 100%
rename from docs-source/en_US/build-consumer/with-contract.md
rename to docs/en_US/build-consumer/with-contract.md
diff --git a/docs/en_US/build-provider/access-log-configuration.html b/docs/en_US/build-provider/access-log-configuration.html
new file mode 100644
index 000000000..2df81fbc4
--- /dev/null
+++ b/docs/en_US/build-provider/access-log-configuration.html
@@ -0,0 +1,1493 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>Access Log配置 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="../catalog/build-consumer.html" />
+
+
+ <link rel="prev" href="definition/isolate-relationship.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="definition/service-definition.html">
+
+ <a href="definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="define-contract.html">
+
+ <a href="define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="code-first.html">
+
+ <a href="code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="swagger-annotation.html">
+
+ <a href="swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="springmvc.html">
+
+ <a href="springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="jaxrs.html">
+
+ <a href="jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="transparent-rpc.html">
+
+ <a href="transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="listen-address-and-publish-address.html">
+
+ <a href="listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="interface-constraints.html">
+
+ <a href="interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="service-configuration.html">
+
+ <a href="service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="configuration/lb-strategy.html">
+
+ <a href="configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="configuration/ratelimite-strategy.html">
+
+ <a href="configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="configuration/downgrade-strategy.html">
+
+ <a href="configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="configuration/parameter-validator.html">
+
+ <a href="configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="protocol.html">
+
+ <a href="protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="protocol/thread-model.html">
+
+ <a href="protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="protocol/rest-over-servlet.html">
+
+ <a href="protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="protocol/rest-over-vertx.html">
+
+ <a href="protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="protocol/highway-rpc.html">
+
+ <a href="protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="bootup.html">
+
+ <a href="bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="definition/isolate-relationship.html">
+
+ <a href="definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.3.14" data-path="access-log-configuration.html">
+
+ <a href="access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../build-consumer/using-resttemplate.html">
+
+ <a href="../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../build-consumer/with-contract.html">
+
+ <a href="../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../build-consumer/invoke-control.html">
+
+ <a href="../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../build-consumer/instance-isolation.html">
+
+ <a href="../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../build-consumer/circuit-breaker.html">
+
+ <a href="../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../build-consumer/flow-control.html">
+
+ <a href="../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../build-consumer/fault-injection.html">
+
+ <a href="../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >Access Log配置</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="概念阐述">概念阐述</h2>
+<p>ServiceComb提供了基于Vert.x的access log功能。当用户使用REST over Vertx通信方式时,可以通过简单的配置启用access log打印功能。</p>
+<h2 id="场景描述">场景描述</h2>
+<p>用户在调试服务时可能需要开启access log。在使用REST over servlet通信方式的情况下,可以使用web容器的access log功能;而在使用REST over Vertx通信方式的情况下,可以使用ServiceComb提供的一套access log功能。</p>
+<h2 id="配置说明">配置说明</h2>
+<h3 id="启用access-log">启用Access Log</h3>
+<p>用户需要在microservice.yaml文件中增加配置以启用access log,配置示例如下:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> accesslog:</span>
+<span class="hljs-attr"> enabled:</span> <span class="hljs-literal">true</span> <span class="hljs-comment">## 启用access log</span>
+</code></pre>
+<p><em><strong>Access log 配置项说明</strong></em></p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.accesslog.enabled</td>
+<td style="text-align:left">true/false</td>
+<td style="text-align:left">false</td>
+<td style="text-align:left">如果为true则启用access log,否则不启用</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.accesslog.pattern</td>
+<td style="text-align:left">表示打印格式的字符串</td>
+<td style="text-align:left">"%h - - %t %r %s %B"</td>
+<td style="text-align:left">配置项见<em><strong>日志元素说明表</strong></em></td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><em><strong>说明:</strong></em></p>
+<ul>
+<li>以上两个配置项均可省略,若省略则使用默认值。</li>
+</ul>
+</blockquote>
+<h3 id="日志格式配置">日志格式配置</h3>
+<p>目前可用的日志元素配置项见<em><strong>日志元素说明表</strong></em>。</p>
+<p><em><strong>日志元素说明表</strong></em></p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">元素名称</th>
+<th style="text-align:left">Apache日志格式</th>
+<th style="text-align:left">W3C日志格式</th>
+<th style="text-align:left">说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">Method</td>
+<td style="text-align:left">%m</td>
+<td style="text-align:left">cs-method</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Status</td>
+<td style="text-align:left">%s</td>
+<td style="text-align:left">sc-status</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Duration s</td>
+<td style="text-align:left">%T</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Duration ms</td>
+<td style="text-align:left">%D</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Remote Host</td>
+<td style="text-align:left">%h</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Local Host</td>
+<td style="text-align:left">%v</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Local port</td>
+<td style="text-align:left">%p</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Bytes Written v1</td>
+<td style="text-align:left">%B</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">如果消息体长度为零则打印"0"</td>
+</tr>
+<tr>
+<td style="text-align:left">Bytes Written v2</td>
+<td style="text-align:left">%b</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">如果消息体长度为零则打印"-"</td>
+</tr>
+<tr>
+<td style="text-align:left">First line of request</td>
+<td style="text-align:left">%r</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">包含HTTP Method、Uri、Http版本三部分内容</td>
+</tr>
+<tr>
+<td style="text-align:left">URI path only</td>
+<td style="text-align:left">%U</td>
+<td style="text-align:left">cs-uri-stem</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Query only</td>
+<td style="text-align:left">%q</td>
+<td style="text-align:left">cs-uri-query</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">URI path incl query</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">cs-uri</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Version / Protocol</td>
+<td style="text-align:left">%H</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">Datetime Apache</td>
+<td style="text-align:left">%t</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">按照默认设置打印时间戳,格式为"EEE, dd MMM yyyy HH:mm:ss zzz",语言为英文,时区为GMT</td>
+</tr>
+<tr>
+<td style="text-align:left">Datetime Apache Configurable v1</td>
+<td style="text-align:left">%{PATTERN}t</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">按照指定的格式打印时间戳,语言为英文,时区为GMT</td>
+</tr>
+<tr>
+<td style="text-align:left">Datetime Apache Configurable v2</td>
+<td style="text-align:left">%{PATTERN|TIMEZONE|LOCALE}t</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">按照指定的格式、语言、时区打印时间戳。允许省略其中的某部分配置(但两个分隔符号"|"不可省略)。</td>
+</tr>
+<tr>
+<td style="text-align:left">Incoming Headers</td>
+<td style="text-align:left">%{IDENTIFIER}i</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">如果没有找到指定的header,则打印"-"</td>
+</tr>
+<tr>
+<td style="text-align:left">Outgoing Response Headers</td>
+<td style="text-align:left">%{IDENTIFIER}o</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">如果没有找到指定的header,则打印"-"</td>
+</tr>
+<tr>
+<td style="text-align:left">Cookie</td>
+<td style="text-align:left">%{IDENTIFIER}c</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">如果没有找到指定的cookie,则打印"-"</td>
+</tr>
+<tr>
+<td style="text-align:left">TraceId</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">ServiceComb框架提供的TraceId打印元素,占位符格式为"%SCB-traceId"</td>
+</tr>
+</tbody>
+</table>
+<h3 id="日志输出文件配置">日志输出文件配置</h3>
+<p>Access log的日志打印实现框架默认采用Log4j,并提供了一套默认的日志文件配置。用户可以在自己定义的log4j.properties文件中覆写这些配置。用户可配置的日志文件配置项见下表。</p>
+<p><em><strong>日志文件配置项</strong></em></p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">paas.logs.accesslog.dir</td>
+<td style="text-align:left">${paas.logs.dir}</td>
+<td style="text-align:left">日志文件输出目录</td>
+<td style="text-align:left">与普通日志输出到同一个目录中</td>
+</tr>
+<tr>
+<td style="text-align:left">paas.logs.accesslog.file</td>
+<td style="text-align:left">access.log</td>
+<td style="text-align:left">日志文件名</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">log4j.appender.access.MaxBackupIndex</td>
+<td style="text-align:left">10</td>
+<td style="text-align:left">最大保存的日志滚动文件个数</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">log4j.appender.access.MaxFileSize</td>
+<td style="text-align:left">20MB</td>
+<td style="text-align:left">日志文件最大体积</td>
+<td style="text-align:left">正在记录的文件达到此大小时触发日志滚动存储</td>
+</tr>
+<tr>
+<td style="text-align:left">log4j.appender.access.logPermission</td>
+<td style="text-align:left">rw-------</td>
+<td style="text-align:left">日志文件权限</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><em><strong>注意:</strong></em><br>由于ServiceComb的日志打印功能只依赖slf4j的接口,因此用户可以选择其他日志打印框架,选择其他日志打印框架时需要用户自行配置日志文件输出选项。</p>
+</blockquote>
+<h3 id="日志实现框架切换为logback">日志实现框架切换为logback</h3>
+<blockquote>
+<p>针对采用logback作为日志打印框架的项目,需要将日志打印框架依赖从Log4j改为logback并添加部分配置以使access log功能正常生效。</p>
+</blockquote>
+<h4 id="1-排除log4j依赖">1. 排除Log4j依赖</h4>
+<p>在将日志实现框架切换为logback之前,需要检查项目的依赖,从中排除掉Log4j相关的依赖项。在项目中运行maven命令<code>dependency:tree</code>,找出其中依赖了Log4j的ServiceComb组件,在其<code><dependency></code>依赖项中添加如下配置:</p>
+<pre><code class="lang-xml"><span class="hljs-tag"><<span class="hljs-name">exclusion</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.slf4j<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>slf4j-log4j12<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">exclusion</span>></span>
+</code></pre>
+<h4 id="2-添加logback依赖">2. 添加logback依赖</h4>
+<p>在pom文件中添加logback的依赖项:</p>
+<pre><code class="lang-xml"><span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.slf4j<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>slf4j-api<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
+<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>ch.qos.logback<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>logback-classic<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
+<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>ch.qos.logback<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>logback-core<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
+</code></pre>
+<h4 id="3-配置access-log组件的logger">3. 配置access log组件的logger</h4>
+<p>由于ServiceComb提供的日志打印组件是获取名为<code>accesslog</code>的logger来打印access log的,因此将日志实现框架从Log4j切换为logback的关键就是提供一个名为<code>accesslog</code>,并为其配置好日志输出文件。以下是access log在logback配置文件中的配置示例(本示例仅展示access log相关的配置,其他日志配置均省略):</p>
+<pre><code class="lang-xml"><span class="php"><span class="hljs-meta"><?</span>xml version=<span class="hljs-string">"1.0"</span> encoding=<span class="hljs-string">"UTF-8"</span><span class="hljs-meta">?></span></span>
+<span class="hljs-tag"><<span class="hljs-name">configuration</span>></span>
+ <span class="hljs-comment"><!-- 用户可根据需要自定义appender --></span>
+ <span class="hljs-tag"><<span class="hljs-name">appender</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"ACCESSLOG"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"ch.qos.logback.core.rolling.RollingFileAppender"</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">file</span>></span>./logs/access.log<span class="hljs-tag"></<span class="hljs-name">file</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">rollingPolicy</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">fileNamePattern</span>></span>./logs/access-%d{yyyy-MM-dd}.log<span class="hljs-tag"></<span class="hljs-name">fileNamePattern</span>></span>
+ <span class="hljs-tag"></<span class="hljs-name">rollingPolicy</span>></span>
+ <span class="hljs-comment"><!-- 注意:由于access log的内容是在代码中完成格式化的,因此这里只需输出message即可,无需添加额外的格式 --></span>
+ <span class="hljs-tag"><<span class="hljs-name">encoder</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">pattern</span>></span>%msg%n<span class="hljs-tag"></<span class="hljs-name">pattern</span>></span>
+ <span class="hljs-tag"></<span class="hljs-name">encoder</span>></span>
+ <span class="hljs-tag"></<span class="hljs-name">appender</span>></span>
+
+ <span class="hljs-comment"><!-- 提供一个名为"accesslog"的logger供access log打印组件使用 --></span>
+ <span class="hljs-tag"><<span class="hljs-name">logger</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"accesslog"</span> <span class="hljs-attr">level</span>=<span class="hljs-string">"INFO"</span> <span class="hljs-attr">additivity</span>=<span class="hljs-string">"false"</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">appender-ref</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"ACCESSLOG"</span> /></span>
+ <span class="hljs-tag"></<span class="hljs-name">logger</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">configuration</span>></span>
+</code></pre>
+<h2 id="示例代码">示例代码</h2>
+<h3 id="microserviceyaml文件中的配置">microservice.yaml文件中的配置</h3>
+<pre><code class="lang-yaml"><span class="hljs-comment">## other configurations omitted</span>
+<span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> accesslog:</span>
+<span class="hljs-attr"> enabled:</span> <span class="hljs-literal">true</span> <span class="hljs-comment">## 启用access log</span>
+<span class="hljs-attr"> pattern:</span> <span class="hljs-string">"%h - - %t %r %s %B"</span> <span class="hljs-comment">## 自定义日志格式</span>
+</code></pre>
+<h3 id="log4jproperties文件中的配置">log4j.properties文件中的配置</h3>
+<pre><code class="lang-properties"># access log configuration item
+paas.logs.accesslog.dir=../logs/
+paas.logs.accesslog.file=access.log
+# access log File appender
+log4j.appender.access.MaxBackupIndex=10
+log4j.appender.access.MaxFileSize=20MB
+log4j.appender.access.logPermission=rw-------
+</code></pre>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="definition/isolate-relationship.html" class="navigation navigation-prev " aria-label="Previous page: 微服务实例之间的逻辑隔离关系">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="../catalog/build-consumer.html" class="navigation navigation-next " aria-label="Next page: 开发服务消费者">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Access Log配置","level":"1.3.14","depth":2,"next":{"title":"开发服务消费者","level":"1.4","depth":1,"path":"catalog/build-consumer.md","ref":"catalog/build-consumer.md","articles":[{"title":"使用RestTemplate开发服务消费者","level":"1.4.1","depth":2,"path":"build-consumer/using-resttemplate.md","ref":"build-consumer/using-resttemplate.md","articles":[]},{"title":"使用RPC方式开发服务消费者","level":"1.4.2","depth":2,"path":"build-consumer/develop-consumer-using-rpc.md","ref":"build-consumer/develop-consumer-using-rpc.md","articles":[]},{"title":"使用服务契约","level":"1.4.3","depth":2,"path":"build-consumer/with-contract.md","ref":"build-consumer/with-contract.md","articles":[]},{"title":"调用控制","level":"1.4.4","depth":2,"path":"build-consumer/invoke-control.md","ref":"build-consumer/invoke-control.md","articles":[{"title":"实例级故障隔离","level":"1.4.4.1","depth":3,"path":"build-consumer/instance-isolation.md","ref":"build-consumer/instance-isolation.md","articles":[]},{"title":"熔断策略","level":"1.4.4.2","depth":3,"path":"build-consumer/circuit-breaker.md","ref":"build-consumer/circuit-breaker.md","articles":[]},{"title":"限流策略","level":"1.4.4.3","depth":3,"path":"build-consumer/flow-control.md","ref":"build-consumer/flow-control.md","articles":[]},{"title":"故障注入","level":"1.4.4.4","depth":3,"path":"build-consumer/fault-injection.md","ref":"build-consumer/fault-injection.md","articles":[]}]}]},"previous":{"title":"微服务实例之间的逻辑隔离关系","level":"1.3.13","depth":2,"path":"build-provider/definition/isolate-relationship.md","ref":"build-provider/definition/isolate-relationship.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/access-log-configuration.md","mtime":"2018-05-16T09:41:23.126Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-provider/access-log-configuration.md b/docs/en_US/build-provider/access-log-configuration.md
similarity index 100%
rename from docs-source/en_US/build-provider/access-log-configuration.md
rename to docs/en_US/build-provider/access-log-configuration.md
diff --git a/docs/en_US/build-provider/bootup.html b/docs/en_US/build-provider/bootup.html
new file mode 100644
index 000000000..00ce8ff46
--- /dev/null
+++ b/docs/en_US/build-provider/bootup.html
@@ -0,0 +1,1215 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>程序启动逻辑 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="definition/isolate-relationship.html" />
+
+
+ <link rel="prev" href="protocol/highway-rpc.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="definition/service-definition.html">
+
+ <a href="definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="define-contract.html">
+
+ <a href="define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="code-first.html">
+
+ <a href="code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="swagger-annotation.html">
+
+ <a href="swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="springmvc.html">
+
+ <a href="springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="jaxrs.html">
+
+ <a href="jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="transparent-rpc.html">
+
+ <a href="transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="listen-address-and-publish-address.html">
+
+ <a href="listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="interface-constraints.html">
+
+ <a href="interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="service-configuration.html">
+
+ <a href="service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="configuration/lb-strategy.html">
+
+ <a href="configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="configuration/ratelimite-strategy.html">
+
+ <a href="configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="configuration/downgrade-strategy.html">
+
+ <a href="configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="configuration/parameter-validator.html">
+
+ <a href="configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="protocol.html">
+
+ <a href="protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="protocol/thread-model.html">
+
+ <a href="protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="protocol/rest-over-servlet.html">
+
+ <a href="protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="protocol/rest-over-vertx.html">
+
+ <a href="protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="protocol/highway-rpc.html">
+
+ <a href="protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter active" data-level="1.3.12" data-path="bootup.html">
+
+ <a href="bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="definition/isolate-relationship.html">
+
+ <a href="definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="access-log-configuration.html">
+
+ <a href="access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../build-consumer/using-resttemplate.html">
+
+ <a href="../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../build-consumer/with-contract.html">
+
+ <a href="../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../build-consumer/invoke-control.html">
+
+ <a href="../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../build-consumer/instance-isolation.html">
+
+ <a href="../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../build-consumer/circuit-breaker.html">
+
+ <a href="../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../build-consumer/flow-control.html">
+
+ <a href="../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../build-consumer/fault-injection.html">
+
+ <a href="../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >程序启动逻辑</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="概念阐述">概念阐述</h2>
+<p>服务提供者的启动过程分为初始化Log4j、bean加载(包括配置加载)和服务注册三部分。</p>
+<ul>
+<li>初始化Log4j</li>
+</ul>
+<p><code>Log4jUtils</code>默认会从<code>classpath\*:config/base/log4j.properties</code>和<code>classpath\*:config/log4j.properties</code>两个路径读取log4j配置并合并,将其传递给Log4j的<code>PropertyConfigurator</code>方法初始化Log4j。如果优先级最高的配置文件是在磁盘上,且其所在目录有写权限,则将合并的配置输出到该目录,以便于维护时观察生效的参数。</p>
+<ul>
+<li>bean加载</li>
+</ul>
+<p><code>BeanUtils</code>默认会从<code>classpath\*:META-INF/spring/\*.bean.xml</code>路径加载配置文件,并将其传递给Spring框架的<code>ClassPathXmlApplicationContext</code>完成应用上下文加载。在这个过程中会加载foundation-config模块的bean,完成配置加载。</p>
+<ul>
+<li>服务注册</li>
+</ul>
+<p>在Spring context加载完成后,<code>org.apache.servicecomb.core.CseApplicationListener</code>会加载handler配置、加载provider的schema信息,最后将微服务信息注册到服务中心。</p>
+<blockquote>
+<p><strong>说明:</strong><br>ServiceComb的配置项分为三个层次:配置中心、环境变量、本地文件,三者优先级依次递减,高优先级中的配置项覆盖低优先级同名配置项。存放在配置中心的配置项可以在运行时修改。</p>
+</blockquote>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="protocol/highway-rpc.html" class="navigation navigation-prev " aria-label="Previous page: Highway RPC协议">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="definition/isolate-relationship.html" class="navigation navigation-next " aria-label="Next page: 微服务实例之间的逻辑隔离关系">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"程序启动逻辑","level":"1.3.12","depth":2,"next":{"title":"微服务实例之间的逻辑隔离关系","level":"1.3.13","depth":2,"path":"build-provider/definition/isolate-relationship.md","ref":"build-provider/definition/isolate-relationship.md","articles":[]},"previous":{"title":"Highway RPC协议","level":"1.3.11.4","depth":3,"path":"build-provider/protocol/highway-rpc.md","ref":"build-provider/protocol/highway-rpc.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/bootup.md","mtime":"2018-05-16T09:41:23.128Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-provider/bootup.md b/docs/en_US/build-provider/bootup.md
similarity index 100%
rename from docs-source/en_US/build-provider/bootup.md
rename to docs/en_US/build-provider/bootup.md
diff --git a/docs/en_US/build-provider/code-first.html b/docs/en_US/build-provider/code-first.html
new file mode 100644
index 000000000..95030a136
--- /dev/null
+++ b/docs/en_US/build-provider/code-first.html
@@ -0,0 +1,1205 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>使用隐式契约 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="swagger-annotation.html" />
+
+
+ <link rel="prev" href="define-contract.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../">
+
+ <a href="../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../catalog/start.html">
+
+ <a href="../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../start/terminology.html">
+
+ <a href="../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../start/architecture.html">
+
+ <a href="../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../start/development-environment.html">
+
+ <a href="../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../start/first-sample.html">
+
+ <a href="../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../catalog/build-provider.html">
+
+ <a href="../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="definition/service-definition.html">
+
+ <a href="definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="define-contract.html">
+
+ <a href="define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.3.3" data-path="code-first.html">
+
+ <a href="code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="swagger-annotation.html">
+
+ <a href="swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="springmvc.html">
+
+ <a href="springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="jaxrs.html">
+
+ <a href="jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="transparent-rpc.html">
+
+ <a href="transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="listen-address-and-publish-address.html">
+
+ <a href="listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="interface-constraints.html">
+
+ <a href="interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="service-configuration.html">
+
+ <a href="service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="configuration/lb-strategy.html">
+
+ <a href="configuration/lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="configuration/ratelimite-strategy.html">
+
+ <a href="configuration/ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="configuration/downgrade-strategy.html">
+
+ <a href="configuration/downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="configuration/parameter-validator.html">
+
+ <a href="configuration/parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="protocol.html">
+
+ <a href="protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="protocol/thread-model.html">
+
+ <a href="protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="protocol/rest-over-servlet.html">
+
+ <a href="protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="protocol/rest-over-vertx.html">
+
+ <a href="protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="protocol/highway-rpc.html">
+
+ <a href="protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="bootup.html">
+
+ <a href="bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="definition/isolate-relationship.html">
+
+ <a href="definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="access-log-configuration.html">
+
+ <a href="access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../catalog/build-consumer.html">
+
+ <a href="../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../build-consumer/using-resttemplate.html">
+
+ <a href="../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../build-consumer/with-contract.html">
+
+ <a href="../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../build-consumer/invoke-control.html">
+
+ <a href="../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../build-consumer/instance-isolation.html">
+
+ <a href="../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../build-consumer/circuit-breaker.html">
+
+ <a href="../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../build-consumer/flow-control.html">
+
+ <a href="../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../build-consumer/fault-injection.html">
+
+ <a href="../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../catalog/general-develop.html">
+
+ <a href="../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../general-development/metrics.html">
+
+ <a href="../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../general-development/microservice-invocation-chain.html">
+
+ <a href="../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../general-development/customized-tracing.html">
+
+ <a href="../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../general-development/local-develop-test.html">
+
+ <a href="../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../general-development/visit-sc.html">
+
+ <a href="../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../general-development/http-filter.html">
+
+ <a href="../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../general-development/file-upload.html">
+
+ <a href="../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../general-development/file-download.html">
+
+ <a href="../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../general-development/reactive.html">
+
+ <a href="../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../general-development/dnsconfig.html">
+
+ <a href="../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../general-development/dai-li-she-zhi.html">
+
+ <a href="../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../general-development/report-framework-version.html">
+
+ <a href="../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../catalog/open-service.html">
+
+ <a href="../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../edge/nginx.html">
+
+ <a href="../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../edge/zuul.html">
+
+ <a href="../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../edge/by-servicecomb-sdk.html">
+
+ <a href="../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../edge/secret-field.html">
+
+ <a href="../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../catalog/service-package-run.html">
+
+ <a href="../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../packaging/standalone.html">
+
+ <a href="../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../packaging/web-container.html">
+
+ <a href="../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../catalog/security.html">
+
+ <a href="../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../security/tls.html">
+
+ <a href="../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../using-java-chassis-in-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../question-and-answer/question_answer.html">
+
+ <a href="../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../question-and-answer/interface-compatibility.html">
+
+ <a href="../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href=".." >使用隐式契约</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="概念阐述">概念阐述</h2>
+<p>  隐式契约是指ServiceComb根据服务实现类自动生成的服务契约。</p>
+<h2 id="场景描述">场景描述</h2>
+<p>  用户通过隐式契约功能,可以不预先定义契约和接口,直接定义实现类,在服务启动时,根据实现类自动生成契约,并注册到服务中心。</p>
+<h2 id="涉及api">涉及API</h2>
+<p>  隐式契约可用于Spring MVC、JAX-RS、透明RPC三种开发模式,具体使用参见3.4 用SpringMVC开发微服务、3.5 用JAX-RS开发微服务和3.6 用透明RPC开发微服务。</p>
+<p>  使用透明RPC模式开发微服务时,由于从代码上无法分辨微服务开发人员期望如何定义契约,所以生成的契约全是POST方法,所有method的入参被包装为一个class,作为body参数传递,所以建议使用隐式契约开发provider时,选择SpringMVC或JAX-RS开发模式,可以得到完整的RESTful声明。</p>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="define-contract.html" class="navigation navigation-prev " aria-label="Previous page: 定义服务契约">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="swagger-annotation.html" class="navigation navigation-next " aria-label="Next page: 使用Swagger注解">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"使用隐式契约","level":"1.3.3","depth":2,"next":{"title":"使用Swagger注解","level":"1.3.4","depth":2,"path":"build-provider/swagger-annotation.md","ref":"build-provider/swagger-annotation.md","articles":[]},"previous":{"title":"定义服务契约","level":"1.3.2","depth":2,"path":"build-provider/define-contract.md","ref":"build-provider/define-contract.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/code-first.md","mtime":"2018-05-16T09:41:23.128Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../gitbook/gitbook.js"></script>
+ <script src="../../gitbook/theme.js"></script>
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-provider/code-first.md b/docs/en_US/build-provider/code-first.md
similarity index 100%
rename from docs-source/en_US/build-provider/code-first.md
rename to docs/en_US/build-provider/code-first.md
diff --git a/docs/en_US/build-provider/configuration/downgrade-strategy.html b/docs/en_US/build-provider/configuration/downgrade-strategy.html
new file mode 100644
index 000000000..d77baeb77
--- /dev/null
+++ b/docs/en_US/build-provider/configuration/downgrade-strategy.html
@@ -0,0 +1,1371 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>降级策略 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="parameter-validator.html" />
+
+
+ <link rel="prev" href="ratelimite-strategy.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../../">
+
+ <a href="../../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../../catalog/start.html">
+
+ <a href="../../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../../start/terminology.html">
+
+ <a href="../../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../../start/architecture.html">
+
+ <a href="../../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../../start/development-environment.html">
+
+ <a href="../../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../../start/first-sample.html">
+
+ <a href="../../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../../catalog/build-provider.html">
+
+ <a href="../../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../definition/service-definition.html">
+
+ <a href="../definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../define-contract.html">
+
+ <a href="../define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../code-first.html">
+
+ <a href="../code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../swagger-annotation.html">
+
+ <a href="../swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../springmvc.html">
+
+ <a href="../springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../jaxrs.html">
+
+ <a href="../jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../transparent-rpc.html">
+
+ <a href="../transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../listen-address-and-publish-address.html">
+
+ <a href="../listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../interface-constraints.html">
+
+ <a href="../interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../service-configuration.html">
+
+ <a href="../service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="lb-strategy.html">
+
+ <a href="lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="ratelimite-strategy.html">
+
+ <a href="ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.3.10.3" data-path="downgrade-strategy.html">
+
+ <a href="downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="parameter-validator.html">
+
+ <a href="parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../protocol.html">
+
+ <a href="../protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../protocol/thread-model.html">
+
+ <a href="../protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../protocol/rest-over-servlet.html">
+
+ <a href="../protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../protocol/rest-over-vertx.html">
+
+ <a href="../protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../protocol/highway-rpc.html">
+
+ <a href="../protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../bootup.html">
+
+ <a href="../bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../definition/isolate-relationship.html">
+
+ <a href="../definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../access-log-configuration.html">
+
+ <a href="../access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../../catalog/build-consumer.html">
+
+ <a href="../../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../../build-consumer/using-resttemplate.html">
+
+ <a href="../../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../../build-consumer/with-contract.html">
+
+ <a href="../../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../../build-consumer/invoke-control.html">
+
+ <a href="../../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../../build-consumer/instance-isolation.html">
+
+ <a href="../../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../../build-consumer/circuit-breaker.html">
+
+ <a href="../../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../../build-consumer/flow-control.html">
+
+ <a href="../../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../../build-consumer/fault-injection.html">
+
+ <a href="../../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../../catalog/general-develop.html">
+
+ <a href="../../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../../general-development/metrics.html">
+
+ <a href="../../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../../general-development/microservice-invocation-chain.html">
+
+ <a href="../../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../../general-development/customized-tracing.html">
+
+ <a href="../../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../../general-development/local-develop-test.html">
+
+ <a href="../../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../../general-development/visit-sc.html">
+
+ <a href="../../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../../general-development/http-filter.html">
+
+ <a href="../../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../../general-development/file-upload.html">
+
+ <a href="../../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../../general-development/file-download.html">
+
+ <a href="../../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../../general-development/reactive.html">
+
+ <a href="../../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../../general-development/dnsconfig.html">
+
+ <a href="../../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../../general-development/dai-li-she-zhi.html">
+
+ <a href="../../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../../general-development/report-framework-version.html">
+
+ <a href="../../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../../catalog/open-service.html">
+
+ <a href="../../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../../edge/nginx.html">
+
+ <a href="../../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../../edge/zuul.html">
+
+ <a href="../../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../../edge/by-servicecomb-sdk.html">
+
+ <a href="../../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../../edge/secret-field.html">
+
+ <a href="../../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../../catalog/service-package-run.html">
+
+ <a href="../../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../../packaging/standalone.html">
+
+ <a href="../../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../../packaging/web-container.html">
+
+ <a href="../../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../../catalog/security.html">
+
+ <a href="../../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../../security/tls.html">
+
+ <a href="../../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../../using-java-chassis-in-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../../question-and-answer/question_answer.html">
+
+ <a href="../../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../../question-and-answer/interface-compatibility.html">
+
+ <a href="../../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href="../.." >降级策略</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="概念阐述">概念阐述</h2>
+<p>降级策略是当服务请求异常时,微服务所采用的异常处理策略。</p>
+<p>降级策略有三个相关的技术概念:“隔离”、“熔断”、“容错”:</p>
+<ul>
+<li>“隔离”是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。</li>
+<li>“熔断”是一种异常反应机制,“熔断”依赖于“隔离”。熔断通常基于错误率来实现。一般的设置参数包括统计请求的个数、错误率等。</li>
+<li>“容错”是一种异常处理机制,“容错”依赖于“熔断”。熔断以后,会调用“容错”的方法。一般的设置参数包括调用容错方法的次数等。</li>
+</ul>
+<p>把这些概念联系起来:当"隔离"措施检测到N次请求中共有M次错误的时候,"熔断"不再发送后续请求,调用"容错"处理函数。这个技术上的定义,是和Netflix Hystrix一致的,通过这个定义,非常容易理解它提供的配置项,参考:<a href="https://github.com/Netflix/Hystrix/wiki/Configuration" target="_blank">https://github.com/Netflix/Hystrix/wiki/Configuration</a>。当前ServiceComb提供两种容错方式,分别为返回null值和抛出异常。</p>
+<h2 id="场景描述">场景描述</h2>
+<p>用户通过配置降级策略,可以设置微服务的异常处理策略。</p>
+<h2 id="配置说明">配置说明</h2>
+<p>配置项支持对所有接口生效,或者对某个微服务的某个具体方法生效。</p>
+<h3 id="配置项生效范围">配置项生效范围</h3>
+<ul>
+<li><p>按照类型(type):配置项能够针对Provider, Consumer进行配置</p>
+</li>
+<li><p>按照范围(scope):配置项能够针对MicroService进行配置, 也可以针对【x-schema-id + operationId】进行配置</p>
+</li>
+</ul>
+<p>本章节如果没有特殊说明,所有的配置项都支持按照下面的格式进行配置:</p>
+<pre><code>servicecomb.[namespace].[type].[MicroServiceName].[接口名称].[property name]
+</code></pre><p>type指Provider或者Consumser, 针对特定的微服务的配置,需要增加MicroServiceName, 针对接口配置的,需要指定接口名称,接口名称由【x-schema-id + operationId】组成。</p>
+<p>隔离<br>配置可选配置项格式示例如下:</p>
+<pre><code>servicecomb.isolation.Consumer.timeout.enabled
+servicecomb.isolation.Consumer.DemoService.timeout.enabled
+servicecomb.isolation.Consumer.DemoService.hello.sayHello.timeout.enabled
+servicecomb.isolation.Provider.timeout.enabled
+servicecomb.isolation.Provider.DemoService.timeout.enabled
+servicecomb.isolation.Provider.DemoService.hello.sayHello.timeout.enabled
+</code></pre><h3 id="配置项列表">配置项列表</h3>
+<p>注意:在下面的表格里面,全部省略type和MicroServiceName。未特殊说明,配置项都支持Provider和Consumer。</p>
+<p>例如:对于服务消费者,需要配置为:servicecomb.isolation.Consumer.timeout.enabled</p>
+<p>例如:对于服务提供者,需要配置为:servicecomb.isolation.Provider.timeout.enabled</p>
+<p>表1-1降级策略相关配置项说明</p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">是否必选</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">注意</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.isolation.timeout.enabled</td>
+<td style="text-align:left">FALSE</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否启用超时检测</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.isolation.timeoutInMilliseconds</td>
+<td style="text-align:left">30000</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">超时时间阈值</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.isolation.maxConcurrentRequests</td>
+<td style="text-align:left">10</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">最大并发数阈值</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.circuitBreaker.enabled</td>
+<td style="text-align:left">TRUE</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否启用熔断措施</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.circuitBreaker.forceOpen</td>
+<td style="text-align:left">FALSE</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">不管失败次数,都进行熔断</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.circuitBreaker.forceClosed</td>
+<td style="text-align:left">FALSE</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">任何时候都不熔断</td>
+<td style="text-align:left">当与forceOpen同时配置时,forceOpen优先。</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.circuitBreaker.sleepWindowInMilliseconds</td>
+<td style="text-align:left">15000</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">熔断后,多长时间恢复</td>
+<td style="text-align:left">恢复后,会重新计算失败情况。注意:如果恢复后的调用立即失败,那么会立即重新进入熔断。</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.circuitBreaker.requestVolumeThreshold</td>
+<td style="text-align:left">20</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">10s内统计错误发生次数阈值,超过阈值则触发熔断</td>
+<td style="text-align:left">由于10秒还会被划分为10个1秒的统计周期,经过1s中后才会开始计算错误率,因此从调用开始至少经过1s,才会发生熔断。</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.circuitBreaker.errorThresholdPercentage</td>
+<td style="text-align:left">50</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">错误率阈值,达到阈值则触发熔断</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.fallback.enabled</td>
+<td style="text-align:left">TRUE</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否启用出错后的故障处理措施</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.fallback.maxConcurrentRequests</td>
+<td style="text-align:left">10</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">并发调用容错处理措施(servicecomb.fallbackpolicy.policy)的请求数,超过这个值则不再调用处理措施,直接返回异常</td>
+<td style="text-align:left"></td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.fallbackpolicy.policy</td>
+<td style="text-align:left">throwexception</td>
+<td style="text-align:left">lreturnnulllthrowexception</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">出错后的处理策略</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>小心</strong>:<br>谨慎使用servicecomb.isolation.timeout.enabled=true。因为系统处理链都是异步执行,中间处理链的返回,会导致后面处理链的逻辑处理效果丢失。尽可能将servicecomb.isolation.timeout.enabled保持默认值false,并且正确设置网络层超时时间servicecomb.request.timeout=30000。</p>
+</blockquote>
+<h2 id="示例代码">示例代码</h2>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> handler:</span>
+<span class="hljs-attr"> chain:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> default:</span> bizkeeper-consumer
+<span class="hljs-attr"> isolation:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> timeout:</span>
+<span class="hljs-attr"> enabled:</span> <span class="hljs-literal">true</span>
+<span class="hljs-attr"> timeoutInMilliseconds:</span> <span class="hljs-number">30000</span>
+<span class="hljs-attr"> circuitBreaker:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> enabled:</span> <span class="hljs-literal">true</span>
+<span class="hljs-attr"> sleepWindowInMilliseconds:</span> <span class="hljs-number">15000</span>
+<span class="hljs-attr"> requestVolumeThreshold:</span> <span class="hljs-number">20</span>
+<span class="hljs-attr"> fallback:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> enabled:</span> <span class="hljs-literal">true</span>
+<span class="hljs-attr"> fallbackpolicy:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> policy:</span> throwexception
+</code></pre>
+<blockquote>
+<p><strong>说明:</strong><br>降级策略需要启用服务治理能力,对应的服务提供者的handler是<code>bizkeeper-provider</code>,服务消费者的handler是<code>bizkeeper-consumer</code>。</p>
+</blockquote>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="ratelimite-strategy.html" class="navigation navigation-prev " aria-label="Previous page: 限流策略">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="parameter-validator.html" class="navigation navigation-next " aria-label="Next page: 参数效验">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"降级策略","level":"1.3.10.3","depth":3,"next":{"title":"参数效验","level":"1.3.10.4","depth":3,"path":"build-provider/configuration/parameter-validator.md","ref":"build-provider/configuration/parameter-validator.md","articles":[]},"previous":{"title":"限流策略","level":"1.3.10.2","depth":3,"path":"build-provider/configuration/ratelimite-strategy.md","ref":"build-provider/configuration/ratelimite-strategy.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/configuration/downgrade-strategy.md","mtime":"2018-05-16T09:41:23.131Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"../..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../../gitbook/gitbook.js"></script>
+ <script src="../../../gitbook/theme.js"></script>
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-provider/configuration/downgrade-strategy.md b/docs/en_US/build-provider/configuration/downgrade-strategy.md
similarity index 100%
rename from docs-source/en_US/build-provider/configuration/downgrade-strategy.md
rename to docs/en_US/build-provider/configuration/downgrade-strategy.md
diff --git a/docs/en_US/build-provider/configuration/lb-strategy.html b/docs/en_US/build-provider/configuration/lb-strategy.html
new file mode 100644
index 000000000..9f51e16db
--- /dev/null
+++ b/docs/en_US/build-provider/configuration/lb-strategy.html
@@ -0,0 +1,1449 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>负载均衡策略 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="ratelimite-strategy.html" />
+
+
+ <link rel="prev" href="../service-configuration.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../../">
+
+ <a href="../../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../../catalog/start.html">
+
+ <a href="../../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../../start/terminology.html">
+
+ <a href="../../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../../start/architecture.html">
+
+ <a href="../../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../../start/development-environment.html">
+
+ <a href="../../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../../start/first-sample.html">
+
+ <a href="../../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../../catalog/build-provider.html">
+
+ <a href="../../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../definition/service-definition.html">
+
+ <a href="../definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../define-contract.html">
+
+ <a href="../define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../code-first.html">
+
+ <a href="../code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../swagger-annotation.html">
+
+ <a href="../swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../springmvc.html">
+
+ <a href="../springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../jaxrs.html">
+
+ <a href="../jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../transparent-rpc.html">
+
+ <a href="../transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../listen-address-and-publish-address.html">
+
+ <a href="../listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../interface-constraints.html">
+
+ <a href="../interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../service-configuration.html">
+
+ <a href="../service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter active" data-level="1.3.10.1" data-path="lb-strategy.html">
+
+ <a href="lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="ratelimite-strategy.html">
+
+ <a href="ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="downgrade-strategy.html">
+
+ <a href="downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="parameter-validator.html">
+
+ <a href="parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../protocol.html">
+
+ <a href="../protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../protocol/thread-model.html">
+
+ <a href="../protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../protocol/rest-over-servlet.html">
+
+ <a href="../protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../protocol/rest-over-vertx.html">
+
+ <a href="../protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../protocol/highway-rpc.html">
+
+ <a href="../protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../bootup.html">
+
+ <a href="../bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../definition/isolate-relationship.html">
+
+ <a href="../definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../access-log-configuration.html">
+
+ <a href="../access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../../catalog/build-consumer.html">
+
+ <a href="../../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../../build-consumer/using-resttemplate.html">
+
+ <a href="../../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../../build-consumer/with-contract.html">
+
+ <a href="../../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../../build-consumer/invoke-control.html">
+
+ <a href="../../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../../build-consumer/instance-isolation.html">
+
+ <a href="../../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../../build-consumer/circuit-breaker.html">
+
+ <a href="../../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../../build-consumer/flow-control.html">
+
+ <a href="../../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../../build-consumer/fault-injection.html">
+
+ <a href="../../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../../catalog/general-develop.html">
+
+ <a href="../../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../../general-development/metrics.html">
+
+ <a href="../../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../../general-development/microservice-invocation-chain.html">
+
+ <a href="../../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../../general-development/customized-tracing.html">
+
+ <a href="../../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../../general-development/local-develop-test.html">
+
+ <a href="../../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../../general-development/visit-sc.html">
+
+ <a href="../../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../../general-development/http-filter.html">
+
+ <a href="../../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../../general-development/file-upload.html">
+
+ <a href="../../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../../general-development/file-download.html">
+
+ <a href="../../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../../general-development/reactive.html">
+
+ <a href="../../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../../general-development/dnsconfig.html">
+
+ <a href="../../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../../general-development/dai-li-she-zhi.html">
+
+ <a href="../../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../../general-development/report-framework-version.html">
+
+ <a href="../../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../../catalog/open-service.html">
+
+ <a href="../../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../../edge/nginx.html">
+
+ <a href="../../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../../edge/zuul.html">
+
+ <a href="../../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../../edge/by-servicecomb-sdk.html">
+
+ <a href="../../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../../edge/secret-field.html">
+
+ <a href="../../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../../catalog/service-package-run.html">
+
+ <a href="../../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../../packaging/standalone.html">
+
+ <a href="../../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../../packaging/web-container.html">
+
+ <a href="../../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../../catalog/security.html">
+
+ <a href="../../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../../security/tls.html">
+
+ <a href="../../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../../using-java-chassis-in-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../../question-and-answer/question_answer.html">
+
+ <a href="../../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../../question-and-answer/interface-compatibility.html">
+
+ <a href="../../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href="../.." >负载均衡策略</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>ServiceComb提供了基于Ribbon的负载均衡方案,用户可以通过配置文件配置负载均衡策略,当前支持随机、顺序、基于响应时间的权值等多种负载均衡路由策略。</p>
+<h2 id="配置说明">配置说明</h2>
+<p>负载均衡策略在mocroservice.yaml文件中配置,配置项为<code>servicecomb.loadbalance.[MicroServiceName].[property name]</code>,其中若省略MicroServiceName,则为全局配置;若指定MicroServiceName,则为针对特定微服务的配置。</p>
+<p>表1-1配置项说明</p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">是否必选</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">注意</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.strategy.name</td>
+<td style="text-align:left">RoundRobin</td>
+<td style="text-align:left">RoundRobin(轮询)<br>Random(随机)<br>WeightedResponse(服务器响应时间权值)<br>SessionStickiness(会话保持)</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">负载均衡路由策略</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.SessionStickinessRule.sessionTimeoutInSeconds</td>
+<td style="text-align:left">30</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">客户端闲置时间,超过限制后选择后面的服务器。</td>
+<td style="text-align:left">暂不支持微服务配置。e.g. servicecomb.loadbalance.SessionStickinessRule.sessionTimeoutInSeconds,不能配置为servicecomb.loadbalance.DemoService.SessionStickinessRule.sessionTimeoutInSeconds</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.SessionStickinessRule.successiveFailedTimes</td>
+<td style="text-align:left">5</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">客户端失败次数,超过后会切换服务器</td>
+<td style="text-align:left">暂不支持微服务配置</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.retryEnabled</td>
+<td style="text-align:left">FALSE</td>
+<td style="text-align:left">Boolean</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">负载均衡捕获到服务调用异常,是否进行重试</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.retryOnNext</td>
+<td style="text-align:left">0</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">尝试新的服务器的次数</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.retryOnSame</td>
+<td style="text-align:left">0</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">同一个服务器尝试的次数</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.enabled</td>
+<td style="text-align:left">FALSE</td>
+<td style="text-align:left">Boolean</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否开启故障实例隔离功能</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.enableRequestThreshold</td>
+<td style="text-align:left">20</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">当实例的调用总次数达到该值时开始进入隔离逻辑门槛</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.continuousFailureThreshold</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">当请求实例连续出错达到此阈值时触发实例隔离</td>
+<td style="text-align:left">若配置了此项则覆盖实例故障百分比的配置,否则按照实例故障百分比触发隔离。<br>由于按请求错误率触发实例隔离在请求次数较多时不易触发也不易恢复,因此建议使用此配置项代替实例故障百分比配置。<br>请求实例成功时会将连续错误次数请零以保证实例快速恢复。</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.errorThresholdPercentage</td>
+<td style="text-align:left">20</td>
+<td style="text-align:left">Integer,区间为(0,100]</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">实例故障隔离错误百分比</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.isolation.singleTestTime</td>
+<td style="text-align:left">10000</td>
+<td style="text-align:left">Integer</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">故障实例单点测试时间</td>
+<td style="text-align:left">单位为ms</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.transactionControl.policy</td>
+<td style="text-align:left">org.apache.servicecomb.loadbalance.filter.SimpleTransactionControlFilter</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">动态路由分流策略</td>
+<td style="text-align:left">框架提供了简单的分流机制,开发者也可以实现自定义的分流过滤策略</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.loadbalance.transactionControl.options</td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">key/value pairs</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">针对SimpleTransactionControlFilter分流策略的配置项,可添加任意项过滤标签</td>
+<td style="text-align:left">-</td>
+</tr>
+</tbody>
+</table>
+<h2 id="示例代码">示例代码</h2>
+<p>负载均衡策略配置在src\main\resources\microservice.yaml文件中。</p>
+<p>配置处理链:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+ <span class="hljs-comment"># other configurations omitted</span>
+<span class="hljs-attr"> handler:</span>
+<span class="hljs-attr"> chain:</span>
+<span class="hljs-attr"> Consumer:</span>
+<span class="hljs-attr"> default:</span> loadbalance
+</code></pre>
+<p>增加路由策略:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+ <span class="hljs-comment"># other configurations omitted</span>
+<span class="hljs-attr"> loadbalance:</span>
+<span class="hljs-attr"> strategy:</span>
+<span class="hljs-attr"> name:</span> RoundRobin
+</code></pre>
+<h2 id="自定义路由策略">自定义路由策略</h2>
+<p>用户可以在ServiceComb提供的路由策略框架下根据业务需要,通过编程的方式来开发路由策略。实施步骤如下:</p>
+<ul>
+<li>实现接口<code>com.netflix.loadbalancer.IRule</code>中定义的接口方法。<br>路由选择逻辑在<code>public Server choose(Object key)</code>方法中实现。LoadBalancerStats是一个封装了负载均衡器当前运行状态的一个结构。通过获取stats中各个实例的运行指标,在choose方法中,判定将当前请求路由到哪个实例上进行处理。处理风格可以参照<code>org.apache.servicecomb.loadbalance.SessionStickinessRule</code>。</li>
+<li>定义一个负载均衡规则工厂类,实现接口<code>ExtensionsFactory</code>。<br>
+其中,<code>boolean isSupport(String key, String value)</code>方法用于确定此工厂是否支持microservice.yaml文件中配置的规则(key值为<code>Configuration.PROP_RULE_STRATEGY_NAME</code>,value值为自定义的规则名称);<code>IRule createLoadBalancerRule(String ruleName)</code>方法用于获取对应的规则。具体实现方式参考<code>org.apache.servicecomb.loadbalance.RuleNameExtentionsFactory</code>,该实现类需要打上<code>@Component</code>注解以保证能够被引用。</li>
+<li>通过SDK配置该负载均衡策略,假如是<code>AbcRule</code>。则配置如下:<br><pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> loadbalance:</span>
+<span class="hljs-attr"> strategy:</span>
+<span class="hljs-attr"> name:</span> AbcRule
+</code></pre>
+</li>
+</ul>
+<h2 id="过滤器机制">过滤器机制</h2>
+<p>handler-loadbalance模块提供了Filter机制,用来过滤选择provider实例,ServiceComb提供的Filter有<code>IsolationServerListFilter</code>和<code>ZoneAwareServerListFilterExt</code>,用户也可自行扩展Filter。</p>
+<p>关于<code>IsolationServerListFilter</code>的用法参见<a href="../../build-consumer/instance-isolation.html">实例级故障隔离</a>。</p>
+<h3 id="使用zoneawareserverlistfilterext选择provider实例">使用<code>ZoneAwareServerListFilterExt</code>选择provider实例</h3>
+<p><code>ZoneAwareServerListFilterExt</code>使得consumer实例可以优先选择和自己处于同一region和zone的provider实例进行调用。</p>
+<blockquote>
+<p>这里的region和zone是一般性的概念,用户可以自定确定其业务含义以便应用于资源隔离的场景中。关于华为云ServiceStage中的实例隔离层次关系,参见<a href="../definition/isolate-relationship.html">微服务实例之间的逻辑隔离关系</a>。</p>
+</blockquote>
+<h4 id="1-provider端配置">1. provider端配置</h4>
+<p>启动两个provider实例,其中一个provider实例的microservice.yaml文件中增加如下配置:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+ <span class="hljs-comment"># config region and zone information</span>
+<span class="hljs-attr"> datacenter:</span>
+<span class="hljs-attr"> name:</span> myDC
+<span class="hljs-attr"> region:</span> my-Region
+<span class="hljs-attr"> availableZone:</span> my-Zone
+</code></pre>
+<h4 id="2-consumer端配置">2. consumer端配置</h4>
+<p>在consumer端的microservice.yaml文件中增加如下配置:</p>
+<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> loadbalance:</span>
+ <span class="hljs-comment"># add zone aware filter</span>
+<span class="hljs-attr"> serverListFilters:</span> zoneAware
+<span class="hljs-attr"> serverListFilter:</span>
+<span class="hljs-attr"> zoneAware:</span>
+<span class="hljs-attr"> className:</span> org.apache.servicecomb.loadbalance.filter.ZoneAwareServerListFilterExt
+ <span class="hljs-comment"># config region and zone information</span>
+<span class="hljs-attr"> datacenter:</span>
+<span class="hljs-attr"> name:</span> myDC
+<span class="hljs-attr"> region:</span> my-Region
+<span class="hljs-attr"> availableZone:</span> my-Zone
+</code></pre>
+<h4 id="3-使consumer调用provider">3. 使consumer调用provider</h4>
+<p>由于<code>ZoneAwareServerListFilterExt</code>的存在,consumer实例会优先选择和自己同一个region和availableZone下的provider实例进行调用。如果没有region和zone都相同的provider实例,则选择region相同的实例;如果还是没有符合条件的实例,则选择任一可用实例做调用。</p>
+<h3 id="开发自定义过滤器">开发自定义过滤器</h3>
+<p>用户可以开发自定义的过滤器来满足自己的业务场景,步骤如下:</p>
+<ul>
+<li>实现<code>ServerListFilterExt</code>接口,过滤provider实例列表的逻辑在<code>List<T> getFilteredListOfServers(List<T> servers)</code>方法中实现。</li>
+<li>确保编译的filter实现类在classpath下。</li>
+<li>在microservice.yaml文件中增加filter配置</li>
+</ul>
+<h4 id="示例开发">示例开发</h4>
+<p>现在假设用户需要为每个consumer和provider实例配置各自的优先级,从低到高为0~9,高优先级的provider实例只可以调用平级或低优先级的consumer实例,以此为前提开发一个示例。</p>
+<ol>
+<li><p>开发一个Filter,实现<code>ServerListFilterExt</code>接口,代码如下:</p>
+<pre><code class="lang-java"><span class="hljs-keyword">package</span> org.servicecombexam.loadbalance.filter;
+<span class="hljs-comment">// import is omitted</span>
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ExamFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ServerListFilterExt</span> </span>{
+ <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String PRIORITY_LEVEL = <span class="hljs-string">"priorityLevel"</span>;
+ <span class="hljs-meta">@Override</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> List<Server> <span class="hljs-title">getFilteredListOfServers</span><span class="hljs-params">(List<Server> servers)</span> </span>{
+ List<Server> result = <span class="hljs-keyword">new</span> ArrayList<>();
+ String priority = RegistryUtils.getMicroserviceInstance().getProperties().get(PRIORITY_LEVEL);
+ <span class="hljs-keyword">for</span> (Server server : servers) {
+ <span class="hljs-keyword">if</span> (priorityMatched(priority, server)) {
+ result.add(server);
+ }
+ }
+ <span class="hljs-keyword">return</span> result;
+ }
+ <span class="hljs-comment">/**
+ * if the priority level is not specified, it will be regarded as 0
+ * <span class="hljs-doctag">@return</span> whether a server can be invoked by this consumer instance, according to priority level
+ */</span>
+ <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">boolean</span> <span class="hljs-title">priorityMatched</span><span class="hljs-params">(String priority, Server server)</span> </span>{
+ String serverPriority = ((CseServer) server).getInstance().getProperties().get(PRIORITY_LEVEL);
+ <span class="hljs-keyword">if</span> (!StringUtils.isEmpty(priority) && !StringUtils.isEmpty(serverPriority)) {
+ <span class="hljs-keyword">return</span> priority.compareTo(serverPriority) >= <span class="hljs-number">0</span>;
+ }
+ <span class="hljs-keyword">if</span> (StringUtils.isEmpty(serverPriority)) {
+ <span class="hljs-keyword">return</span> <span class="hljs-keyword">true</span>;
+ }
+
+ <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>;
+ }
+}
+</code></pre>
+</li>
+<li>在provider的microservice.yaml文件中配置优先级等级:<pre><code class="lang-yaml"><span class="hljs-attr">instance_description:</span>
+<span class="hljs-attr"> properties:</span>
+ <span class="hljs-comment"># instance_description.properties下的是实例级配置项,本示例将优先级配置放在这里存储。实验中会启动三个实例,优先级分别为0~2</span>
+<span class="hljs-attr"> priorityLevel:</span> <span class="hljs-number">2</span>
+</code></pre>
+</li>
+<li>在consumer的microservice.yaml文件中配置优先级等级和Filter:<pre><code class="lang-yaml"><span class="hljs-attr">instance_description:</span>
+<span class="hljs-attr"> properties:</span>
+ <span class="hljs-comment"># consumer优先级等级为1,可以调用优先级为0或1的provider实例</span>
+<span class="hljs-attr"> priorityLevel:</span> <span class="hljs-number">1</span>
+<span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> loadbalance:</span>
+<span class="hljs-attr"> serverListFilters:</span> priorityFilter <span class="hljs-comment"># filter名称,可以以','分隔配置多个filter</span>
+<span class="hljs-attr"> serverListFilter:</span>
+<span class="hljs-attr"> priorityFilter:</span> <span class="hljs-comment"># 此处配置的filter名称需要与servicecomb.loadbalance.serverListFilters中配置的相符</span>
+<span class="hljs-attr"> className:</span> org.servicecombexam.loadbalance.filter.ExamFilter <span class="hljs-comment"># 自定义filter的类名</span>
+</code></pre>
+</li>
+</ol>
+<p>令consumer调用provider进行验证,可以发现只有优先级为0和1的provider实例会被调用,而优先级为2的provider实例不会被调用。</p>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="../service-configuration.html" class="navigation navigation-prev " aria-label="Previous page: 服务配置">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="ratelimite-strategy.html" class="navigation navigation-next " aria-label="Next page: 限流策略">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"负载均衡策略","level":"1.3.10.1","depth":3,"next":{"title":"限流策略","level":"1.3.10.2","depth":3,"path":"build-provider/configuration/ratelimite-strategy.md","ref":"build-provider/configuration/ratelimite-strategy.md","articles":[]},"previous":{"title":"服务配置","level":"1.3.10","depth":2,"path":"build-provider/service-configuration.md","ref":"build-provider/service-configuration.md","articles":[{"title":"负载均衡策略","level":"1.3.10.1","depth":3,"path":"build-provider/configuration/lb-strategy.md","ref":"build-provider/configuration/lb-strategy.md","articles":[]},{"title":"限流策略","level":"1.3.10.2","depth":3,"path":"build-provider/configuration/ratelimite-strategy.md","ref":"build-provider/configuration/ratelimite-strategy.md","articles":[]},{"title":"降级策略","level":"1.3.10.3","depth":3,"path":"build-provider/configuration/downgrade-strategy.md","ref":"build-provider/configuration/downgrade-strategy.md","articles":[]},{"title":"参数效验","level":"1.3.10.4","depth":3,"path":"build-provider/configuration/parameter-validator.md","ref":"build-provider/configuration/parameter-validator.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/configuration/lb-strategy.md","mtime":"2018-05-16T09:41:23.133Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"../..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../../gitbook/gitbook.js"></script>
+ <script src="../../../gitbook/theme.js"></script>
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-provider/configuration/lb-strategy.md b/docs/en_US/build-provider/configuration/lb-strategy.md
similarity index 100%
rename from docs-source/en_US/build-provider/configuration/lb-strategy.md
rename to docs/en_US/build-provider/configuration/lb-strategy.md
diff --git a/docs/en_US/build-provider/configuration/parameter-validator.html b/docs/en_US/build-provider/configuration/parameter-validator.html
new file mode 100644
index 000000000..11de2daf9
--- /dev/null
+++ b/docs/en_US/build-provider/configuration/parameter-validator.html
@@ -0,0 +1,1304 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>参数效验 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="../protocol.html" />
+
+
+ <link rel="prev" href="downgrade-strategy.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../../">
+
+ <a href="../../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../../catalog/start.html">
+
+ <a href="../../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../../start/terminology.html">
+
+ <a href="../../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../../start/architecture.html">
+
+ <a href="../../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../../start/development-environment.html">
+
+ <a href="../../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../../start/first-sample.html">
+
+ <a href="../../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../../catalog/build-provider.html">
+
+ <a href="../../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../definition/service-definition.html">
+
+ <a href="../definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../define-contract.html">
+
+ <a href="../define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../code-first.html">
+
+ <a href="../code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../swagger-annotation.html">
+
+ <a href="../swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../springmvc.html">
+
+ <a href="../springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../jaxrs.html">
+
+ <a href="../jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../transparent-rpc.html">
+
+ <a href="../transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../listen-address-and-publish-address.html">
+
+ <a href="../listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../interface-constraints.html">
+
+ <a href="../interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../service-configuration.html">
+
+ <a href="../service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="lb-strategy.html">
+
+ <a href="lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.2" data-path="ratelimite-strategy.html">
+
+ <a href="ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="downgrade-strategy.html">
+
+ <a href="downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.3.10.4" data-path="parameter-validator.html">
+
+ <a href="parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../protocol.html">
+
+ <a href="../protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../protocol/thread-model.html">
+
+ <a href="../protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../protocol/rest-over-servlet.html">
+
+ <a href="../protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../protocol/rest-over-vertx.html">
+
+ <a href="../protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../protocol/highway-rpc.html">
+
+ <a href="../protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../bootup.html">
+
+ <a href="../bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../definition/isolate-relationship.html">
+
+ <a href="../definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../access-log-configuration.html">
+
+ <a href="../access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../../catalog/build-consumer.html">
+
+ <a href="../../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../../build-consumer/using-resttemplate.html">
+
+ <a href="../../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../../build-consumer/with-contract.html">
+
+ <a href="../../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../../build-consumer/invoke-control.html">
+
+ <a href="../../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../../build-consumer/instance-isolation.html">
+
+ <a href="../../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../../build-consumer/circuit-breaker.html">
+
+ <a href="../../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../../build-consumer/flow-control.html">
+
+ <a href="../../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../../build-consumer/fault-injection.html">
+
+ <a href="../../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../../catalog/general-develop.html">
+
+ <a href="../../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../../general-development/metrics.html">
+
+ <a href="../../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../../general-development/microservice-invocation-chain.html">
+
+ <a href="../../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../../general-development/customized-tracing.html">
+
+ <a href="../../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../../general-development/local-develop-test.html">
+
+ <a href="../../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../../general-development/visit-sc.html">
+
+ <a href="../../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../../general-development/http-filter.html">
+
+ <a href="../../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../../general-development/file-upload.html">
+
+ <a href="../../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../../general-development/file-download.html">
+
+ <a href="../../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../../general-development/reactive.html">
+
+ <a href="../../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../../general-development/dnsconfig.html">
+
+ <a href="../../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../../general-development/dai-li-she-zhi.html">
+
+ <a href="../../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../../general-development/report-framework-version.html">
+
+ <a href="../../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../../catalog/open-service.html">
+
+ <a href="../../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../../edge/nginx.html">
+
+ <a href="../../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../../edge/zuul.html">
+
+ <a href="../../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../../edge/by-servicecomb-sdk.html">
+
+ <a href="../../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../../edge/secret-field.html">
+
+ <a href="../../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../../catalog/service-package-run.html">
+
+ <a href="../../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../../packaging/standalone.html">
+
+ <a href="../../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../../packaging/web-container.html">
+
+ <a href="../../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../../catalog/security.html">
+
+ <a href="../../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../../security/tls.html">
+
+ <a href="../../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../../using-java-chassis-in-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../../question-and-answer/question_answer.html">
+
+ <a href="../../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../../question-and-answer/interface-compatibility.html">
+
+ <a href="../../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href="../.." >参数效验</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>用户在provider端使用参数效验,可以对相应的参数输入要求预先进行设置,在接口实际调用前进行效验处理,达到控制参数输入标准的效果。</p>
+<h2 id="配置说明">配置说明</h2>
+<ul>
+<li><p>添加swagger-invocation-validator的pom依赖:</p>
+<pre><code class="lang-xml"><span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.apache.servicecomb<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>swagger-invocation-validator<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
+</code></pre>
+</li>
+<li><p>在需要验证的代码上按照JSR 349规范添加验证器注解,如@NotNull,@Min,@Max等。</p>
+</li>
+</ul>
+<h2 id="示例代码">示例代码</h2>
+<ul>
+<li>接口参数验证</li>
+</ul>
+<pre><code class="lang-java"><span class="hljs-meta">@RestSchema</span>(schemaId = <span class="hljs-string">"validator"</span>)
+<span class="hljs-meta">@Path</span>(<span class="hljs-string">"/validator"</span>)
+<span class="hljs-meta">@Produces</span>(MediaType.APPLICATION_JSON)
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Validator</span> </span>{
+
+ <span class="hljs-meta">@Path</span>(<span class="hljs-string">"/add"</span>)
+ <span class="hljs-meta">@POST</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">add</span><span class="hljs-params">(@FormParam(<span class="hljs-string">"a"</span>)</span> <span class="hljs-keyword">int</span> a, @<span class="hljs-title">Min</span><span class="hljs-params">(<span class="hljs-number">20</span>)</span> @<span class="hljs-title">FormParam</span><span class="hljs-params">(<span class="hljs-string">"b"</span>)</span> <span class="hljs-keyword">int</span> b) </span>{
+ <span class="hljs-keyword">return</span> a + b;
+ }
+
+ <span class="hljs-meta">@Path</span>(<span class="hljs-string">"/sayhi/{name}"</span>)
+ <span class="hljs-meta">@PUT</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">sayHi</span><span class="hljs-params">(@Length(min = <span class="hljs-number">3</span>)</span> @<span class="hljs-title">PathParam</span><span class="hljs-params">(<span class="hljs-string">"name"</span>)</span> String name) </span>{
+ ContextUtils.getInvocationContext().setStatus(<span class="hljs-number">202</span>);
+ <span class="hljs-keyword">return</span> name + <span class="hljs-string">" sayhi"</span>;
+ }
+
+ <span class="hljs-meta">@Path</span>(<span class="hljs-string">"/sayhello"</span>)
+ <span class="hljs-meta">@POST</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Student <span class="hljs-title">sayHello</span><span class="hljs-params">(@Valid Student student)</span> </span>{
+ student.setName(<span class="hljs-string">"hello "</span> + student.getName());
+ student.setAge(student.getAge());
+ <span class="hljs-keyword">return</span> student;
+ }
+}
+</code></pre>
+<ul>
+<li>bean类验证</li>
+</ul>
+<p>需要在传入的Student对象前加@Valid,如上图sayHello(@Valid Student student)方法。</p>
+<pre><code class="lang-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Student</span> </span>{
+ <span class="hljs-meta">@NotNull</span>
+ <span class="hljs-keyword">private</span> String name;
+
+ <span class="hljs-meta">@Max</span>(<span class="hljs-number">20</span>)
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> age;
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setName</span><span class="hljs-params">(String name)</span> </span>{
+ <span class="hljs-keyword">this</span>.name = name;
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getName</span><span class="hljs-params">()</span> </span>{
+ <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.name;
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setAge</span><span class="hljs-params">(<span class="hljs-keyword">int</span> age)</span> </span>{
+ <span class="hljs-keyword">this</span>.age = age;
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getAge</span><span class="hljs-params">()</span> </span>{
+ <span class="hljs-keyword">return</span> age;
+ }
+}
+</code></pre>
+<h2 id="自定义返回异常">自定义返回异常</h2>
+<ul>
+<li><p>默认的参数效验器ParameterValidator已经实现了接口ProducerInvokeExtension,按照JSR 349规范处理所需的参数验证。</p>
+<p>如果任何参数验证失败,缺省错误是BAD_REQUEST(400, "Bad Request")。</p>
+<p>返回错误支持自定义扩展,使用SPI机制。</p>
+</li>
+<li><p>可以通过实现接口ExceptionToResponseConverter来自定义返回的错误信息,以ConstraintViolationExceptionToResponseConverter为例。</p>
+<ol>
+<li><p>实现ExceptionToResponseConverter接口,重写方法,其中getOrder方法的返回结果表示该验证器的优先级,值越小优先级越高。</p>
+<pre><code class="lang-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ConstraintViolationExceptionToResponseConverter</span>
+ <span class="hljs-keyword">implements</span> <span class="hljs-title">ExceptionToResponseConverter</span><<span class="hljs-title">ConstraintViolationException</span>> </span>{
+ <span class="hljs-meta">@Override</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Class<ConstraintViolationException> <span class="hljs-title">getExceptionClass</span><span class="hljs-params">()</span> </span>{
+ <span class="hljs-keyword">return</span> ConstraintViolationException.class;
+ }
+
+ <span class="hljs-meta">@Override</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Response <span class="hljs-title">convert</span><span class="hljs-params">(SwaggerInvocation swaggerInvocation, ConstraintViolationException e)</span> </span>{
+ <span class="hljs-keyword">return</span> Response.createFail(<span class="hljs-keyword">new</span> InvocationException(Status.BAD_REQUEST, e.getConstraintViolations().toString()));
+ }
+
+ <span class="hljs-meta">@Override</span>
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getOrder</span><span class="hljs-params">()</span> </span>{
+ <span class="hljs-keyword">return</span> -<span class="hljs-number">100</span>;
+ }
+}
+</code></pre>
+</li>
+<li><p>在META-INF下的services文件夹增加一个文件,以所实现接口x.x.x.ExceptionToResponseConverter(带包名)为名,以具体实现类x.x.x.ConstraintViolationExceptionToResponseConverter(带包名)为内容。</p>
+</li>
+</ol>
+</li>
+</ul>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="downgrade-strategy.html" class="navigation navigation-prev " aria-label="Previous page: 降级策略">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="../protocol.html" class="navigation navigation-next " aria-label="Next page: 通信协议">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"参数效验","level":"1.3.10.4","depth":3,"next":{"title":"通信协议","level":"1.3.11","depth":2,"path":"build-provider/protocol.md","ref":"build-provider/protocol.md","articles":[{"title":"线程模型","level":"1.3.11.1","depth":3,"path":"build-provider/protocol/thread-model.md","ref":"build-provider/protocol/thread-model.md","articles":[]},{"title":"REST over Servlet","level":"1.3.11.2","depth":3,"path":"build-provider/protocol/rest-over-servlet.md","ref":"build-provider/protocol/rest-over-servlet.md","articles":[]},{"title":"REST over Vertx","level":"1.3.11.3","depth":3,"path":"build-provider/protocol/rest-over-vertx.md","ref":"build-provider/protocol/rest-over-vertx.md","articles":[]},{"title":"Highway RPC协议","level":"1.3.11.4","depth":3,"path":"build-provider/protocol/highway-rpc.md","ref":"build-provider/protocol/highway-rpc.md","articles":[]}]},"previous":{"title":"降级策略","level":"1.3.10.3","depth":3,"path":"build-provider/configuration/downgrade-strategy.md","ref":"build-provider/configuration/downgrade-strategy.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/configuration/parameter-validator.md","mtime":"2018-05-16T09:41:23.135Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"../..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../../gitbook/gitbook.js"></script>
+ <script src="../../../gitbook/theme.js"></script>
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
+
+
+
+ </body>
+</html>
+
diff --git a/docs-source/en_US/build-provider/configuration/parameter-validator.md b/docs/en_US/build-provider/configuration/parameter-validator.md
similarity index 100%
rename from docs-source/en_US/build-provider/configuration/parameter-validator.md
rename to docs/en_US/build-provider/configuration/parameter-validator.md
diff --git a/docs/en_US/build-provider/configuration/ratelimite-strategy.html b/docs/en_US/build-provider/configuration/ratelimite-strategy.html
new file mode 100644
index 000000000..b3be2dd49
--- /dev/null
+++ b/docs/en_US/build-provider/configuration/ratelimite-strategy.html
@@ -0,0 +1,1267 @@
+
+<!DOCTYPE HTML>
+<html lang="en_US" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>限流策略 · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="../../../gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../../gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="../../../gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="downgrade-strategy.html" />
+
+
+ <link rel="prev" href="lb-strategy.html" />
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter " data-level="1.1" data-path="../../">
+
+ <a href="../../">
+
+
+ 概述
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="../../catalog/start.html">
+
+ <a href="../../catalog/start.html">
+
+
+ 入门
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="../../start/terminology.html">
+
+ <a href="../../start/terminology.html">
+
+
+ 术语表
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="../../start/architecture.html">
+
+ <a href="../../start/architecture.html">
+
+
+ 微服务系统架构
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="../../start/development-environment.html">
+
+ <a href="../../start/development-environment.html">
+
+
+ 安装本地开发环境
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="../../start/first-sample.html">
+
+ <a href="../../start/first-sample.html">
+
+
+ 开发第一个微服务
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="../../catalog/build-provider.html">
+
+ <a href="../../catalog/build-provider.html">
+
+
+ 开发服务提供者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="../definition/service-definition.html">
+
+ <a href="../definition/service-definition.html">
+
+
+ 服务定义
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="../define-contract.html">
+
+ <a href="../define-contract.html">
+
+
+ 定义服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.3" data-path="../code-first.html">
+
+ <a href="../code-first.html">
+
+
+ 使用隐式契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.4" data-path="../swagger-annotation.html">
+
+ <a href="../swagger-annotation.html">
+
+
+ 使用Swagger注解
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.5" data-path="../springmvc.html">
+
+ <a href="../springmvc.html">
+
+
+ 用SpringMVC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.6" data-path="../jaxrs.html">
+
+ <a href="../jaxrs.html">
+
+
+ 用JAX-RS开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.7" data-path="../transparent-rpc.html">
+
+ <a href="../transparent-rpc.html">
+
+
+ 用透明RPC开发微服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.8" data-path="../listen-address-and-publish-address.html">
+
+ <a href="../listen-address-and-publish-address.html">
+
+
+ 服务监听地址和发布地址
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.9" data-path="../interface-constraints.html">
+
+ <a href="../interface-constraints.html">
+
+
+ 支持的数据类型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10" data-path="../service-configuration.html">
+
+ <a href="../service-configuration.html">
+
+
+ 服务配置
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.10.1" data-path="lb-strategy.html">
+
+ <a href="lb-strategy.html">
+
+
+ 负载均衡策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter active" data-level="1.3.10.2" data-path="ratelimite-strategy.html">
+
+ <a href="ratelimite-strategy.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.3" data-path="downgrade-strategy.html">
+
+ <a href="downgrade-strategy.html">
+
+
+ 降级策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.10.4" data-path="parameter-validator.html">
+
+ <a href="parameter-validator.html">
+
+
+ 参数效验
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11" data-path="../protocol.html">
+
+ <a href="../protocol.html">
+
+
+ 通信协议
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.11.1" data-path="../protocol/thread-model.html">
+
+ <a href="../protocol/thread-model.html">
+
+
+ 线程模型
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.2" data-path="../protocol/rest-over-servlet.html">
+
+ <a href="../protocol/rest-over-servlet.html">
+
+
+ REST over Servlet
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.3" data-path="../protocol/rest-over-vertx.html">
+
+ <a href="../protocol/rest-over-vertx.html">
+
+
+ REST over Vertx
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.11.4" data-path="../protocol/highway-rpc.html">
+
+ <a href="../protocol/highway-rpc.html">
+
+
+ Highway RPC协议
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3.12" data-path="../bootup.html">
+
+ <a href="../bootup.html">
+
+
+ 程序启动逻辑
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.13" data-path="../definition/isolate-relationship.html">
+
+ <a href="../definition/isolate-relationship.html">
+
+
+ 微服务实例之间的逻辑隔离关系
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.14" data-path="../access-log-configuration.html">
+
+ <a href="../access-log-configuration.html">
+
+
+ Access Log配置
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="../../catalog/build-consumer.html">
+
+ <a href="../../catalog/build-consumer.html">
+
+
+ 开发服务消费者
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="../../build-consumer/using-resttemplate.html">
+
+ <a href="../../build-consumer/using-resttemplate.html">
+
+
+ 使用RestTemplate开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="../../build-consumer/develop-consumer-using-rpc.html">
+
+ <a href="../../build-consumer/develop-consumer-using-rpc.html">
+
+
+ 使用RPC方式开发服务消费者
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="../../build-consumer/with-contract.html">
+
+ <a href="../../build-consumer/with-contract.html">
+
+
+ 使用服务契约
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="../../build-consumer/invoke-control.html">
+
+ <a href="../../build-consumer/invoke-control.html">
+
+
+ 调用控制
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.4.1" data-path="../../build-consumer/instance-isolation.html">
+
+ <a href="../../build-consumer/instance-isolation.html">
+
+
+ 实例级故障隔离
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.2" data-path="../../build-consumer/circuit-breaker.html">
+
+ <a href="../../build-consumer/circuit-breaker.html">
+
+
+ 熔断策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.3" data-path="../../build-consumer/flow-control.html">
+
+ <a href="../../build-consumer/flow-control.html">
+
+
+ 限流策略
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4.4" data-path="../../build-consumer/fault-injection.html">
+
+ <a href="../../build-consumer/fault-injection.html">
+
+
+ 故障注入
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="../../catalog/general-develop.html">
+
+ <a href="../../catalog/general-develop.html">
+
+
+ 通用开发
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="../../general-development/metrics.html">
+
+ <a href="../../general-development/metrics.html">
+
+
+ 应用性能监控
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="../../general-development/microservice-invocation-chain.html">
+
+ <a href="../../general-development/microservice-invocation-chain.html">
+
+
+ 微服务调用链
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.3" data-path="../../general-development/customized-tracing.html">
+
+ <a href="../../general-development/customized-tracing.html">
+
+
+ 自定义调用链打点
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.4" data-path="../../general-development/local-develop-test.html">
+
+ <a href="../../general-development/local-develop-test.html">
+
+
+ 本地开发和测试
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.5" data-path="../../general-development/visit-sc.html">
+
+ <a href="../../general-development/visit-sc.html">
+
+
+ 访问服务中心
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.6" data-path="../../general-development/http-filter.html">
+
+ <a href="../../general-development/http-filter.html">
+
+
+ Http Filter
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.7" data-path="../../general-development/file-upload.html">
+
+ <a href="../../general-development/file-upload.html">
+
+
+ 文件上传
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.8" data-path="../../general-development/file-download.html">
+
+ <a href="../../general-development/file-download.html">
+
+
+ 文件下载
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.9" data-path="../../general-development/reactive.html">
+
+ <a href="../../general-development/reactive.html">
+
+
+ Reactive
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.10" data-path="../../general-development/dnsconfig.html">
+
+ <a href="../../general-development/dnsconfig.html">
+
+
+ DNS自定义配置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.11" data-path="../../general-development/dai-li-she-zhi.html">
+
+ <a href="../../general-development/dai-li-she-zhi.html">
+
+
+ 代理设置
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.12" data-path="../../general-development/report-framework-version.html">
+
+ <a href="../../general-development/report-framework-version.html">
+
+
+ 框架上报版本号
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="../../catalog/open-service.html">
+
+ <a href="../../catalog/open-service.html">
+
+
+ 服务能力开放
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="../../edge/nginx.html">
+
+ <a href="../../edge/nginx.html">
+
+
+ 使用confd和Nginx做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="../../edge/zuul.html">
+
+ <a href="../../edge/zuul.html">
+
+
+ 使用zuul做边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.3" data-path="../../edge/by-servicecomb-sdk.html">
+
+ <a href="../../edge/by-servicecomb-sdk.html">
+
+
+ 使用ServiceComb SDK开发边缘服务
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.4" data-path="../../edge/secret-field.html">
+
+ <a href="../../edge/secret-field.html">
+
+
+ 定制序列化和反序列化方法
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="../../catalog/service-package-run.html">
+
+ <a href="../../catalog/service-package-run.html">
+
+
+ 服务打包和运行
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.7.1" data-path="../../packaging/standalone.html">
+
+ <a href="../../packaging/standalone.html">
+
+
+ 以standalone模式打包
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.7.2" data-path="../../packaging/web-container.html">
+
+ <a href="../../packaging/web-container.html">
+
+
+ 以WEB容器模式打包
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="../../catalog/security.html">
+
+ <a href="../../catalog/security.html">
+
+
+ 微服务安全
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.8.1" data-path="../../security/tls.html">
+
+ <a href="../../security/tls.html">
+
+
+ 使用TLS通信
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8.2" data-path="../../security/shi-yong-rsa-ren-zheng.html">
+
+ <a href="../../security/shi-yong-rsa-ren-zheng.html">
+
+
+ 使用RSA认证
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.9" data-path="../../using-java-chassis-in-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot.html">
+
+
+ 在Spring Boot中使用java chassis
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.9.1" data-path="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/components-for-spring-boot.html">
+
+
+ 提供的组件说明
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.2" data-path="../../using-java-chassis-in-spring-boot/java-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/java-application.html">
+
+
+ JAVA应用方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.3" data-path="../../using-java-chassis-in-spring-boot/web-application.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/web-application.html">
+
+
+ Web开发方式开发步骤
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.4" data-path="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-between-java-web.html">
+
+
+ JAVA应用方式和Web开发方式的区别
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.9.5" data-path="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+ <a href="../../using-java-chassis-in-spring-boot/diff-spring-mvc.html">
+
+
+ Spring MVC模式的差异
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.10" data-path="../../question-and-answer/question_answer.html">
+
+ <a href="../../question-and-answer/question_answer.html">
+
+
+ 常见问题
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.10.1" data-path="../../question-and-answer/interface-compatibility.html">
+
+ <a href="../../question-and-answer/interface-compatibility.html">
+
+
+ 微服务接口兼容常见问题
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href="../.." >限流策略</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h2 id="场景描述">场景描述</h2>
+<p>用户在provider端使用限流策略,可以限制指定微服务向其发送请求的频率,达到限制每秒钟最大请求数量的效果。</p>
+<h2 id="注意事项">注意事项</h2>
+<ol>
+<li>限流策略的控制并不是绝对精确的,可能会有少量误差。</li>
+<li>provider端的流量控制是业务层面的功能,不是安全意义上的流量控制,如需防止DDoS攻击,需要结合其他的一系列措施。</li>
+<li>流量控制是微服务级的,不是进程级的。</li>
+</ol>
+<h2 id="配置说明">配置说明</h2>
+<p>限流策略配置在microservice.yaml文件中,相关配置项见表<strong>QPS流控配置项说明</strong>。要开启服务提供者端的限流策略,还需要在处理链中配置服务端限流handler,并添加pom依赖。</p>
+<ul>
+<li>microservice.yaml配置示例如下:<pre><code class="lang-yaml"><span class="hljs-attr">servicecomb:</span>
+<span class="hljs-attr"> handler:</span>
+<span class="hljs-attr"> chain:</span>
+<span class="hljs-attr"> Provider:</span>
+<span class="hljs-attr"> default:</span> qps-flowcontrol-provider
+</code></pre>
+</li>
+<li>添加handler-flowcontrol-qps的pom依赖:<pre><code class="lang-xml"><span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.apache.servicecomb<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>handler-flowcontrol-qps<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">version</span>></span>1.0.0.B003<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
+<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
+</code></pre>
+</li>
+</ul>
+<p><strong>QPS流控配置项说明</strong></p>
+<table>
+<thead>
+<tr>
+<th style="text-align:left">配置项</th>
+<th style="text-align:left">默认值</th>
+<th style="text-align:left">取值范围</th>
+<th style="text-align:left">是否必选</th>
+<th style="text-align:left">含义</th>
+<th style="text-align:left">注意</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:left">servicecomb.flowcontrol.Provider.qps.enabled</td>
+<td style="text-align:left">true</td>
+<td style="text-align:left">true/false</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">是否启用Provider流控</td>
+<td style="text-align:left">-</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.flowcontrol.Provider.qps.limit.[ServiceName].[Schema].[operation]</td>
+<td style="text-align:left">2147483647(max int)</td>
+<td style="text-align:left">(0,2147483647],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">每秒钟允许的请求数</td>
+<td style="text-align:left">支持microservice/schema/operation三个级别的配置,后者的优先级高于前者</td>
+</tr>
+<tr>
+<td style="text-align:left">servicecomb.flowcontrol.Provider.qps.global.limit</td>
+<td style="text-align:left">2147483647(max int)</td>
+<td style="text-align:left">(0,2147483647],整形</td>
+<td style="text-align:left">否</td>
+<td style="text-align:left">provider接受请求流量的全局配置</td>
+<td style="text-align:left">没有具体的流控配置时,此配置生效</td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<p><strong>注意:</strong>
+provider端限流策略配置中的<code>ServiceName</code>指的是调用该provider的consumer,而<code>shema</code>、<code>operation</code>指的是provider自身的。即provider端限流配置的含义是,限制指定consumer调用本provider的某个schema、operation的流量。</p>
+</blockquote>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+ <a href="lb-strategy.html" class="navigation navigation-prev " aria-label="Previous page: 负载均衡策略">
+ <i class="fa fa-angle-left"></i>
+ </a>
+
+
+ <a href="downgrade-strategy.html" class="navigation navigation-next " aria-label="Next page: 降级策略">
+ <i class="fa fa-angle-right"></i>
+ </a>
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"限流策略","level":"1.3.10.2","depth":3,"next":{"title":"降级策略","level":"1.3.10.3","depth":3,"path":"build-provider/configuration/downgrade-strategy.md","ref":"build-provider/configuration/downgrade-strategy.md","articles":[]},"previous":{"title":"负载均衡策略","level":"1.3.10.1","depth":3,"path":"build-provider/configuration/lb-strategy.md","ref":"build-provider/configuration/lb-strategy.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"introduction.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"language":"en_US","gitbook":"*"},"file":{"path":"build-provider/configuration/ratelimite-strategy.md","mtime":"2018-05-16T09:41:23.137Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-05-16T09:41:42.633Z"},"basePath":"../..","book":{"language":"en_US"}});
+ });
+ </script>
+</div>
+
+
+ <script src="../../../gitbook/gitbook.js"></script>
+ <script src="../../../gitbook/theme.js"></script>
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search-engine.js"></script>
+
+
+
+ <script src="../../../gitbook/gitbook-plugin-search/search.js"></script>
+
+
(This diff was longer than 20,000 lines, and has been truncated...)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services