You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/02/19 01:48:04 UTC

[servicecomb-docs] branch master updated: [SCB-1776] add BMI documentation to java-chasiss docs

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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new d3c8d1c  [SCB-1776] add BMI documentation to java-chasiss docs
d3c8d1c is described below

commit d3c8d1c8386c157b0e85f85a7f01b2d1e88201a8
Author: liubao <bi...@qq.com>
AuthorDate: Tue Feb 18 17:43:16 2020 +0800

    [SCB-1776] add BMI documentation to java-chasiss docs
---
 .../zh_CN/docs/config/general-config.md            |   4 +-
 .../zh_CN/docs/featured-topics.md                  |   0
 .../zh_CN/docs/featured-topics/application-bmi.md  |  19 ++
 .../application-bmi/bmi-interface.png              | Bin 0 -> 57307 bytes
 .../application-bmi/distributed-tracing-result.png | Bin 0 -> 20091 bytes
 .../application-bmi/distributed-tracing.md         |  66 +++++++
 .../application-bmi/flow-control-result.png        | Bin 0 -> 52518 bytes
 .../application-bmi/flow-control.md                |  45 +++++
 .../application-bmi/load-balance-result.png        | Bin 0 -> 56794 bytes
 .../application-bmi/load-balance.md                |  25 +++
 .../application-bmi/quick-start-advance.md         |  11 ++
 .../application-bmi/quick-start-bmi.md             | 220 +++++++++++++++++++++
 .../quick-start-sample-workflow.png                | Bin 0 -> 20604 bytes
 .../featured-topics/application-bmi/quick-start.md |  48 +++++
 .../application-bmi/service-management-result.png  | Bin 0 -> 47582 bytes
 .../application-bmi/service-management.md          |  51 +++++
 .../docs/featured-topics/application-porter.md     |   2 +-
 java-chassis-reference/zh_CN/mkdocs.yml            |   1 +
 18 files changed, 489 insertions(+), 3 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/config/general-config.md b/java-chassis-reference/zh_CN/docs/config/general-config.md
index 43254ca..1fbb8d4 100644
--- a/java-chassis-reference/zh_CN/docs/config/general-config.md
+++ b/java-chassis-reference/zh_CN/docs/config/general-config.md
@@ -43,11 +43,11 @@ servicecomb:
 ### 配置中心(动态配置)
 
 配置中心是微服务架构下一个非常重要的中间件,通过配置中心用户可以增加和删除配置信息,配置信息会通过不同的通知机制(通常包括
-PULL 和 PUSH), 将配置的变化推送到微服务实例。 java-chassis 运行用户使用不同的配置中心, 目前支持用户使用如下几种配置中心:
+PULL 和 PUSH), 将配置的变化推送到微服务实例。 java-chassis 允许用户使用不同的配置中心, 目前支持用户使用如下几种配置中心:
 
 * 华为云配置中心
 
-华为云配置中心是华为云CSE产品的一个部件,java-chassis 最早使用这个配置配置。 对接这个配置中心的代码在 config-cc 模块实现。
+华为云配置中心是华为云CSE产品的一个部件,java-chassis 最早使用它作为配置中心。 对接这个配置中心的代码在 config-cc 模块实现。
 可以从[轻量化微服务引擎](https://cse-bucket.obs.myhwclouds.com/LocalCSE/Local-CSE-1.0.3.zip)下载本地使用的版本。也可以
 直接访问华为云 [ServiceStage](https://console.huaweicloud.com/servicestage) 产品,使用在线的版本。
 
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics.md b/java-chassis-reference/zh_CN/docs/featured-topics.md
deleted file mode 100644
index e69de29..0000000
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi.md
new file mode 100644
index 0000000..d1599f0
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi.md
@@ -0,0 +1,19 @@
+# Java-Chassis 入门指南 - 开发BMI应用
+
+本指南将以一个简单的 **体质指数(BMI)** 应用开展微服务之旅。[体质指数](https://baike.baidu.com/item/%E4%BD%93%E8%B4%A8%E6%8C%87%E6%95%B0)主要用于衡量人体胖瘦程度。该应用主要包含两个微服务:
+
+* **体质指数计算器**:负责处理运算事务。
+
+* **体质指数界面**:提供用户界面及网关服务。
+
+其运行流程为:  
+![体质指数应用运行流程](application-bmi/quick-start-sample-workflow.png)
+
+其中,虚线表示服务注册及服务发现的过程。
+
+本指南包含如下内容:
+
+* [快速入门](application-bmi/quick-start.md)
+* [体质指数微服务应用开发](application-bmi/quick-start-bmi.md)
+* [微服务开发进阶](application-bmi/quick-start-advance.md)
+
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/bmi-interface.png b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/bmi-interface.png
new file mode 100644
index 0000000..88f944e
Binary files /dev/null and b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/bmi-interface.png differ
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/distributed-tracing-result.png b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/distributed-tracing-result.png
new file mode 100644
index 0000000..7e649b4
Binary files /dev/null and b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/distributed-tracing-result.png differ
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/distributed-tracing.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/distributed-tracing.md
new file mode 100644
index 0000000..274cefe
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/distributed-tracing.md
@@ -0,0 +1,66 @@
+# 分布式调用链追踪
+
+分布式调用链追踪用于有效地监控微服务的网络延时并可视化微服务中的数据流转。本指南将展示如何在 *体质指数* 应用中使用 **ServiceComb** 提供的分布式调用链追踪能力。
+
+## 前言
+
+在您进一步阅读之前,请确保您已阅读了[体质指数微服务应用开发](quick-start-bmi.md),并已成功运行体质指数微服务。
+
+## 启用
+
+* 在 *体质指数计算器* 的 `pom.xml` 文件中添加依赖项:
+
+```xml
+   <dependency>
+     <groupId>org.apache.servicecomb</groupId>
+     <artifactId>handler-tracing-zipkin</artifactId>
+   </dependency>
+```
+
+* 在 *体质指数计算器* 的 `application.yml` 文件中添加分布式追踪的处理链:
+
+```yaml
+servicecomb:
+ handler:
+   chain:
+     Provider:
+       default: tracing-provider
+```
+
+* 在 *体质指数界面* 的 `pom.xml` 文件中添加依赖项:
+
+```xml
+   <dependency>
+     <groupId>org.apache.servicecomb</groupId>
+     <artifactId>handler-tracing-zipkin</artifactId>
+   </dependency>
+```
+
+体质指数应用中已配置好了上述配置项,您只需执行以下几步即可:
+
+* 使用 Docker 运行 *Zipkin* 分布式追踪服务:
+
+```bash
+docker run -d -p 9411:9411 openzipkin/zipkin
+```
+
+* 重启 *体质指数计算器* 微服务:
+
+```bash
+mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dservicecomb.handler.chain.Provider.default=tracing-provider"
+```
+   
+* 重启 *体质指数界面* 微服务:
+
+```bash
+mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dservicecomb.handler.chain.Consumer.default=loadbalance,tracing-consumer"
+```
+
+## 验证
+
+* 访问 <a>http://localhost:8889</a> ,在身高和体重栏处输入正数,并点击 *Submit* 按钮。
+
+* 访问 <a>http://localhost:9411</a> ,查看分布式调用追踪情况,可得下方界面。
+
+![分布式追踪效果](distributed-tracing-result.png)
+
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/flow-control-result.png b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/flow-control-result.png
new file mode 100644
index 0000000..71f9409
Binary files /dev/null and b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/flow-control-result.png differ
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/flow-control.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/flow-control.md
new file mode 100644
index 0000000..0138189
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/flow-control.md
@@ -0,0 +1,45 @@
+# 流量控制
+
+流量控制机制通过控制数据传输速率来避免微服务过载运行。本指南将展示如何在 *体质指数* 应用中使用 **ServiceComb** 提供的流量控制能力。
+
+## 前言
+
+在您进一步阅读之前,请确保您已阅读了[体质指数微服务应用开发](quick-start-bmi.md),并已成功运行体质指数微服务。
+
+## 开启
+
+* 在 *体质指数计算器* 的 `pom.xml` 文件中添加依赖项:
+
+```xml
+<dependency>
+  <groupId>org.apache.servicecomb</groupId>
+  <artifactId>handler-flowcontrol-qps</artifactId>
+</dependency>
+```
+
+* 在 *体质指数计算器* 的 `microservice.yaml` 文件中指明使用流量控制的处理链及指定流控策略:
+
+```yaml
+servicecomb:
+ handler:
+   chain:
+     Provider:
+       default: qps-flowcontrol-provider
+ flowcontrol:
+   Provider:
+     qps:
+       limit:
+         gateway: 1
+```
+
+体质指数应用中已配置好了上述配置项,您只需关闭之前运行的 **体质指数计算器**,然后再用以下指令重新运行即可:
+
+```bash
+mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dcse.handler.chain.Provider.default=qps-flowcontrol-provider -Dcse.flowcontrol.Provider.qps.limit.gateway=1"
+```
+
+## 验证 
+
+访问 <a>http://localhost:8889</a>,在身高和体重的输入框中输入正数,尝试在1秒内多次点击 *Submit* 按钮,此时就能看到网页由左侧的正常的界面变成了右侧提示由于流控受限而请求被拒的界面。
+
+![流量控制效果图](flow-control-result.png)
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/load-balance-result.png b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/load-balance-result.png
new file mode 100644
index 0000000..ca379ae
Binary files /dev/null and b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/load-balance-result.png differ
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/load-balance.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/load-balance.md
new file mode 100644
index 0000000..0063f2b
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/load-balance.md
@@ -0,0 +1,25 @@
+# 负载均衡
+
+当对体质指数计算器进行水平扩展时,需要将请求均衡地分发到多个体质指数计算器上。本指南将展示如何在 *体质指数* 应用中使用 **ServiceComb** 提供的负载均衡能力。
+
+## 前言
+
+在您进一步阅读之前,请确保您已阅读了[体质指数微服务应用开发](quick-start-bmi.md),并已成功运行体质指数微服务。
+
+## 开启
+
+默认情况下会使用内置的一个简单的负载均衡的实现,不需要额外的配置。
+
+## 验证
+
+对 *体质指数计算器* 微服务进行水平扩展,使其运行实例数为2,即新增一个运行实例:
+
+```bash
+mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dserver.port=7779 -Dservicecomb.rest.address=0.0.0.0:7779"
+```
+
+为了便于区分不同的运行实例,在体质指数计算器的实现中新增了返回实例ID和运行时间的接口,详情可查看[体质指数计算器的完整实现代码](https://github.com/apache/servicecomb-java-chassis/tree/master/samples/bmi/calculator)。而为了避免端口冲突,新的实例在另一个端口上运行。
+
+此时点击 *Submit* 按钮就可以看到如下两个界面中的实例ID交替出现。
+
+![负载均衡效果](load-balance-result.png)
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-advance.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-advance.md
new file mode 100644
index 0000000..322cfeb
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-advance.md
@@ -0,0 +1,11 @@
+# 微服务开发进阶
+
+本指南将带您进入**体质指数**微服务应用开发的进阶之旅。在此旅程,您将能学到 **ServiceComb** 框架如何通过处理链保证微服务的可靠性:
+
+* [负载均衡](load-balance.md)。均衡地将请求分发至多个服务实例中处理。
+
+* [流量控制](flow-control.md)。限制单位时间内访问某个微服务的请求数量。
+
+* [服务治理](service-management.md)。在微服务应用中隔离异常服务并阻止异常传递。
+
+* [分布式追踪](distributed-tracing.md)。可视化微服务间的数据流转。
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-bmi.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-bmi.md
new file mode 100644
index 0000000..500dd44
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-bmi.md
@@ -0,0 +1,220 @@
+# 体质指数微服务应用开发
+
+在您进一步阅读之前,请确保您已阅读了[快速入门](quick-start.md),并已成功运行**体质指数**微服务。接下来将进入**体质指数**微服务应用的开发之旅。
+
+## 快速开发微服务应用
+BMI主要由两个微服务组成:
+
+* **体质指数计算器**:负责处理运算事务。
+
+* **体质指数界面**:提供用户界面及网关服务。
+
+在开始前,需要先在服务的父工程中添加以下依赖项:
+
+```java
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.servicecomb</groupId>
+        <artifactId>java-chassis-dependencies</artifactId>
+        <version>${project.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+```
+**注意**: `java-chassis-dependencies` 这个依赖是以pom的形式导入来统一项目中的依赖项的版本管理。
+
+下面将对这两个微服务的实现进行介绍,其代码已托管于[github](https://github.com/apache/servicecomb-java-chassis/tree/master/samples/bmi)上。
+
+### 体质指数计算器实现
+体质指数计算器提供运算服务,其实现分为三部分:
+
+* 具体运算实现
+
+* 服务端点定义
+
+* 服务启动入口
+
+#### 具体运算实现
+本模块负责计算体质指数,根据公式 `体质指数=体重 / 身高^2 ` 进行实现,代码如下:
+
+```java
+public interface CalculatorService {
+  double calculate(double height, double weight);
+}
+
+@Service
+public class CalculatorServiceImpl implements CalculatorService {
+  @Override
+  public double calculate(double height, double weight) {
+    if (height <= 0 || weight <= 0) {
+      throw new IllegalArgumentException("Arguments must be above 0");
+    }
+    double heightInMeter = height / 100;
+    return weight / (heightInMeter * heightInMeter);
+  }
+}
+``` 
+
+#### 服务端点定义
+服务端点用于生成服务契约,使得服务间能无缝进行通信。首先定义端点接口:
+
+```java
+public interface CalculatorEndpoint {
+  double calculate(double height, double weight);
+}
+```
+
+引入 **ServiceComb** 依赖:
+
+```xml
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>java-chassis-spring-boot-starter-servlet</artifactId>
+    </dependency>
+```
+
+暴露运算服务的Restful端点:
+
+```java
+@RestSchema(schemaId = "calculatorRestEndpoint")
+@RequestMapping("/")
+public class CalculatorRestEndpoint implements CalculatorEndpoint {
+
+  private final CalculatorService calculatorService;
+
+  @Autowired
+  public CalculatorRestEndpoint(CalculatorService calculatorService) {
+    this.calculatorService = calculatorService;
+  }
+
+  @Override
+  @GetMapping("/bmi")
+  public double calculate(double height, double weight) {
+    return calculatorService.calculate(height, weight);
+  }
+}
+```
+
+这里用`@RestSchema`注释端点后, **ServiceComb** 微服务框架会自动生成对应的服务端点契约,并根据
+如下的 `application.yml` 文件中的定义来配置端点端口,将契约和服务一起注册到服务注册中心。
+
+```yaml
+APPLICATION_ID: bmi
+service_description:
+  name: calculator
+  version: 0.0.1
+servicecomb:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+  rest:
+    address: 0.0.0.0:7777
+```
+
+***注意***: **ServiceComb**默认的配置文件名称是`microservice.yaml`。 本应用采用 spring boot作为运行环境,因此遵循
+spring boot的规范,配置文件名称使用 `application.yml`。
+
+#### 服务启动入口
+服务启动入口中只需添加 `@EnableServiceComb` 的注解即可启用 *ServiceComb* 微服务框架,代码如下:
+
+```java
+@SpringBootApplication
+@EnableServiceComb
+public class CalculatorApplication {
+  public static void main(String[] args) {
+    SpringApplication.run(CalculatorApplication.class, args);
+  }
+}
+```
+
+### 体质指数界面实现
+本模块负责提供用户界面及网关服务。其实现主要分为三部分:
+
+* 前端界面
+
+* 网关及路由规则
+
+* 服务启动入口
+
+其中,前端界面的组件使用了[Bootstrap](http://getbootstrap.com/)来开发。
+
+#### 网关及路由规则
+网关服务使用 **ServiceComb** 提供的 [Edge Service](http://localhost:8000/edge/by-servicecomb-sdk/) 来实现。
+
+引入依赖:
+```xml
+<dependency>
+  <groupId>org.apache.servicecomb</groupId>
+  <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
+</dependency>
+<dependency>
+  <groupId>org.apache.servicecomb</groupId>
+  <artifactId>edge-core</artifactId>
+</dependency>
+```
+
+在 `application.yml` 文件中配置路由规则及服务端口信息:
+
+```yaml
+ervicecomb:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+  rest:
+    address: 0.0.0.0:8889
+
+  tracing:
+    enabled: false
+
+  http:
+    dispatcher:
+      edge:
+        default:
+          enabled: false
+          prefix: api
+          withVersion: false
+          prefixSegmentCount: 1
+        url:
+          enabled: true
+          mappings:
+            calculator:
+              prefixSegmentCount: 1
+              path: "/calculator/.*"
+              microserviceName: calculator
+              versionRule: 0.0.0+
+
+# This is web root for windows server, change this path according to where you put your source code
+gateway:
+  webroot: /code/servicecomb-samples/java-chassis-samples/bmi/webapp/src/main/resources/static
+```
+
+其中 `servicecomb.http.dispatcher.edge.default.enabled` 禁用了默认的路由规则, `servicecomb.http.dispatcher.edge.url.enabled`
+启用了基于URL映射的路由规则。 规则的含义表示将URL为 `/calculator/.*` 的请求转发到 `calculator`服务。
+
+`gateway.webroot` 配置了静态页面所在的目录位置。 示例里面采用的是 Windows 目录环境,如果采用 Linux 环境,需要配置相对路径。
+
+`StaticWebpageDispatcher` 扩展了 Edge Service 的转发规则, 使用了 vert.x 提供的 `StaticHandler` 发布静态页面。 Edge 
+Service 采用 SPI 的方式扩展 Dispatcher, 需要创建文件 `org.apache.servicecomb.transport.rest.vertx.VertxHttpDispatcher`。 
+
+#### 服务启动入口
+
+服务启动入口也只需要声明启用 `ServiceComb` 即可。
+
+```java
+@SpringBootApplication
+@EnableServiceComb
+public class GatewayApplication {
+  public static void main(String[] args) {
+    new SpringApplicationBuilder().web(WebApplicationType.NONE).sources(GatewayApplication.class).run(args);
+  }
+}
+```
+
+至此,**体质指数**应用已开发完毕,您可以通过[快速入门](quick-start.md)中的步骤对其进行验证。
+
+## 下一步
+
+* 阅读 [微服务开发进阶](quick-start-advance.md)
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-sample-workflow.png b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-sample-workflow.png
new file mode 100644
index 0000000..f86387b
Binary files /dev/null and b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start-sample-workflow.png differ
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start.md
new file mode 100644
index 0000000..5371922
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/quick-start.md
@@ -0,0 +1,48 @@
+# 快速入门
+
+## 安装 Java 开发环境
+
+* 安装**git**,详情可参考[git安装教程](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)。
+
+* 安装JDK 1.8,详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html)。
+
+* 安装Maven 3.x,详情可参考[Maven安装教程](https://maven.apache.org/install.html)。
+
+* 下载ServiceComb-Sample
+
+```bash
+git clone https://github.com/apache/servicecomb-samples.git
+cd servicecomb-samples/java-chassis-samples/bmi
+mvn clean install
+```
+
+## 运行 Service Center
+在 **ServiceComb** 微服务框架中,**Service Center** 提供服务注册及服务发现功能,可直接使用 Docker 运行。 
+
+```bash
+docker pull servicecomb/service-center
+docker run -d -p 30100:30100 servicecomb/service-center:latest
+```
+
+*您可以通过阅读[环境安装](http://servicecomb.apache.org/docs/products/service-center/install/)获取在本地以二进制方式运行Service Center的方法。*
+
+## 运行微服务应用
+
+* 进入 **体质指数** 应用代码目录。
+
+```bash
+cd servicecomb-samples/java-chassis-samples/bmi
+```
+
+   **注意**:在windows开发环境下,docker是在虚拟机中启动,因此需要修改微服务的 **Service Center** IP地址为虚拟机IP地址。修改2个配置文件[calculator\|webapp]/src/main/resources/microservice.yaml,将其中<a>http://127.0.0.1:30100</a>修改为<a>http://192.168.99.100:30100</a>,其中192.168.99.100是虚拟机IP,需要与开发环境中的虚拟机IP保持一致。
+
+* 启动 **体质指数计算器** 和 **体质指数界面** 微服务,分别执行以下指令:
+
+```bash
+cd calculator; mvn spring-boot:run
+cd webapp; mvn spring-boot:run
+```
+
+* 验证服务。微服务启动完毕后,即可通过 <a>http://localhost:8889</a> 访问 **体质指数** 应用,届时将能看到如下界面,并可输入您的身高和体重信息验证服务是否正常运行。
+
+   ![体质指数应用运行界面](bmi-interface.png)
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/service-management-result.png b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/service-management-result.png
new file mode 100644
index 0000000..c01ade8
Binary files /dev/null and b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/service-management-result.png differ
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/service-management.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/service-management.md
new file mode 100644
index 0000000..215e523
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-bmi/service-management.md
@@ -0,0 +1,51 @@
+# 服务治理
+
+服务治理主要用于解决或缓解服务雪崩的情况,即个别微服务表现异常时,系统能对其进行容错处理,从而避免资源的耗尽。本指南将会展示如何在 *体质指数* 应用中使用 **ServiceComb** 提供的服务治理能力。
+
+## 前言
+
+在您进一步阅读之前,请确保您已阅读了[体质指数微服务应用开发](quick-start-bmi.md),并已成功运行体质指数微服务。
+
+## 启用
+
+* 在 *体质指数计算器* 的 `pom.xml` 文件中添加依赖项:
+
+```xml
+   <dependency>
+     <groupId>org.apache.servicecomb</groupId>
+     <artifactId>handler-bizkeeper</artifactId>
+   </dependency>
+```
+
+* 在 *体质指数计算器* 的 `application.yml` 文件中指明使用服务治理的处理链及指定熔断和容错策略:
+
+```yaml
+servicecomb:
+ handler:
+   chain:
+     Provider:
+       default: bizkeeper-provider
+ circuitBreaker:
+   Provider:
+     calculator:
+       requestVolumeThreshold: 3
+ fallbackpolicy:
+   Provider:
+     policy: returnnull
+```
+
+体质指数应用中已配置好了上述配置项,您只需重新运行 **体质指数计算器**:
+
+```bash
+mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dcse.handler.chain.Provider.default=bizkeeper-provider -Dcse.circuitBreaker.Provider.calculator.requestVolumeThreshold=3 -Dcse.fallbackpolicy.Provider.policy=returnnull"
+```
+
+## 验证
+
+* 使服务进入熔断状态。访问 <a>http://localhost:8889</a>,在身高或体重的输入框中输入一个负数,连续点击三次或以上 *Submit* 按钮,此时在网页下方能看到类似左图的界面。
+
+* 验证服务处于熔断状态。在身高和体重的输入框中输入正数,再次点击 *Submit* 按钮,此时看到的界面依然是类似左图的界面。同时在 *体质指数计算器* 运行日志也能看到调用不再抛出异常,而是出现类似 `fallback called` 的日志。
+
+* 验证服务恢复正常。约15秒后,在身高和体重的输入框中输入正数,点击 *Submit* 按钮,此时界面显示正常。
+
+   ![服务治理效果](service-management-result.png)
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/application-porter.md b/java-chassis-reference/zh_CN/docs/featured-topics/application-porter.md
index a6ee34b..757b626 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/application-porter.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/application-porter.md
@@ -1,4 +1,4 @@
-# 示例项目:porter
+# Java-Chassis 入门指南 - 开发 porter 应用
 
 示例项目包含如下章节:
 
diff --git a/java-chassis-reference/zh_CN/mkdocs.yml b/java-chassis-reference/zh_CN/mkdocs.yml
index a6f3c54..5c7ae21 100644
--- a/java-chassis-reference/zh_CN/mkdocs.yml
+++ b/java-chassis-reference/zh_CN/mkdocs.yml
@@ -7,6 +7,7 @@ nav:
     - 微服务系统架构: 'start/architecture.md'
     - 安装本地开发环境: 'start/development-environment.md'
     - 开发第一个微服务: start/first-sample.md
+    - 完整例子-bmi应用: featured-topics/application-bmi.md
     - 完整例子-porter应用: featured-topics/application-porter.md
 - 开发服务提供者: 
     - 服务定义: build-provider/definition/service-definition.md