You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by jb...@apache.org on 2017/12/12 07:05:19 UTC

[01/51] incubator-servicecomb-website git commit: syncd user guide

Repository: incubator-servicecomb-website
Updated Branches:
  refs/heads/asf-site [created] d18d3e627


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/use-servicecomb-in-spring-boot.md
----------------------------------------------------------------------
diff --git a/_users/cn/use-servicecomb-in-spring-boot.md b/_users/cn/use-servicecomb-in-spring-boot.md
index 74581e6..e622e92 100644
--- a/_users/cn/use-servicecomb-in-spring-boot.md
+++ b/_users/cn/use-servicecomb-in-spring-boot.md
@@ -17,7 +17,9 @@ redirect_from:
 
 ### 场景描述
 
-* SpringCloud应用默认情况下由Spring Cloud Eureka提供在分布式环境下的服务发现和服务注册的功能。![](file:///C:\Users\L00356~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.gif)![](/start/使用SC和GS管理SpringCloud应用.png)
+* SpringCloud应用默认情况下由Spring Cloud Eureka提供在分布式环境下的服务发现和服务注册的功能。
+
+   ![](/assets/images/manage_springcloud_application_using_sc_and_gs.png)
 
 * ServiceComb微服务框架中的Service Center用于服务元数据以及服务实例元数据的管理和处理注册、发现,同时还支持以下功能:
 
@@ -143,7 +145,7 @@ redirect_from:
 ## 在ServiceComb框架中集成Spring Boot框架
 ### 概念阐述
 
-  本小节介绍了在ServiceComb框架中集成SpringBoot框架的好处和操作步骤。
+本小节介绍了在ServiceComb框架中集成SpringBoot框架的好处和操作步骤。
 
 ### 场景描述
 
@@ -183,7 +185,7 @@ redirect_from:
 
    ```xml
    <dependency> 
-     <groupId>io.servicecomb</groupId>  
+     <groupId>io.servicecomb</groupId>
      <artifactId>spring-boot-starter-provider</artifactId> 
    </dependency>
    ```
@@ -192,11 +194,11 @@ redirect_from:
 
    ```xml
    <dependency> 
-     <groupId>org.springframework.boot</groupId>  
+     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId> 
    </dependency>
    <dependency> 
-     <groupId>org.springframework.boot</groupId>  
+     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency>
    ```
@@ -219,7 +221,7 @@ redirect_from:
      public static void main(final String[] args) {
        Log4jUtils.init();
       //BeanUtils.init();
-      SpringApplication.run(xxxServer/Client.class, args)
+      SpringApplication.run(xxxServerOrClient.class, args)
      }
    }
    ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/use-tls.md
----------------------------------------------------------------------
diff --git a/_users/cn/use-tls.md b/_users/cn/use-tls.md
new file mode 100644
index 0000000..098c1c6
--- /dev/null
+++ b/_users/cn/use-tls.md
@@ -0,0 +1,145 @@
+---
+title: "使用TLS通信"
+lang: cn
+ref: use-tls
+permalink: /cn/users/use-tls/
+excerpt: "使用TLS通信"
+last_modified_at: 2017-08-15T15:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+## 场景描述
+
+用户通过简单的配置即可启用TLS通信,以保障数据的传输安全。
+
+## 外部服务通信配置
+
+与外部服务通信相关的配置写在microservice.yaml文件中。
+
+* 服务中心TLS通信配置
+   微服务与服务中心的连接可以通过将http改为https启用TLS通信,配置示例如下:
+
+   ```yaml
+   cse:
+     service:
+       registry:
+         address: https://127.0.0.1:30100
+   ```
+
+* 服务提供者启用TLS通信
+   服务提供者在配置服务监听地址时,可以通过在地址后面追加`?sslEnabled=true`开启TLS通信,示例如下:
+
+   ```yaml
+   cse:
+     rest:
+       address: 0.0.0.0:8080?sslEnabled=true
+     highway:
+       address: 0.0.0.0:7070?sslEnabled=true
+   ```
+
+## 证书配置
+
+证书配置项写在microservice.yaml文件中,支持统一制定证书,也可以添加tag进行更细粒度的配置,有tag的配置会覆盖全局配置,配置格式如下:
+
+```yaml
+ssl.[tag].[property]
+```
+
+证书配置项见下表证书配置项说明表。
+
+**表1 证书配置项说明表**
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| ssl.protocols | TLSv1.2 | - | 否 | 协议列表 | 使用逗号分隔 |
+| ssl.ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256 | - | 否 | 算法列表 | 使用逗号分隔 |
+| ssl.authPeer | true | - | 否 | 是否认证对端 | - |
+| ssl.checkCN.host | true | - | 否 | 是否对证书的CN进行检查 | 该配置项只对Consumer端,并且使用http协议有效,即Consumser端使用rest通道有效。对于Provider端、highway通道等无效。检查CN的目的是防止服务器被钓鱼,参考标准定义:[https://tools.ietf.org/html/rfc2818。](https://tools.ietf.org/html/rfc2818。) |
+| ssl.trustStore | trust.jks | - | 否 | 信任证书文件 | - |
+| ssl.trustStoreType | JKS | - | 否 | 信任证书类型 | - |
+| ssl.trustStoreValue | - | - | 否 | 信任证书密码 | - |
+| ssl.keyStore | server.p12 | - | 否 | 身份证书文件 | - |
+| ssl.keyStoreType | PKCS12 | - | 否 | 身份证书类型 | - |
+| ssl.keyStoreValue | - | - | 否 | 身份证书密码 | - |
+| ssl.crl | revoke.crl | - | 否 | 吊销证书文件 | - |
+| ssl.sslCustomClass | - | com.huawei.paas.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
+
+> **说明**:
+>
+> * 默认的协议算法是高强度加密算法,JDK需要安装对应的策略文件,参考:[http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)。 您可以在配置文件配置使用非高强度算法。
+> * 微服务消费者,可以针对不同的提供者指定证书(当前证书是按照HOST签发的,不同的提供者都使用一份证书存储介质,这份介质同时给微服务访问服务中心和配置中心使用)。
+
+## 服务中心的证书配置
+
+目前支持使用环境变量来配置服务中心的TLS认证方式,默认开启TLS通信,双向认证模式,认证对端时同时校验对端是否匹配证书(CommonName)字段。服务管理中心的证书配置项说明见下表服务中心TLS证书配置项说明。
+
+**表2 服务中心TLS证书配置项说明**
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| CSE\_SSL\_MODE | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置协议模式 | - |
+| CSE\_SSL\_VERIFY\_CLIENT | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置HTTPS模式下是否认证对端 | - |
+| CSE\_SSL\_PASSPHASE | - | - | 否 | 设置HTTPS模式下的证书密钥访问密码 | - |
+
+服务管理中心配置文件为$APP\_ROOT/conf/app.conf,配置项见,该配置暂不支持环境变量方式设置。
+
+表3 服务中心配置文件
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| ssl\_protocols | TLSv1.2 | - | 否 | 通信使用的SSL版本 | - |
+| ssl\_ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA | - | 否 | 配置使用算法列表 | 由于服务中心支持HTTP/2协议,所以ssl\_ciphers必须配置有TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256算法。TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256、TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA被列为HTTP/2协议的不安全算法黑名单,但为了客户端算法兼容性,存在时必须配置到最后一位。 |
+
+## 密钥物料及证书存放路径
+
+**表4 密钥物料及证书存放路径**
+
+| 配置项 | 含义 | 对应环境变量 | 注意 |
+| :--- | :--- | :--- | :--- |
+| / | - | - | - |
+| /opt | - | - | - |
+| /opt/CSE | - | INSTALL\_ROOT | - |
+| /opt/CSE/etc | - | - | - |
+| /opt/CSE/etc/cipher | 密钥物料存放目录 | CIPHER\_ROOT | - |
+| /opt/CSE/etc/ssl | 证书存放目录 | SSL\_ROOT | - |
+| /opt/CSE/etc/ssl/trust.cer | 授信CA | - | - |
+| /opt/CSE/etc/ssl/server\_key.pem | 已加密服务端私钥文件 | - | - |
+| /opt/CSE/etc/ssl/server.cer | 服务器证书 | - | - |
+| /opt/CSE/etc/ssl/cert\_pwd | 用于存放解密私钥的对称加密密文文件 | - | - |
+| /opt/CSE/apps | - | - | - |
+| /opt/CSE/apps/ServiceCenter | - | APP\_ROOT | - |
+| /opt/CSE/apps/ServiceCenter/conf | 服务管理中心配置文件目录 | - | - |
+| /opt/CSE/apps/ServiceCenter/conf/app.conf | 应用配置文件 | - | - |
+
+## 示例代码
+
+microservice.yaml文件中启用TLS通信的配置示例如下:
+```yaml
+cse:
+  service:
+    registry:
+      address: https://127.0.0.1:30100
+  config:
+    client:
+      serverUri: https://127.0.0.1:30103
+  rest:
+    address: 0.0.0.0:8080?sslEnabled=true
+  highway:
+    address: 0.0.0.0:7070?sslEnabled=true
+
+#########SSL options
+ssl.protocols: TLSv1.2
+ssl.authPeer: true
+ssl.checkCN.host: true
+
+#########certificates config
+ssl.trustStore: trust.jks
+ssl.trustStoreType: JKS
+ssl.trustStoreValue: Changeme_123
+ssl.keyStore: server.p12
+ssl.keyStoreType: PKCS12
+ssl.keyStoreValue: Changeme_123
+ssl.crl: revoke.crl
+ssl.sslCustomClass: io.servicecomb.demo.DemoSSLCustom
+```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/zuul.md
----------------------------------------------------------------------
diff --git a/_users/cn/zuul.md b/_users/cn/zuul.md
index f90ebfa..fd46e62 100644
--- a/_users/cn/zuul.md
+++ b/_users/cn/zuul.md
@@ -14,11 +14,11 @@ redirect_from:
 
 ### API Gateway:
 
-  API Gateway是一个服务器,也可以说是进入系统的唯一节点。API Gateway封装内部系统的架构,并且提供API给各个客户端。
+API Gateway是一个服务器,也可以说是进入系统的唯一节点。API Gateway封装内部系统的架构,并且提供API给各个客户端。
 
 ### Zuul
 
-  Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器,可以使用Zuul进行以下操作:
+Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器,可以使用Zuul进行以下操作:
 
 * 认证
 * 洞察
@@ -31,19 +31,19 @@ redirect_from:
 * 静态相响应处理
 * 主动/被动流量管理
 
-  本小节主要介绍在SpringBoot应用中使用Zuul做API Gateway。关于Zuul的详细功能介绍请参考文档[路由器和过滤器:Zuul](https://springcloud.cc/spring-cloud-dalston.html#_router_and_filter_zuul)。
+本小节主要介绍在SpringBoot应用中使用Zuul做API Gateway。关于Zuul的详细功能介绍请参考文档[路由器和过滤器:Zuul](https://springcloud.cc/spring-cloud-dalston.html#_router_and_filter_zuul)。
 
 ## 场景描述
 
-  Zuul做API Gateway,即建立一个Zuul Proxy应用,在该Proxy应用中统一定义所有的微服务访问入口,通过使用不同的前缀\(stripped\)来区分各个微服务。本小节通过建立一个ZuulProxy SpringBoot应用来演示Zuul的API Gateway功能。
+Zuul做API Gateway,即建立一个Zuul Proxy应用,在该Proxy应用中统一定义所有的微服务访问入口,通过使用不同的前缀\(stripped\)来区分各个微服务。本小节通过建立一个ZuulProxy SpringBoot应用来演示Zuul的API Gateway功能。
 
 ## 注意事项
 
-  本小节介绍的ZuulProxy和ZuulServer等demo都是基于SpringBoot和ServiceComb框架的应用,具体请参考[在ServiceComb框架中集成SpringBoot框架](/cn/users/use-servicecomb-in-spring-boot/)。
+本小节介绍的ZuulProxy和ZuulServer等demo都是基于SpringBoot和ServiceComb框架的应用,具体请参考[在ServiceComb框架中集成SpringBoot框架](/cn/users/use-servicecomb-in-spring-boot/)。
 
 ## 启动Zuul Proxy
 
-  本节介绍如何启动一个zuul proxy应用作为API Gateway。步骤如下:
+本节介绍如何启动一个zuul proxy应用作为API Gateway。步骤如下:
 
 * **步骤 1**在pom文件中添加依赖:
 
@@ -105,21 +105,21 @@ redirect_from:
        address: 0.0.0.0:8082 #微服务端口,可不写
    ```
 
-  本小节所有服务使用的都是本地的服务中心,具体的服务中心启动流程请参考[启动本地服务中心](/cn/users/setup-environment/#运行service-center)。
+本小节所有服务使用的都是本地的服务中心,具体的服务中心启动流程请参考[启动本地服务中心](/cn/users/setup-environment/#运行service-center)。
 
 * **步骤 5 **运行ZuulMain 应用
 
 ## 使用Zuul Proxy
 
-  在使用zuul做的API Gateway前,首先要启动在zuul.routers中定义的微服务提供者。
+在使用zuul做的API Gateway前,首先要启动在zuul.routers中定义的微服务提供者。
 
-  开发服务提供者,开发流程请参考[开发服务提供者](/cn/users/service-definition/)。在微服务microservice.yaml文件中需注意以下两点:
+开发服务提供者,开发流程请参考[开发服务提供者](/cn/users/service-definition/)。在微服务microservice.yaml文件中需注意以下两点:
 
 * APPLICATION\_ID需要于zuul proxy中定义的保持一致。
 
 * service\_description.name需要于zuul.routers中相对应。
 
-  示例如下:
+示例如下:
 
 ```yaml
 APPLICATION_ID: discoverytest #与zuul proxy一致
@@ -134,10 +134,10 @@ cse:
     address: 0.0.0.0:8080
 ```
 
-  API Gateway的访问入口为:[http://127.0.0.1:8754](http://127.0.0.1:8754),所有在zuul.routers中定义的服务都可通过这个访问入口进行代理访问,访问规则如下:
+API Gateway的访问入口为:[http://127.0.0.1:8754](http://127.0.0.1:8754),所有在zuul.routers中定义的服务都可通过这个访问入口进行代理访问,访问规则如下:
 
-  [http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***)
+http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***)
 
-  这表示,Http调用[http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***),会转到discoveryServer服务(例如:"/myServer/101"跳转到discoveryServer 服务下的"/101")
+这表示,Http调用[http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***),会转到discoveryServer服务(例如:"/myServer/101"跳转到discoveryServer 服务下的"/101")
 
 > 如果在服务中心同时存在多个discoveryServer服务\(版本不同\),zuul默认采用Ribbon策略对请求进行转发。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/communicate-channel.md
----------------------------------------------------------------------
diff --git a/_users/communicate-channel.md b/_users/communicate-channel.md
deleted file mode 100644
index 0bdc9de..0000000
--- a/_users/communicate-channel.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: "通信信道"
-lang: en
-ref: communicate-channel
-permalink: /users/communicate-channel/
-excerpt: "通信信道"
-last_modified_at: 2017-08-15T15:01:43-04:00
-redirect_from:
-  - /theme-setup/
----
-
-ServiceComb的consumer、transport、handler、producer之间是解耦的,各功能之间通过契约定义联合在一起工作的,即:
-
-consumer使用透明rpc,还是springmvc开发与使用highway,还是RESTful在网络上传输没有关系,与producer是使用透明rpc,还是jaxrs,或者是springmvc开发,也没有关系。handler也不感知业务开发方式以及传输方式。
-
-consumer访问producer,在运行时的transport选择上,总规则为:consumer的transport与producer的endpoint取交集,如果交集后,还有多个transport可选择,则轮流使用。分解开来,存在以下场景:
-
-1. 当一个微服务producer同时开放了highway以及RESTful的endpoint
-
-   * consumer进程中只部署了highway transport jar,则只会访问producer的highway endpoint
-   * consumer进程中只部署了RESTful transport jar,则只会访问producer的RESTful endpoint
-   * consumer进程中,同时部署了highway和RESTful transport jar,则会轮流访问producer的highway、RESTful endpoint
-
-   如果此时consumer想固定使用某个transport访问producer,可以在consumer进程的microservice.yaml中配置,指定transport的名称
-
-   ```yaml
-   servicecomb:
-     references:
-       microservice_name:
-         transport: highway
-   ```
-
-2. 当一个微服务producer只开放了highway的endpoint
-
-   * consumer进程只部署了highway transport jar,则正常使用higway访问
-   * consumer进程只部署了RESTful transport jar,则无法访问
-   * consumer进程同时部署了highway和RESTful transport jar,则正常使用highway访问
-
-3. 当一个微服务producer只开放了RESTful的endpoint
-
-   * consumer进程只部署了highway transport jar,则无法访问
-   * consumer进程只部署了RESTful transport jar,则正常使用RESTful访问
-   * consumer进程同时部署了highway和RESTful transport jar,则正常使用RESTful访问

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/communicate-protocol.md
----------------------------------------------------------------------
diff --git a/_users/communicate-protocol.md b/_users/communicate-protocol.md
index e26432b..a8b04ea 100644
--- a/_users/communicate-protocol.md
+++ b/_users/communicate-protocol.md
@@ -103,7 +103,7 @@ cse:
    servicecomb.rest.servlet.urlPattern: /rest/*
    ```
 
-  以上两种方式是等效的,两种方式都需要在maven pom文件中添加如下依赖:
+以上两种方式是等效的,两种方式都需要在maven pom文件中添加如下依赖:
 
 ```xml
 <dependency> 
@@ -112,9 +112,9 @@ cse:
 </dependency>
 ```
 
-  REST over Servlet在microservice.yaml文件中的配置项见下表:
+REST over Servlet在microservice.yaml文件中的配置项见下表:
 
-  表1 REST over Servlet配置项说明
+表1 REST over Servlet配置项说明
 
 | 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
 | :--- | :--- | :--- | :--- | :--- | :--- |
@@ -124,9 +124,9 @@ cse:
 | cse.references.\[服务名\].transport | rest |  | 否 | 访问的transport类型 | 同REST over Vertx的配置 |
 | cse.references.\[服务名\].version-rule | latest | - | 否 | 访问实例的版本号 | 同REST over Vertx的配置 |
 
-## 示例代码
+### 示例代码
 
-  microservice.yaml文件中的配置示例如下:
+microservice.yaml文件中的配置示例如下:
 
 ```yaml
 cse:
@@ -136,7 +136,7 @@ cse:
 ```
 
 ## REST over Vertx
-## 配置说明
+### 配置说明
 
 REST over Vertx通信通道对应使用standalone部署运行模式,可直接通过main函数拉起。main函数中需要初始化日志和加载服务配置,代码如下:
 
@@ -152,7 +152,7 @@ public class MainServer {
 }
 ```
 
- 使用REST over Vertx网络通道需要在maven pom文件中添加如下依赖:
+使用REST over Vertx网络通道需要在maven pom文件中添加如下依赖:
 
 ```xml
 <dependency>
@@ -161,9 +161,9 @@ public class MainServer {
 </dependency>
 ```
 
- REST over Vertx通道在microservice.yaml文件中有以下配置项:
+REST over Vertx通道在microservice.yaml文件中有以下配置项:
 
- 表2 REST over Vertx配置项说明
+表2 REST over Vertx配置项说明
 
 | 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
 | :--- | :--- | :--- | :--- | :--- | :--- |
@@ -177,7 +177,7 @@ public class MainServer {
 
 ### 示例代码
 
-  microservice.yaml文件中的配置示例:
+microservice.yaml文件中的配置示例:
 
 ```yaml
 cse:
@@ -193,11 +193,11 @@ cse:
 ## Highway RPC协议
 ### 概念阐述
 
-  Highway是ServiceComb的高性能私有协议,用户可在有特殊性能需求的场景下选用。
+Highway是ServiceComb的高性能私有协议,用户可在有特殊性能需求的场景下选用。
 
 ### 配置说明
 
-  使用Highway网络通道需要在maven pom文件中添加如下依赖:
+使用Highway网络通道需要在maven pom文件中添加如下依赖:
 
 ```xml
 <dependency> 
@@ -206,9 +206,9 @@ cse:
 </dependency>
 ```
 
-  Highway通道在microservice.yaml文件中的配置项如下表所示:
+Highway通道在microservice.yaml文件中的配置项如下表所示:
 
- 表3 Highway配置项说明
+表3 Highway配置项说明
 
 | 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
 | :--- | :--- | :--- | :--- | :--- | :--- |
@@ -222,146 +222,10 @@ cse:
 
 ### 示例代码
 
- microservice.yaml文件中的配置示例:
+microservice.yaml文件中的配置示例:
 
 ```yaml
 cse:
   highway:
     address: 0.0.0.0:7070
 ```
-
-## TLS通信
-### 场景描述
-
-用户通过简单的配置即可启用TLS通信,以保障数据的传输安全。
-
-### 外部服务通信配置
-
-与外部服务通信相关的配置写在microservice.yaml文件中。
-
-* 服务中心TLS通信配置
-   微服务与服务中心的连接可以通过将http改为https启用TLS通信,配置示例如下:
-
-   ```yaml
-   cse:
-     service:
-       registry:
-         address: https://127.0.0.1:30100
-   ```
-
-* 服务提供者启用TLS通信
-   服务提供者在配置服务监听地址时,可以通过在地址后面追加`?sslEnabled=true`开启TLS通信,示例如下:
-
-   ```yaml
-   cse:
-     rest:
-       address: 0.0.0.0:8080?sslEnabled=true
-     highway:
-       address: 0.0.0.0:7070?sslEnabled=true
-   ```
-
-### 证书配置
-
-证书配置项写在microservice.yaml文件中,支持统一制定证书,也可以添加tag进行更细粒度的配置,有tag的配置会覆盖全局配置,配置格式如下:
-
-```yaml
-ssl.[tag].[property]
-```
-
-证书配置项见下表证书配置项说明表。
-
-表4 证书配置项说明表
-
-| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
-| :--- | :--- | :--- | :--- | :--- | :--- |
-| ssl.protocols | TLSv1.2 | - | 否 | 协议列表 | 使用逗号分隔 |
-| ssl.ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256 | - | 否 | 算法列表 | 使用逗号分隔 |
-| ssl.authPeer | true | - | 否 | 是否认证对端 | - |
-| ssl.checkCN.host | true | - | 否 | 是否对证书的CN进行检查 | 该配置项只对Consumer端,并且使用http协议有效,即Consumser端使用rest通道有效。对于Provider端、highway通道等无效。检查CN的目的是防止服务器被钓鱼,参考标准定义:[https://tools.ietf.org/html/rfc2818。](https://tools.ietf.org/html/rfc2818。) |
-| ssl.trustStore | trust.jks | - | 否 | 信任证书文件 | - |
-| ssl.trustStoreType | JKS | - | 否 | 信任证书类型 | - |
-| ssl.trustStoreValue | - | - | 否 | 信任证书密码 | - |
-| ssl.keyStore | server.p12 | - | 否 | 身份证书文件 | - |
-| ssl.keyStoreType | PKCS12 | - | 否 | 身份证书类型 | - |
-| ssl.keyStoreValue | - | - | 否 | 身份证书密码 | - |
-| ssl.crl | revoke.crl | - | 否 | 吊销证书文件 | - |
-| ssl.sslCustomClass | - | io.servicecomb.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
-
-> **说明**:
->
-> * 默认的协议算法是高强度加密算法,JDK需要安装对应的策略文件,参考:[http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)。 您可以在配置文件配置使用非高强度算法。
-> * 微服务消费者,可以针对不同的提供者指定证书(当前证书是按照HOST签发的,不同的提供者都使用一份证书存储介质,这份介质同时给微服务访问服务中心和配置中心使用)。
-
-### 服务中心的证书配置
-
-目前支持使用环境变量来配置服务中心的TLS认证方式,默认开启TLS通信,双向认证模式,认证对端时同时校验对端是否匹配证书(CommonName)字段。服务管理中心的证书配置项说明见下表服务中心TLS证书配置项说明。
-
-表5 服务中心TLS证书配置项说明
-
-| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
-| :--- | :--- | :--- | :--- | :--- | :--- |
-| CSE\_SSL\_MODE | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置协议模式 | - |
-| CSE\_SSL\_VERIFY\_CLIENT | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置HTTPS模式下是否认证对端 | - |
-| CSE\_SSL\_PASSPHASE | - | - | 否 | 设置HTTPS模式下的证书密钥访问密码 | - |
-
-服务管理中心配置文件为$APP\_ROOT/conf/app.conf,配置项见下表,该配置暂不支持环境变量方式设置。
-
-表6 服务中心配置文件
-
-| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
-| :--- | :--- | :--- | :--- | :--- | :--- |
-| ssl\_protocols | TLSv1.2 | - | 否 | 通信使用的SSL版本 | - |
-| ssl\_ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA | - | 否 | 配置使用算法列表 | 由于服务中心支持HTTP/2协议,所以ssl\_ciphers必须配置有TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256算法。TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256、TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA被列为HTTP/2协议的不安全算法黑名单,但为了客户端算法兼容性,存在时必须配置到最后一位。 |
-
-### 密钥物料及证书存放路径
-
-表7 密钥物料及证书存放路径
-
-| 配置项 | 含义 | 对应环境变量 | 注意 |
-| :--- | :--- | :--- | :--- |
-| / | - | - | - |
-| /opt | - | - | - |
-| /opt/CSE | - | INSTALL\_ROOT | - |
-| /opt/CSE/etc | - | - | - |
-| /opt/CSE/etc/cipher | 密钥物料存放目录 | CIPHER\_ROOT | - |
-| /opt/CSE/etc/ssl | 证书存放目录 | SSL\_ROOT | - |
-| /opt/CSE/etc/ssl/trust.cer | 授信CA | - | - |
-| /opt/CSE/etc/ssl/server\_key.pem | 已加密服务端私钥文件 | - | - |
-| /opt/CSE/etc/ssl/server.cer | 服务器证书 | - | - |
-| /opt/CSE/etc/ssl/cert\_pwd | 用于存放解密私钥的对称加密密文文件 | - | - |
-| /opt/CSE/apps | - | - | - |
-| /opt/CSE/apps/ServiceCenter | - | APP\_ROOT | - |
-| /opt/CSE/apps/ServiceCenter/conf | 服务管理中心配置文件目录 | - | - |
-| /opt/CSE/apps/ServiceCenter/conf/app.conf | 应用配置文件 | - | - |
-
-### 示例代码
-
-microservice.yaml文件中启用TLS通信的配置示例如下:
-```yaml
-cse:
-  service:
-    registry:
-      address: https://127.0.0.1:30100
-  config:
-    client:
-      serverUri: https://127.0.0.1:30103
-  rest:
-    address: 0.0.0.0:8080?sslEnabled=true
-  highway:
-    address: 0.0.0.0:7070?sslEnabled=true
-
-#########SSL options
-ssl.protocols: TLSv1.2
-ssl.authPeer: true
-ssl.checkCN.host: true
-
-#########certificates config
-ssl.trustStore: trust.jks
-ssl.trustStoreType: JKS
-ssl.trustStoreValue: Changeme_123
-ssl.keyStore: server.p12
-ssl.keyStoreType: PKCS12
-ssl.keyStoreValue: Changeme_123
-ssl.crl: revoke.crl
-ssl.sslCustomClass: io.servicecomb.demo.DemoSSLCustom
-```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/customized-tracing.md
----------------------------------------------------------------------
diff --git a/_users/customized-tracing.md b/_users/customized-tracing.md
new file mode 100644
index 0000000..abfdec2
--- /dev/null
+++ b/_users/customized-tracing.md
@@ -0,0 +1,103 @@
+---
+title: "Customized Tracing"
+lang: en
+ref: customized-tracing
+permalink: /users/customized-tracing/
+excerpt: "自定义调用链打点"
+last_modified_at: 2017-08-15T15:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+## 概念阐述
+
+分布式调用链追踪提供了服务间调用的时序信息,但服务内部的链路调用信息对开发者同样重要,如果能将两者合二为一,就能提供更完整的调用链,更容易定位错误和潜在性能问题。
+
+## 前提条件
+
+* 使用自定义打点功能需要首先配置并启用Java Chassis微服务调用链。
+
+## 注意事项
+
+* 使用`@Span`注释的自定义打点功能只支持和Java Chassis调用请求同一线程的方法调用。
+* 添加`@Span`注释的方法必须是Spring管理的Bean,否则需要按这里[提到的方法](https://stackoverflow.com/questions/41383941/load-time-weaving-for-non-spring-beans-in-a-spring-application)配置。
+
+## 自定义调用链打点
+
+该功能集成了Zipkin,提供`@Span`注释为需要追踪的方法自定义打点。Java Chassis将自动追踪所有添加`@Span`注释的方法,把每个方法的本地调用信息与服务间调用信息连接起来。
+
+## 使用步骤:
+
+### 添加依赖
+
+基于 ServiceComb Java Chassis 的微服务只需要添加如下依赖到 pom.xml:
+
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>tracing-zipkin</artifactId>
+    </dependency>
+```
+
+### 启用自定义打点功能
+
+在应用入口或Spring配置类上添加`@EnableZipkinTracing`注释:
+
+```java
+@SpringBootApplication
+@EnableZipkinTracing
+public class ZipkinSpanTestApplication {
+  public static void main(String[] args) {
+    SpringApplication.run(ZipkinSpanTestApplication.class);
+  }
+}
+```
+
+### 定制打点
+
+在需要定制打点的方法上添加`@Span`注释:
+
+```java
+@Component
+public class SlowRepoImpl implements SlowRepo {
+  private static final Logger logger = LoggerFactory.getLogger(SlowRepoImpl.class);
+
+  private final Random random = new Random();
+
+  @Span
+  @Override
+  public String crawl() throws InterruptedException {
+    logger.info("in /crawl");
+    Thread.sleep(random.nextInt(200));
+    return "crawled";
+  }
+}
+```
+
+就这样,通过使用`@Span`注释,我们启动了基于 Zipkin 的自定义打点功能。
+
+## 定制上报的数据
+
+通过自定义打点上报的调用链包含两条数据:
+
+* **span name** 默认为当前注释的方法全名。
+* **call.path** 默认为当前注释的方法签名。
+
+例如,上述例子`SlowRepoImp`里上报的数据如下:
+
+| key | value |
+| :--- | :--- |
+| span name | crawl |
+| call.path | public abstract java.lang.String io.servicecomb.tests.tracing.SlowRepo.crawl\(\) throws java.lang.InterruptedException |
+
+如果需要定制上报的数据内容,可以传入自定义的参数:
+
+```java
+  public static class CustomSpanTask {
+    @Span(spanName = "transaction1", callPath = "startA")
+    public String invoke() {
+      return "invoke the method";
+    }
+  }
+```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/define-service-contract.md
----------------------------------------------------------------------
diff --git a/_users/define-service-contract.md b/_users/define-service-contract.md
index 25e0c21..1620492 100644
--- a/_users/define-service-contract.md
+++ b/_users/define-service-contract.md
@@ -44,8 +44,8 @@ swagger: '2.0'
 info:
   title: hello
   version: 1.0.0
-  x-java-interface: io.servicecomb.samples.springmvc.Hello
-basePath: /springmvc/rest/hello
+  x-java-interface: io.servicecomb.samples.common.schema.Hello
+basePath: /springmvchello
 produces:
   - application/json
 
@@ -55,10 +55,27 @@ paths:
       operationId: sayHi
       parameters:
         - name: name
-          in: body
+          in: query
           required: true
+          type: string
+      responses:
+        200:
+          description: 正确返回
+          schema:
+            type: string
+        default:
+          description: 默认返回
           schema:
             type: string
+  /sayhello:
+    post:
+      operationId: sayHello
+      parameters:
+        - name: person
+          in: body
+          required: true
+          schema:
+            $ref: "#/definitions/Person"
       responses:
         200:
           description: 正确返回
@@ -68,24 +85,6 @@ paths:
           description: 默认返回
           schema:
             type: string
-  /sayhello:
-     post:
-          operationId: sayHello
-          parameters:
-            - name: person
-              in: body
-              required: true
-              schema:
-                $ref: "#/definitions/Person"
-          responses:
-            200:
-              description: 正确返回
-              schema:
-                type: string
-            default:
-              description: 默认返回
-              schema:
-                type: string
 definitions:
   Person:
     type: "object"
@@ -97,9 +96,9 @@ definitions:
       name: "Person"
 ```
 
-根据swagger标准,basePath配置的路径需要包括web server的webroot。
-
-info.x-java-interface需要标明具体的接口路径,根据项目实际情况而定。
+> **注意**:  
+- 根据swagger标准,basePath配置的路径需要包括web server的webroot。
+- info.x-java-interface需要标明具体的接口路径,根据项目实际情况而定。
 
 ## 隐式契约
 ### 概念阐述

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/deployment.md
----------------------------------------------------------------------
diff --git a/_users/deployment.md b/_users/deployment.md
index 4dbcfab..5e1c96a 100644
--- a/_users/deployment.md
+++ b/_users/deployment.md
@@ -12,7 +12,7 @@ redirect_from:
 {% include toc %}
 微服务框架当前提供了两种部署运行模式:standalone模式和web容器模式。推荐使用**standalone模式**拉起服务进程。
 ## standalone模式
-  框架提供了standalone部署运行模式,可直接在本地通过Main函数启动。
+一个Standalone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。微框架提供了standalone部署运行模式,服务容器只是一个简单的Main方法,并加载一个简单的Spring容器,用于暴露服务。
 
 ### 操作步骤
 
@@ -32,12 +32,12 @@ redirect_from:
 
 * **步骤2** 运行MainServer即可启动该微服务进程,向外暴露服务。
 
-   如果使用的是rest网络通道,需要将pom中的transport改为使用cse-transport-rest-vertx包。
+   注意:如果使用的是rest网络通道,需要将pom中的transport改为使用cse-transport-rest-vertx包。
 
 ## WEB容器模式
-如果需要将该微服务加载到web容器中启动运行时,需要新建一个servlet工程包装一下。
+如果需要将该微服务加载到web容器中启动运行时,需要新建一个servlet工程包装一下,该servlet工程,根据需要,可以不写或写少量的引导代码即可。
 
-### web.xml文件配置
+### 开发示例
 
 ```xml
 <web-app>
@@ -49,12 +49,12 @@ redirect_from:
         </param-value>
     </context-param>
     <listener>
-        <listener-class>io.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
+        <listener-class>com.huawei.paas.cse.transport.rest.servlet.RestServletContextListener</listener-class>
     </listener>
 
     <servlet>
         <servlet-name>RestServlet</servlet-name>
-        <servlet-class>io.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
+        <servlet-class>com.huawei.paas.cse.transport.rest.servlet.RestServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
         <async-supported>true</async-supported>
     </servlet>
@@ -65,28 +65,21 @@ redirect_from:
 </web-app>
 ```
 
-  RestServletContextListener用于初始化cse环境,包括日志、spring等等。需要指定spring配置文件加载路径,通过context-param来配置。上例中,classpath\*:META-INF/spring/\*.bean.xml是cse的内置规则,如果配置中未包含这个路径,则RestServletContextListener内部会将它追加在最后。
-
-  另外可以配置servlet-mapping中的url-pattern规则将满足指定规则的URL路由到该servlet中来。
-
-### pom文件配置
-  当前只有Rest网络通道支持此种运行模式,使用web容器模式时需要将pom文件中的transport改为依赖transport-rest-servlet包。
-
-  设置finalName,是方便部署,有这一项后,maven打出来的war包,部署到web容器中,webroot即是这个finalName。
+* **步骤2 修改pom文件**
 
 ```xml
-<dependencies> 
-  <dependency> 
-    <groupId>io.servicecomb</groupId>  
-    <artifactId>transport-rest-servlet</artifactId> 
-  </dependency>
+<dependencies>
+    <dependency>
+        <groupId>com.huawei.paas.cse</groupId>
+        <artifactId>cse-transport-rest-servlet</artifactId>
+    </dependency>
 </dependencies>
-<build> 
-  <finalName>test</finalName> 
+<build>
+    <finalName>test</finalName>
 </build>
 ```
 
-**注意:**
+**注意事项:**
 1. RESTful调用应该与web容器中其他静态资源调用(比如html、js等等)隔离开来,所以webroot后一段应该还有一层关键字,比如上面web.xml中举的例子(/test/rest)中的rest。
 2. 以tomcat为例,默认每个war包都有不同的webroot,这个webroot需要是basePath的前缀,比如webroot为test,则该微服务所有的契约都必须以/test打头。
 3. 当微服务加载在web容器中,并直接使用web容器开的http、https端口时,因为是使用的web容器的通信通道,所以需要满足web容器的规则。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/develop-with-jax-rs.md
----------------------------------------------------------------------
diff --git a/_users/develop-with-jax-rs.md b/_users/develop-with-jax-rs.md
index 08e132f..ff6b374 100644
--- a/_users/develop-with-jax-rs.md
+++ b/_users/develop-with-jax-rs.md
@@ -28,6 +28,7 @@ ServiceComb支持开发者使用JAX-RS注解,使用JAX-RS模式开发服务。
    }
    ```
 
+   > **说明**:
    该接口的位置需要与契约中x-java-interface所指定的路径一致。
 
 * **步骤 2** 实现服务。
@@ -78,10 +79,15 @@ ServiceComb支持开发者使用JAX-RS注解,使用JAX-RS模式开发服务。
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <context:component-scan base-package="io.servicecomb.samples.jaxrs.provider"/> 
+   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
+          xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util "
+          xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
+          xmlns:context=" http://www.springframework.org/schema/context "
+          xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+   
+       <context:component-scan base-package="io.servicecomb.samples.jaxrs.provider"/>
    </beans>
-```
+   ```
 
 ## 涉及API
 
@@ -100,6 +106,6 @@ JAX-RS开发模式当前支持如下注解,所有注解的使用方法参考[J
 | javax.ws.rs.HeaderParam | parameter | 从header中获取参数 |
 | javax.ws.rs.CookieParam | parameter | 从cookie中获取参数 |
 
-当方法参数没有注解,且不为HttpServletRequest类型参数时,默认为body类型参数,一个方法只支持最多一个body类型参数。
-
-打在参数上面的注解建议显式定义出value值,否则将直接使用契约中的参数名,例如应该使用@QueryParam\("name"\) String name,而不是@QueryParam String name。
+> **说明**:
+- 当方法参数没有注解,且不为HttpServletRequest类型参数时,默认为body类型参数,一个方法只支持最多一个body类型参数。
+- 打在参数上面的注解建议显式定义出value值,否则将直接使用契约中的参数名,例如应该使用`@QueryParam\("name"\) String name`,而不是`@QueryParam String name`。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/develop-with-rpc.md
----------------------------------------------------------------------
diff --git a/_users/develop-with-rpc.md b/_users/develop-with-rpc.md
index 711abce..846c966 100644
--- a/_users/develop-with-rpc.md
+++ b/_users/develop-with-rpc.md
@@ -48,6 +48,3 @@ public class CodeFirstConsumerMain {
 ```
 
 在以上代码中,服务消费者已经取得了服务提供者的服务接口`Hello`,并在代码中声明一个`Hello`类型的成员。通过在`hello`上使用`@RPCReference`注解指明微服务名称和schemaId,ServiceComb框架可以在程序启动时从服务中心获取到对应的服务提供者实例信息,并且生成一个代理注入到hello中,用户可以像调用本地类一样调用远程服务。
-
-> 注意:
-- 使用RPC开发方式开发服务消费者仍然需要在microservice.yaml文件中添加对于被依赖服务的说明,参见[使用Rest Template开发服务消费者](/users/develop-with-rest-template/)中对于microservice.yaml的配置。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/develop-with-springmvc.md
----------------------------------------------------------------------
diff --git a/_users/develop-with-springmvc.md b/_users/develop-with-springmvc.md
index 5a469cd..3969fac 100644
--- a/_users/develop-with-springmvc.md
+++ b/_users/develop-with-springmvc.md
@@ -12,7 +12,7 @@ redirect_from:
 {% include toc %}
 ## 概念阐述
 
-  ServiceComb支持SpringMVC注解,允许使用SpringMVC风格开发微服务。
+ServiceComb支持SpringMVC注解,允许使用SpringMVC风格开发微服务。
 
 ## 开发示例
 
@@ -71,22 +71,33 @@ redirect_from:
    }
    ```
 
-   然后在resources/META-INF/spring目录下创建springmvcHello.bean.xml文件,命名规则为\*.bean.xml,配置spring进行服务扫描的base-package,文件内容如下:
+   然后在`resources/META-INF/spring`目录下创建`springmvcHello.bean.xml`文件,命名规则为`\*.bean.xml`,配置spring进行服务扫描的base-package,文件内容如下:
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <context:component-scan base-package="io.servicecomb.samples.springmvc.povider"/> 
+   
+   <beans xmlns="http://www.springframework.org/schema/beans"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xmlns:context="http://www.springframework.org/schema/context"
+          xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
+          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+   
+       <context:component-scan base-package="io.servicecomb.samples.springmvc.povider"/>
    </beans>
    ```
 
 ## 涉及API
 
-  Spring MVC开发模式当前支持org.springframework.web.bind.annotation包下的如下注解,所有注解的使用方法参考[Spring MVC官方文档](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)。
+Spring MVC开发模式当前支持org.springframework.web.bind.annotation包下的如下注解,所有注解的使用方法参考[Spring MVC官方文档](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)。
 
 | 注解 | 位置 | 描述 |
 | :--- | :--- | :--- |
 | RequestMapping | schema/operation | 支持标注path/method/produces三种数据,operation默认继承schema上的produces |
+| GetMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| PutMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| PostMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| DeleteMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| PatchMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
 | PathVariable | parameter | 从path中获取参数 |
 | RequestParam | parameter | 从query中获取参数 |
 | RequestHeader | parameter | 从header中获取参数 |

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/develop-with-transparent-rpc.md
----------------------------------------------------------------------
diff --git a/_users/develop-with-transparent-rpc.md b/_users/develop-with-transparent-rpc.md
index e141b45..9363409 100644
--- a/_users/develop-with-transparent-rpc.md
+++ b/_users/develop-with-transparent-rpc.md
@@ -29,7 +29,8 @@ redirect_from:
    }
    ```
 
-   该接口的位置需要与契约中x-java-interface所指定的路径一致。
+   > **说明**:
+   > 该接口的位置需要与契约中x-java-interface所指定的路径一致。
 
 * **步骤 2** 实现服务
 
@@ -58,12 +59,18 @@ redirect_from:
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <cse:rpc-schema schema-id="pojoHello" implementation="io.servicecomb.samples.pojo.provider.PojoHelloImpl"/> 
+   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
+          xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util "
+          xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
+          xmlns:context=" http://www.springframework.org/schema/context "
+          xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+   
+       <cse:rpc-schema schema-id="pojoHello" implementation="io.servicecomb.samples.pojo.provider.PojoHelloImpl"/>
    </beans>
    ```
 
-   每一个服务接口都需要定义一个schema声明。
+   > **说明**:
+   > 每一个服务接口都需要定义一个schema声明。
 
 ## 通过注解配置的开发方式
 
@@ -84,9 +91,15 @@ redirect_from:
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <context:component-scan base-package="io.servicecomb.samples.pojo.provider"/> 
+   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
+          xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util "
+          xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
+          xmlns:context=" http://www.springframework.org/schema/context "
+          xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+   
+       <context:component-scan base-package="io.servicecomb.samples.pojo.provider"/>
    </beans>
    ```
 
-与Spring MVC开发模式和JAX-RS开发模式不同的是,透明RPC开发模式使用的注解是`@RpcSchema`而非`@RestSchema`。
+> **说明**:
+> 与Spring MVC开发模式和JAX-RS开发模式不同的是,透明RPC开发模式使用的注解是`@RpcSchema`而非`@RestSchema`。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/distributed-tracing.md
----------------------------------------------------------------------
diff --git a/_users/distributed-tracing.md b/_users/distributed-tracing.md
index 6fe5655..77f6813 100644
--- a/_users/distributed-tracing.md
+++ b/_users/distributed-tracing.md
@@ -28,8 +28,6 @@ ServiceComb 集成了 Zipkin 提供自动调用链追踪能力,如此一来用
 
 ## 使用步骤:
 
-我们将以 [workshop demo](https://github.com/ServiceComb/LinuxCon-Beijing-WorkShop) 为例演示如何用 Zipkin 实施调用链追踪。
-
 ### 添加依赖
 
 基于 ServiceComb Java Chassis 的微服务只需要添加如下依赖到 pom.xml:
@@ -72,15 +70,3 @@ servicecomb:
 
 **注意:** 如果项目中的其他依赖也引入了 zipkin (例如 Spring Cloud),可能导致 zipkin 版本不一致而运行出错,这时需要在项目 pom 中声明 zipkin 版本。
 {: .notice--warning}
-
-## 快速演示
-
-在 workshop demo 中启动追踪后,我们接下来在 docker 环境中演示一下调用链追踪功能。
-
-1. 在 workshop demo 目录下,使用命令`mvn package -DskipTests -Pdocker`或`mvn package -DskipTests -Pdocker -Pdocker-machine`(如果你使用[Docker Toolbox](https://www.docker.com/products/docker-toolbox)),创建所有服务的 docker 镜像
-
-2. 运行`docker-compose up`
-
-3. 发送请求。请参考链接视频进行操作:[http://v.youku.com/v\_show/id\_XMjg1NzQ3NzUzNg==.html](http://v.youku.com/v_show/id_XMjg1NzQ3NzUzNg==.html)
-
-4. 用浏览器打开运行在 docker 容器中的 Zipkin 网站,地址应为 docker 容器IP,例如:`http://192.168.99.100:9411/zipkin/`在这界面上就可以看到所有请求的调用性能数据。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/local-develop-test.md
----------------------------------------------------------------------
diff --git a/_users/local-develop-test.md b/_users/local-develop-test.md
index c2307f9..f2d972a 100644
--- a/_users/local-develop-test.md
+++ b/_users/local-develop-test.md
@@ -51,7 +51,7 @@ redirect_from:
            rest://127.0.0.1:8080
    ```
 
-   mock机制需要自己准备契约,并且当前只支持在本地进行服务消费端\(consumer\)侧的调试,不支持服务提供者\(provider\)
+   注意:mock机制需要自己准备契约,并且当前只支持在本地进行服务消费端\(consumer\)侧的调试,不支持服务提供者\(provider\)
 
 * **步骤 2**在服务消费者Main函数首末添加如下代码:
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/nginx.md
----------------------------------------------------------------------
diff --git a/_users/nginx.md b/_users/nginx.md
index f24264c..3458420 100644
--- a/_users/nginx.md
+++ b/_users/nginx.md
@@ -14,25 +14,25 @@ redirect_from:
 
 ### **confd**
 
-  confd是一个轻量级的配置管理工具,源码地址:[https://github.com/kelseyhightower/confd](https://github.com/kelseyhightower/confd),它可以将配置信息存储在etcd、consul、dynamodb、redis以及zookeeper等。confd定期会从这些存储节点pull最新的配置,然后重新加载服务,完成配置文件的更新。
+confd是一个轻量级的配置管理工具,源码地址:[https://github.com/kelseyhightower/confd](https://github.com/kelseyhightower/confd),它可以将配置信息存储在etcd、consul、dynamodb、redis以及zookeeper等。confd定期会从这些存储节点pull最新的配置,然后重新加载服务,完成配置文件的更新。
 
 ### **Nginx**
 
-  Nginx \(engine x\)是一个高性能的HTTP和反向代理服务器,具有负载均衡的功能。详情请参考[http://www.nginx.cn/doc/](http://www.nginx.cn/doc/)。本小节介绍的服务主要使用到的是Nginx的http代理功能。
+Nginx \(engine x\)是一个高性能的HTTP和反向代理服务器,具有负载均衡的功能。详情请参考[http://www.nginx.cn/doc/](http://www.nginx.cn/doc/)。本小节介绍的服务主要使用到的是Nginx的http代理功能。
 
 ## 场景描述
 
-  本小节介绍的技术是使用nginx+confd做边缘服务,同时可以对接ServiceComb微服务框架中的服务中心,从服务中心中拉去服务信息通过confd动态更新nginx的配置。
+本小节介绍的技术是使用nginx+confd做边缘服务,同时可以对接ServiceComb微服务框架中的服务中心,从服务中心中拉去服务信息通过confd动态更新nginx的配置。
 
-  使用nginx+confd动态反向代理的实现步骤可参考文章[http://www.cnblogs.com/Anker/p/6112022.html](http://www.cnblogs.com/Anker/p/6112022.html),本节主要介绍confd如何对接ServiceComb框架的服务中心。
+使用nginx+confd动态反向代理的实现步骤可参考文章[http://www.cnblogs.com/Anker/p/6112022.html](http://www.cnblogs.com/Anker/p/6112022.html),本节主要介绍confd如何对接ServiceComb框架的服务中心。
 
 ## 对接服务中心
 
-  本节介绍的技术核心在于如何使得confd获取到服务中心的服务信息,服务中心开放了以下接口供外部调用:
+本节介绍的技术核心在于如何使得confd获取到服务中心的服务信息,服务中心开放了以下接口供外部调用:
 
 ### **方法一:http调用**
 
-  服务中心开放http接口均需要添加租户头部信息:“X-Tenant-Name:tenantName”,tenameName为租户名,默认为default,例如"X-Tenant-Name:default"。
+服务中心开放http接口均需要添加租户头部信息:“X-Tenant-Name:tenantName”,tenameName为租户名,默认为default,例如"X-Tenant-Name:default"。
 
 * 检查服务中心健康状态
 
@@ -74,20 +74,34 @@ redirect_from:
   ```
    需要在header中添加"X-ConsumerId:{serviceId}"。
 
-  在实际开发中请访问实际的service-center访问地址,并将上述url中{}的变量替换成具体值,http返回的数据均为json格式
+注意:在实际开发中请访问实际的service-center访问地址,并将上述url中{}的变量替换成具体值,http返回的数据均为json格式
 
 ### **方法二:使用servicecomb开源代码接口**
 
-  在开发微服务应用,只需要调用servicecomb框架代码中的工具类RegistryUtil.java中提供的接口,即可获取服务中心的信息,接口描述如下:
+在开发微服务应用,只需要调用servicecomb框架代码中的工具类RegistryUtil.java中提供的接口,即可获取服务中心的信息,接口描述如下:
 
-* 获取所有微服务信息  List&lt;Microservice&gt; getAllMicroservices\(\);
-
-* 获取微服务唯一标识  String getMicroserviceId\(String appId, String microserviceName, String versionRule\);
-
-* 根据微服务唯一标识查询微服务静态信息  Microservice getMicroservice\(String microserviceId\);
-
-* 根据多个微服务唯一标识查询所有微服务实例信息  List&lt;MicroserviceInstance&gt; getMicroserviceInstance\(String consumerId, String providerId\);
-
-* 按照app+interface+version查询实例endpoints信息  List&lt;MicroserviceInstance&gt; findServiceInstance\(String consumerId, String appId, String serviceName,String versionRule\);
-
-  通过上述http接口可获取到服务中心的微服务和其实例的信息,从而通过confd动态更新nginx配置。
+* 获取所有微服务信息
+   ```java
+   List<Microservice> getAllMicroservices();
+   ```
+
+* 获取微服务唯一标识
+   ```java
+   String getMicroserviceId(String appId, String microserviceName, String versionRule);
+   ```
+
+* 根据微服务唯一标识查询微服务静态信息 
+   ```java
+   Microservice getMicroservice(String microserviceId);
+   ```
+
+* 根据多个微服务唯一标识查询所有微服务实例信息
+   ```java
+   List<MicroserviceInstance> getMicroserviceInstance(String consumerId, String providerId);
+   ```
+* 按照app+interface+version查询实例endpoints信息  
+   ```java
+   List<MicroserviceInstance> findServiceInstance(String consumerId, String appId, String serviceName,String versionRule);
+   ```
+
+通过上述http接口可获取到服务中心的微服务和其实例的信息,从而通过confd动态更新nginx配置。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/service-configurations.md
----------------------------------------------------------------------
diff --git a/_users/service-configurations.md b/_users/service-configurations.md
index 0da92df..1fd9b98 100644
--- a/_users/service-configurations.md
+++ b/_users/service-configurations.md
@@ -17,7 +17,7 @@ redirect_from:
 
 ### 配置说明
 
-  负载均衡策略在mocroservice.yaml文件中配置,配置项为cse.loadbalance.\[MicroServiceName\].\[property name\],其中若省略MicroServiceName,则为全局配置;若指定MicroServiceName,则为针对特定微服务的配置。
+  负载均衡策略在mocroservice.yaml文件中配置,配置项为`cse.loadbalance.[MicroServiceName].[property name]`,其中若省略MicroServiceName,则为全局配置;若指定MicroServiceName,则为针对特定微服务的配置。
 
   **表1 配置项说明**
 
@@ -66,20 +66,17 @@ cse:
 
   用户可以在ServiceComb提供的路由策略框架下根据业务需要,通过编程的方式来开发路由策略。实施步骤如下:
 
-* 实现接口com.netflix.loadbalancer.IRule中定义的接口方法。
-
-   路由选择逻辑在public Server choose\(Object key\)方法中实现。LoadBalancerStats是一个封装了负载均衡器当前运行状态的一个结构。通过获取stats中各个实例的运行指标,在choose方法中,判定将当前请求路由到哪个实例上进行处理。处理风格可以参照io.servicecomb.loadbalance.SessionStickinessRule。
+* 实现接口`com.netflix.loadbalancer.IRule`中定义的接口方法。
+路由选择逻辑在public Server choose\(Object key\)方法中实现。LoadBalancerStats是一个封装了负载均衡器当前运行状态的一个结构。通过获取stats中各个实例的运行指标,在choose方法中,判定将当前请求路由到哪个实例上进行处理。处理风格可以参照`io.servicecomb.loadbalance.SessionStickinessRule`。
 
 * 编译开发的策略,保证生成的class在classpath下。
 
-* 通过SDK配置该路由策略,假如是AbcRule。则配置如下:
-
-   `cse.loadbalance.NFLoadBalancerRuleClassName=com.huawei.cse.ribbon.rule.AbcRule`
+* 通过SDK配置该路由策略,假如是`AbcRule`。则配置如下:       `cse.loadbalance.NFLoadBalancerRuleClassName=io.servicecomb.ribbon.rule.AbcRule`
    
 ## 限流策略
 ### 场景描述
 
-  用户在provider端使用限流策略,可以限制指定微服务向其发送请求的频率,达到限制每秒钟最大请求数量的效果。
+用户在provider端使用限流策略,可以限制指定微服务向其发送请求的频率,达到限制每秒钟最大请求数量的效果。
 
 ### 注意事项
 
@@ -105,17 +102,17 @@ cse:
 | :--- | :--- | :--- | :--- | :--- | :--- |
 | cse.flowcontrol.Provider.qps.enabled | true | true/false | 否 | 是否启用Provider流控 | - |
 | cse.flowcontrol.Provider.qps.limit.\[ServiceName\] | 2147483647(max int) | \(0,2147483647\],整形 | 否 | 每秒钟允许的请求数 | 仅支持microservice一个级别的配置 |
+| cse.flowcontrol.Provider.qps.global.limit | 2147483647(max int) | (0,2147483647\],整形 | 否 | provider接受请求流量的全局配置 | 没有具体到微服务的配置时,此配置生效 |
 
 ## 降级策略
 ### 概念阐述
 
 降级策略是当服务请求异常时,微服务所采用的异常处理策略。降级策略有三个相关的技术概念:“隔离”、“熔断”、“容错”:
 
-> * “隔离”是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。
->
-> * “熔断”是一种异常反应机制,“熔断”依赖于“隔离”。熔断通常基于错误率来实现。一般的设置参数包括统计请求的个数、错误率等。
->
-> * “容错”是一种异常处理机制,“容错”依赖于“熔断”。熔断以后,会调用“容错”的方法。一般的设置参数包括调用容错方法的次数等。
+降级策略有三个相关的技术概念:“隔离”、“熔断”、“容错”:
+* “隔离”是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。
+* “熔断”是一种异常反应机制,“熔断”依赖于“隔离”。熔断通常基于错误率来实现。一般的设置参数包括统计请求的个数、错误率等。
+* “容错”是一种异常处理机制,“容错”依赖于“熔断”。熔断以后,会调用“容错”的方法。一般的设置参数包括调用容错方法的次数等。
 
 把这些概念联系起来:当"隔离"措施检测到N次请求中共有M次错误的时候,"熔断"不再发送后续请求,调用"容错"处理函数。这个技术上的定义,是和Netflix Hystrix一致的,通过这个定义,非常容易理解它提供的配置项,参考:[https://github.com/Netflix/Hystrix/wiki/Configuration](https://github.com/Netflix/Hystrix/wiki/Configuration)。当前ServiceComb提供两种容错方式,分别为返回null值和抛出异常。
 
@@ -168,4 +165,5 @@ cse:
     policy: throwexception
 ```
 
-  降级策略需要启用服务治理能力,对应的服务提供者的handler是bizkeeper-provider,服务消费者的handler是bizkeeper-consumer。
+> **说明:**
+> 降级策略需要启用服务治理能力,对应的服务提供者的handler是`bizkeeper-provider`,服务消费者的handler是`bizkeeper-consumer`。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/service-definition.md
----------------------------------------------------------------------
diff --git a/_users/service-definition.md b/_users/service-definition.md
index 79f34d0..68e4ad5 100644
--- a/_users/service-definition.md
+++ b/_users/service-definition.md
@@ -32,9 +32,9 @@ redirect_from:
 | instance\_description.properties | - | - | 否 | 服务实例元数据配置(通过microservice.yaml文件进行配置) |  |
 | instance\_description.propertyExtendedClass | - | - | 否 | 微服务元数据配置(通过实现接口PropertyExtended进行配置) | 同service\_description.propertyExtendedClass |
 
-服务的元数据会随服务一同注册到服务中心,如需修改,则要连同服务version一起变更。若想保持服务version不变,则需要通过服务管理中心统一变更元数据。
-
-默认情况下,微服务只支持同一个app内部的服务调用。可在微服务的properties中配置allowCrossApp=true属性,开启可被跨app访问权限。
+> 说明:
+- 服务的元数据会随服务一同注册到服务中心,如需修改,则要连同服务version一起变更。若想保持服务version不变,则需要通过服务管理中心统一变更元数据。
+- 默认情况下,微服务只支持同一个app内部的服务调用。可在微服务的properties中配置allowCrossApp=true属性,开启可被跨app访问权限。
 
 ## 示例代码
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/service-heartbeat.md
----------------------------------------------------------------------
diff --git a/_users/service-heartbeat.md b/_users/service-heartbeat.md
index 3bc1618..e5a5ae6 100644
--- a/_users/service-heartbeat.md
+++ b/_users/service-heartbeat.md
@@ -16,7 +16,7 @@ redirect_from:
 
 ## 涉及API
 
-* io.servicecomb.serviceregistry.client.ServiceRegistryClient:服务中心客户端
+* `io.servicecomb.serviceregistry.client.ServiceRegistryClient`:服务中心客户端
 
 ## 配置说明
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/service-interface-constraints.md
----------------------------------------------------------------------
diff --git a/_users/service-interface-constraints.md b/_users/service-interface-constraints.md
index bc9a4ce..9b812f4 100644
--- a/_users/service-interface-constraints.md
+++ b/_users/service-interface-constraints.md
@@ -44,17 +44,17 @@ public Person query(@RequestBody String id);
    ```java
    public class PersonHolder<T> {...}
    ```
-* 上述类型的集合类型或者没指定类型的集合,比如:List\<IPerson\>, Map\<String, PersonHolder\<?\>\>, List, Map等。 List\<String\>, List\<Person\>这些具体类型是支持的。
+* 上述类型的集合类型或者没指定类型的集合,比如:`List<IPerson>, Map<String, PersonHolder<?>>, List, Map`等。 `List<String>, List<Person>`这些具体类型是支持的。
 
 * 包含上述类型作为属性的类型
    ```java
    public class GroupOfPerson {IPerson master ...}
    ```
 
-开发者不用担心记不住这些约束,程序启动的时候会检查,并给于错误提示。
+开发者不用担心记不住这些约束,程序会在启动的时候检查不支持的类型,并给与错误提示。
 
 ## 协议上的差异 
-尽管Java Chassis实现了不同协议之间开发方式的透明,受限于底层协议的限制,不同的协议还是有少量差异。
+尽管ServiceComb-Java-Chassis实现了不同协议之间开发方式的透明,受限于底层协议的限制,不同的协议存在少量差异。
 
 * map,key只支持string
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/setup-environment.md
----------------------------------------------------------------------
diff --git a/_users/setup-environment.md b/_users/setup-environment.md
index 023c6a8..36aeb06 100644
--- a/_users/setup-environment.md
+++ b/_users/setup-environment.md
@@ -13,7 +13,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 
 * 安装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){:target="_blank"}。
+* 安装JDK 1.8,详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}。
 
 * 安装Maven 3.x,详情可参考[Maven安装教程](https://maven.apache.org/install.html){:target="_blank"}。
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/use-service-contract.md
----------------------------------------------------------------------
diff --git a/_users/use-service-contract.md b/_users/use-service-contract.md
index 3d25820..9acfcdd 100644
--- a/_users/use-service-contract.md
+++ b/_users/use-service-contract.md
@@ -30,6 +30,15 @@ cse:
       version-rule: 0.0.1
 ```
 
+> version-rule是版本匹配规则,有四种格式:
+>
+> * 精确版本匹配:例如`version-rule: 0.0.1`,表示只匹配版本号为0.0.1的服务提供者
+> * 后续版本匹配:例如`version-rule: 1.0.0+`,表示匹配版本号大于或等于1.0.0的服务提供者
+> * 最新版本:`version-rule: latest`,表示匹配最新版本的服务提供者
+> * 版本范围:例如`1.0.0-2.0.2`,表示匹配版本号在1.0.0至2.0.2之间的服务提供者,包含1.0.0和2.0.2
+>
+> 此配置项默认为`latest`
+
 ### 手工配置服务契约
 
 服务消费者的开发者在线下拿到服务提供者的契约,配置到消费者工程的特定目录下。服务契约在项目中的存放目录与[服务契约](/users/service-contract/)的配置说明部分相同。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/use-servicecomb-in-spring-boot.md
----------------------------------------------------------------------
diff --git a/_users/use-servicecomb-in-spring-boot.md b/_users/use-servicecomb-in-spring-boot.md
index 726a8e5..8aafe64 100644
--- a/_users/use-servicecomb-in-spring-boot.md
+++ b/_users/use-servicecomb-in-spring-boot.md
@@ -17,7 +17,9 @@ redirect_from:
 
 ### 场景描述
 
-* SpringCloud应用默认情况下由Spring Cloud Eureka提供在分布式环境下的服务发现和服务注册的功能。![](file:///C:\Users\L00356~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.gif)![](/start/使用SC和GS管理SpringCloud应用.png)
+* SpringCloud应用默认情况下由Spring Cloud Eureka提供在分布式环境下的服务发现和服务注册的功能。
+
+   ![](/assets/images/manage_springcloud_application_using_sc_and_gs.png)
 
 * ServiceComb微服务框架中的Service Center用于服务元数据以及服务实例元数据的管理和处理注册、发现,同时还支持以下功能:
 
@@ -143,7 +145,7 @@ redirect_from:
 ## 在ServiceComb框架中集成Spring Boot框架
 ### 概念阐述
 
-  本小节介绍了在ServiceComb框架中集成SpringBoot框架的好处和操作步骤。
+本小节介绍了在ServiceComb框架中集成SpringBoot框架的好处和操作步骤。
 
 ### 场景描述
 
@@ -183,7 +185,7 @@ redirect_from:
 
    ```xml
    <dependency> 
-     <groupId>io.servicecomb</groupId>  
+     <groupId>io.servicecomb</groupId>
      <artifactId>spring-boot-starter-provider</artifactId> 
    </dependency>
    ```
@@ -192,11 +194,11 @@ redirect_from:
 
    ```xml
    <dependency> 
-     <groupId>org.springframework.boot</groupId>  
+     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId> 
    </dependency>
    <dependency> 
-     <groupId>org.springframework.boot</groupId>  
+     <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency>
    ```
@@ -219,7 +221,7 @@ redirect_from:
      public static void main(final String[] args) {
        Log4jUtils.init();
       //BeanUtils.init();
-      SpringApplication.run(xxxServer/Client.class, args)
+      SpringApplication.run(xxxServerOrClient.class, args)
      }
    }
    ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/use-tls.md
----------------------------------------------------------------------
diff --git a/_users/use-tls.md b/_users/use-tls.md
new file mode 100644
index 0000000..7b2e838
--- /dev/null
+++ b/_users/use-tls.md
@@ -0,0 +1,145 @@
+---
+title: "使用TLS通信"
+lang: en
+ref: use-tls
+permalink: /users/use-tls/
+excerpt: "使用TLS通信"
+last_modified_at: 2017-08-15T15:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+## 场景描述
+
+用户通过简单的配置即可启用TLS通信,以保障数据的传输安全。
+
+## 外部服务通信配置
+
+与外部服务通信相关的配置写在microservice.yaml文件中。
+
+* 服务中心TLS通信配置
+   微服务与服务中心的连接可以通过将http改为https启用TLS通信,配置示例如下:
+
+   ```yaml
+   cse:
+     service:
+       registry:
+         address: https://127.0.0.1:30100
+   ```
+
+* 服务提供者启用TLS通信
+   服务提供者在配置服务监听地址时,可以通过在地址后面追加`?sslEnabled=true`开启TLS通信,示例如下:
+
+   ```yaml
+   cse:
+     rest:
+       address: 0.0.0.0:8080?sslEnabled=true
+     highway:
+       address: 0.0.0.0:7070?sslEnabled=true
+   ```
+
+## 证书配置
+
+证书配置项写在microservice.yaml文件中,支持统一制定证书,也可以添加tag进行更细粒度的配置,有tag的配置会覆盖全局配置,配置格式如下:
+
+```yaml
+ssl.[tag].[property]
+```
+
+证书配置项见下表证书配置项说明表。
+
+**表1 证书配置项说明表**
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| ssl.protocols | TLSv1.2 | - | 否 | 协议列表 | 使用逗号分隔 |
+| ssl.ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256 | - | 否 | 算法列表 | 使用逗号分隔 |
+| ssl.authPeer | true | - | 否 | 是否认证对端 | - |
+| ssl.checkCN.host | true | - | 否 | 是否对证书的CN进行检查 | 该配置项只对Consumer端,并且使用http协议有效,即Consumser端使用rest通道有效。对于Provider端、highway通道等无效。检查CN的目的是防止服务器被钓鱼,参考标准定义:[https://tools.ietf.org/html/rfc2818。](https://tools.ietf.org/html/rfc2818。) |
+| ssl.trustStore | trust.jks | - | 否 | 信任证书文件 | - |
+| ssl.trustStoreType | JKS | - | 否 | 信任证书类型 | - |
+| ssl.trustStoreValue | - | - | 否 | 信任证书密码 | - |
+| ssl.keyStore | server.p12 | - | 否 | 身份证书文件 | - |
+| ssl.keyStoreType | PKCS12 | - | 否 | 身份证书类型 | - |
+| ssl.keyStoreValue | - | - | 否 | 身份证书密码 | - |
+| ssl.crl | revoke.crl | - | 否 | 吊销证书文件 | - |
+| ssl.sslCustomClass | - | com.huawei.paas.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
+
+> **说明**:
+>
+> * 默认的协议算法是高强度加密算法,JDK需要安装对应的策略文件,参考:[http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)。 您可以在配置文件配置使用非高强度算法。
+> * 微服务消费者,可以针对不同的提供者指定证书(当前证书是按照HOST签发的,不同的提供者都使用一份证书存储介质,这份介质同时给微服务访问服务中心和配置中心使用)。
+
+## 服务中心的证书配置
+
+目前支持使用环境变量来配置服务中心的TLS认证方式,默认开启TLS通信,双向认证模式,认证对端时同时校验对端是否匹配证书(CommonName)字段。服务管理中心的证书配置项说明见下表服务中心TLS证书配置项说明。
+
+**表2 服务中心TLS证书配置项说明**
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| CSE\_SSL\_MODE | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置协议模式 | - |
+| CSE\_SSL\_VERIFY\_CLIENT | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置HTTPS模式下是否认证对端 | - |
+| CSE\_SSL\_PASSPHASE | - | - | 否 | 设置HTTPS模式下的证书密钥访问密码 | - |
+
+服务管理中心配置文件为$APP\_ROOT/conf/app.conf,配置项见,该配置暂不支持环境变量方式设置。
+
+表3 服务中心配置文件
+
+| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
+| :--- | :--- | :--- | :--- | :--- | :--- |
+| ssl\_protocols | TLSv1.2 | - | 否 | 通信使用的SSL版本 | - |
+| ssl\_ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA | - | 否 | 配置使用算法列表 | 由于服务中心支持HTTP/2协议,所以ssl\_ciphers必须配置有TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256算法。TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256、TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA被列为HTTP/2协议的不安全算法黑名单,但为了客户端算法兼容性,存在时必须配置到最后一位。 |
+
+## 密钥物料及证书存放路径
+
+**表4 密钥物料及证书存放路径**
+
+| 配置项 | 含义 | 对应环境变量 | 注意 |
+| :--- | :--- | :--- | :--- |
+| / | - | - | - |
+| /opt | - | - | - |
+| /opt/CSE | - | INSTALL\_ROOT | - |
+| /opt/CSE/etc | - | - | - |
+| /opt/CSE/etc/cipher | 密钥物料存放目录 | CIPHER\_ROOT | - |
+| /opt/CSE/etc/ssl | 证书存放目录 | SSL\_ROOT | - |
+| /opt/CSE/etc/ssl/trust.cer | 授信CA | - | - |
+| /opt/CSE/etc/ssl/server\_key.pem | 已加密服务端私钥文件 | - | - |
+| /opt/CSE/etc/ssl/server.cer | 服务器证书 | - | - |
+| /opt/CSE/etc/ssl/cert\_pwd | 用于存放解密私钥的对称加密密文文件 | - | - |
+| /opt/CSE/apps | - | - | - |
+| /opt/CSE/apps/ServiceCenter | - | APP\_ROOT | - |
+| /opt/CSE/apps/ServiceCenter/conf | 服务管理中心配置文件目录 | - | - |
+| /opt/CSE/apps/ServiceCenter/conf/app.conf | 应用配置文件 | - | - |
+
+## 示例代码
+
+microservice.yaml文件中启用TLS通信的配置示例如下:
+```yaml
+cse:
+  service:
+    registry:
+      address: https://127.0.0.1:30100
+  config:
+    client:
+      serverUri: https://127.0.0.1:30103
+  rest:
+    address: 0.0.0.0:8080?sslEnabled=true
+  highway:
+    address: 0.0.0.0:7070?sslEnabled=true
+
+#########SSL options
+ssl.protocols: TLSv1.2
+ssl.authPeer: true
+ssl.checkCN.host: true
+
+#########certificates config
+ssl.trustStore: trust.jks
+ssl.trustStoreType: JKS
+ssl.trustStoreValue: Changeme_123
+ssl.keyStore: server.p12
+ssl.keyStoreType: PKCS12
+ssl.keyStoreValue: Changeme_123
+ssl.crl: revoke.crl
+ssl.sslCustomClass: io.servicecomb.demo.DemoSSLCustom
+```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/zuul.md
----------------------------------------------------------------------
diff --git a/_users/zuul.md b/_users/zuul.md
index caace11..f7f3d84 100644
--- a/_users/zuul.md
+++ b/_users/zuul.md
@@ -14,11 +14,11 @@ redirect_from:
 
 ### API Gateway:
 
-  API Gateway是一个服务器,也可以说是进入系统的唯一节点。API Gateway封装内部系统的架构,并且提供API给各个客户端。
+API Gateway是一个服务器,也可以说是进入系统的唯一节点。API Gateway封装内部系统的架构,并且提供API给各个客户端。
 
 ### Zuul
 
-  Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器,可以使用Zuul进行以下操作:
+Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器,可以使用Zuul进行以下操作:
 
 * 认证
 * 洞察
@@ -31,19 +31,19 @@ redirect_from:
 * 静态相响应处理
 * 主动/被动流量管理
 
-  本小节主要介绍在SpringBoot应用中使用Zuul做API Gateway。关于Zuul的详细功能介绍请参考文档[路由器和过滤器:Zuul](https://springcloud.cc/spring-cloud-dalston.html#_router_and_filter_zuul)。
+本小节主要介绍在SpringBoot应用中使用Zuul做API Gateway。关于Zuul的详细功能介绍请参考文档[路由器和过滤器:Zuul](https://springcloud.cc/spring-cloud-dalston.html#_router_and_filter_zuul)。
 
 ## 场景描述
 
-  Zuul做API Gateway,即建立一个Zuul Proxy应用,在该Proxy应用中统一定义所有的微服务访问入口,通过使用不同的前缀\(stripped\)来区分各个微服务。本小节通过建立一个ZuulProxy SpringBoot应用来演示Zuul的API Gateway功能。
+Zuul做API Gateway,即建立一个Zuul Proxy应用,在该Proxy应用中统一定义所有的微服务访问入口,通过使用不同的前缀\(stripped\)来区分各个微服务。本小节通过建立一个ZuulProxy SpringBoot应用来演示Zuul的API Gateway功能。
 
 ## 注意事项
 
-  本小节介绍的ZuulProxy和ZuulServer等demo都是基于SpringBoot和ServiceComb框架的应用,具体请参考[在ServiceComb框架中集成SpringBoot框架](/users/use-servicecomb-in-spring-boot/)。
+本小节介绍的ZuulProxy和ZuulServer等demo都是基于SpringBoot和ServiceComb框架的应用,具体请参考[在ServiceComb框架中集成SpringBoot框架](/users/use-servicecomb-in-spring-boot/)。
 
 ## 启动Zuul Proxy
 
-  本节介绍如何启动一个zuul proxy应用作为API Gateway。步骤如下:
+本节介绍如何启动一个zuul proxy应用作为API Gateway。步骤如下:
 
 * **步骤 1**在pom文件中添加依赖:
 
@@ -105,21 +105,21 @@ redirect_from:
        address: 0.0.0.0:8082 #微服务端口,可不写
    ```
 
-  本小节所有服务使用的都是本地的服务中心,具体的服务中心启动流程请参考[启动本地服务中心](/users/setup-environment/#运行service-center)。
+本小节所有服务使用的都是本地的服务中心,具体的服务中心启动流程请参考[启动本地服务中心](/users/setup-environment/#运行service-center)。
 
 * **步骤 5 **运行ZuulMain 应用
 
 ## 使用Zuul Proxy
 
-  在使用zuul做的API Gateway前,首先要启动在zuul.routers中定义的微服务提供者。
+在使用zuul做的API Gateway前,首先要启动在zuul.routers中定义的微服务提供者。
 
-  开发服务提供者,开发流程请参考[开发服务提供者](/users/service-definition/)。在微服务microservice.yaml文件中需注意以下两点:
+开发服务提供者,开发流程请参考[开发服务提供者](/users/service-definition/)。在微服务microservice.yaml文件中需注意以下两点:
 
 * APPLICATION\_ID需要于zuul proxy中定义的保持一致。
 
 * service\_description.name需要于zuul.routers中相对应。
 
-  示例如下:
+示例如下:
 
 ```yaml
 APPLICATION_ID: discoverytest #与zuul proxy一致
@@ -134,10 +134,10 @@ cse:
     address: 0.0.0.0:8080
 ```
 
-  API Gateway的访问入口为:[http://127.0.0.1:8754](http://127.0.0.1:8754),所有在zuul.routers中定义的服务都可通过这个访问入口进行代理访问,访问规则如下:
+API Gateway的访问入口为:[http://127.0.0.1:8754](http://127.0.0.1:8754),所有在zuul.routers中定义的服务都可通过这个访问入口进行代理访问,访问规则如下:
 
-  [http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***)
+http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***)
 
-  这表示,Http调用[http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***),会转到discoveryServer服务(例如:"/myServer/101"跳转到discoveryServer 服务下的"/101")
+这表示,Http调用[http://127.0.0.1:8754/myServer/\*\*\*](http://127.0.0.1:8754/myServer/***),会转到discoveryServer服务(例如:"/myServer/101"跳转到discoveryServer 服务下的"/101")
 
 > 如果在服务中心同时存在多个discoveryServer服务\(版本不同\),zuul默认采用Ribbon策略对请求进行转发。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/assets/images/manage_springcloud_application_using_sc_and_gs.png
----------------------------------------------------------------------
diff --git a/assets/images/manage_springcloud_application_using_sc_and_gs.png b/assets/images/manage_springcloud_application_using_sc_and_gs.png
new file mode 100644
index 0000000..9899e52
Binary files /dev/null and b/assets/images/manage_springcloud_application_using_sc_and_gs.png differ


[39/51] incubator-servicecomb-website git commit: fix listerner class error: com.huawei.paas.cse to io.servicecomb

Posted by jb...@apache.org.
fix listerner class error: com.huawei.paas.cse to io.servicecomb


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/37e286c2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/37e286c2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/37e286c2

Branch: refs/heads/asf-site
Commit: 37e286c22d6cb21d06260ed5ba4623c39bd52e4e
Parents: 2f96c06
Author: xiaozhangzaq <13...@163.com>
Authored: Wed Dec 6 10:40:27 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 09:21:46 2017 +0800

----------------------------------------------------------------------
 _users/cn/deployment.md | 8 ++++----
 _users/deployment.md    | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/37e286c2/_users/cn/deployment.md
----------------------------------------------------------------------
diff --git a/_users/cn/deployment.md b/_users/cn/deployment.md
index 657b1e4..554a2bc 100644
--- a/_users/cn/deployment.md
+++ b/_users/cn/deployment.md
@@ -49,12 +49,12 @@ redirect_from:
         </param-value>
     </context-param>
     <listener>
-        <listener-class>com.huawei.paas.cse.transport.rest.servlet.RestServletContextListener</listener-class>
+        <listener-class>io.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
     </listener>
 
     <servlet>
         <servlet-name>RestServlet</servlet-name>
-        <servlet-class>com.huawei.paas.cse.transport.rest.servlet.RestServlet</servlet-class>
+        <servlet-class>io.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
         <async-supported>true</async-supported>
     </servlet>
@@ -70,8 +70,8 @@ redirect_from:
 ```xml
 <dependencies>
     <dependency>
-        <groupId>com.huawei.paas.cse</groupId>
-        <artifactId>cse-transport-rest-servlet</artifactId>
+        <groupId>io.servicecomb</groupId>
+        <artifactId>transport-rest-servlet</artifactId>
     </dependency>
 </dependencies>
 <build>

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/37e286c2/_users/deployment.md
----------------------------------------------------------------------
diff --git a/_users/deployment.md b/_users/deployment.md
index 5e1c96a..28113d4 100644
--- a/_users/deployment.md
+++ b/_users/deployment.md
@@ -49,12 +49,12 @@ redirect_from:
         </param-value>
     </context-param>
     <listener>
-        <listener-class>com.huawei.paas.cse.transport.rest.servlet.RestServletContextListener</listener-class>
+        <listener-class>io.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
     </listener>
 
     <servlet>
         <servlet-name>RestServlet</servlet-name>
-        <servlet-class>com.huawei.paas.cse.transport.rest.servlet.RestServlet</servlet-class>
+        <servlet-class>io.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
         <async-supported>true</async-supported>
     </servlet>
@@ -70,8 +70,8 @@ redirect_from:
 ```xml
 <dependencies>
     <dependency>
-        <groupId>com.huawei.paas.cse</groupId>
-        <artifactId>cse-transport-rest-servlet</artifactId>
+        <groupId>io.servicecomb</groupId>
+        <artifactId>transport-rest-servlet</artifactId>
     </dependency>
 </dependencies>
 <build>


[21/51] incubator-servicecomb-website git commit: added 2nd livestreaming slide

Posted by jb...@apache.org.
added 2nd livestreaming slide

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/93699c69
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/93699c69
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/93699c69

Branch: refs/heads/asf-site
Commit: 93699c69133980ef0b3c161e0ea9bddcfc390e68
Parents: b04abde
Author: eric-lee-ltk <li...@huawei.com>
Authored: Sat Nov 4 15:13:51 2017 +0800
Committer: Eric Lee <li...@huawei.com>
Committed: Sat Nov 4 17:29:55 2017 +0800

----------------------------------------------------------------------
 _pages/about-slides.md                           |   9 +++++++--
 _pages/cn/about-slides.md                        |   9 +++++++--
 .../20171102/ServiceComb_PastAndPresent.pdf      | Bin 0 -> 1522795 bytes
 3 files changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/93699c69/_pages/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/about-slides.md b/_pages/about-slides.md
index 79b58be..09b3608 100644
--- a/_pages/about-slides.md
+++ b/_pages/about-slides.md
@@ -6,8 +6,13 @@ permalink: /slides/
 date: 2017-06-20T11:02:20+08:00
 ---
 
-LinuxCon Beijing 2017 Workshop
+## LinuxCon Beijing 2017 Workshop
  * [design principles and ecosystem of microservice]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/MSAPrinciple&EcoSystem.pdf)
- * [ServiceComb: past and present]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/ServiceCombIntroduction.pdf)
  * [ServiceComb RoadMap]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/ServiceCombRoadMap.pdf)
  * [ServiceComb Workshop]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/LinuxCon-Workshop-company.pdf)
+
+## [ServiceComb live streaming phase I](http://www.itdks.com/liveevent/detail/6618), 20171026
+* [ServiceComb Introduction]({{ site.url }}{{ site.baseurl }}/assets/slides/20171026/ServiceCombIntroduce1026.pdf)
+
+## [ServiceComb live streaming phase II](http://www.itdks.com/liveevent/detail/6620), 20171102
+ * [ServiceComb: past and present]({{ site.url }}{{ site.baseurl }}/assets/slides/20171102/ServiceComb_PastAndPresent.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/93699c69/_pages/cn/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/cn/about-slides.md b/_pages/cn/about-slides.md
index 01f8464..584631e 100644
--- a/_pages/cn/about-slides.md
+++ b/_pages/cn/about-slides.md
@@ -6,8 +6,13 @@ permalink: /cn/slides/
 date: 2017-06-20T11:02:20+08:00
 ---
 
-LinuxCon Beijing 2017 Workshop
+## LinuxCon Beijing 2017 Workshop
  * [微服务设计原则与生态系统]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/MSAPrinciple&EcoSystem.pdf)
- * [ServiceComb前世今生]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/ServiceCombIntroduction.pdf)
  * [ServiceComb RoadMap]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/ServiceCombRoadMap.pdf)
  * [ServiceComb Workshop]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/LinuxCon-Workshop-company.pdf)  
+
+## [ServiceComb直播第一期](http://www.itdks.com/liveevent/detail/6618), 20171026
+* [ServiceComb开源项目介绍]({{ site.url }}{{ site.baseurl }}/assets/slides/20171026/ServiceCombIntroduce1026.pdf)
+
+## [ServiceComb直播第二期](http://www.itdks.com/liveevent/detail/6620), 20171102
+ * [ServiceComb前世今生]({{ site.url }}{{ site.baseurl }}/assets/slides/20171102/ServiceComb_PastAndPresent.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/93699c69/assets/slides/20171102/ServiceComb_PastAndPresent.pdf
----------------------------------------------------------------------
diff --git a/assets/slides/20171102/ServiceComb_PastAndPresent.pdf b/assets/slides/20171102/ServiceComb_PastAndPresent.pdf
new file mode 100644
index 0000000..b5bc8ea
Binary files /dev/null and b/assets/slides/20171102/ServiceComb_PastAndPresent.pdf differ


[32/51] incubator-servicecomb-website git commit: fixed file suffix

Posted by jb...@apache.org.
fixed file suffix

Signed-off-by: Eric Lee <da...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/aeb85a0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/aeb85a0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/aeb85a0d

Branch: refs/heads/asf-site
Commit: aeb85a0da3bb59fad1e27a13acb9e074bcb9abce
Parents: ca1f809
Author: Eric Lee <da...@huawei.com>
Authored: Fri Nov 24 16:37:23 2017 +0800
Committer: Eric Lee <da...@huawei.com>
Committed: Fri Nov 24 16:38:43 2017 +0800

----------------------------------------------------------------------
 _pages/about-slides.md    | 2 +-
 _pages/cn/about-slides.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/aeb85a0d/_pages/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/about-slides.md b/_pages/about-slides.md
index 60738a7..472fe04 100644
--- a/_pages/about-slides.md
+++ b/_pages/about-slides.md
@@ -21,4 +21,4 @@ date: 2017-06-20T11:02:20+08:00
  * [Micrservice practice of Huawei consumer cloud based on ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf)
 
 ## [ServiceComb live streaming phase IV](http://www.itdks.com/liveevent/detail/6622), 20171124
- * [Live coding the quick start example of ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.pdf)
+ * [Live coding the quick start example of ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/aeb85a0d/_pages/cn/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/cn/about-slides.md b/_pages/cn/about-slides.md
index 96a57da..17d9ba8 100644
--- a/_pages/cn/about-slides.md
+++ b/_pages/cn/about-slides.md
@@ -21,4 +21,4 @@ date: 2017-06-20T11:02:20+08:00
  * [消费者云ServiceComb微服务实践]({{ site.url }}{{ site.baseurl }}/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf)
 
 ## [ServiceComb 直播第四期](http://www.itdks.com/liveevent/detail/6622), 20171124
- * [ServiceComb快速入门&&在线Coding]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.pdf)
+ * [ServiceComb快速入门&&在线Coding]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip)


[41/51] incubator-servicecomb-website git commit: modify unavailable class from com.huawei.paas to io.servicecomb

Posted by jb...@apache.org.
modify unavailable class from com.huawei.paas to io.servicecomb


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/04bd51d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/04bd51d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/04bd51d2

Branch: refs/heads/asf-site
Commit: 04bd51d2d86275c50eb35eed00ec3a2113a9002f
Parents: 76b0ca3
Author: MiOliver <ti...@gmail.com>
Authored: Wed Dec 6 11:02:41 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 14:16:45 2017 +0800

----------------------------------------------------------------------
 _users/cn/use-tls.md | 2 +-
 _users/use-tls.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/04bd51d2/_users/cn/use-tls.md
----------------------------------------------------------------------
diff --git a/_users/cn/use-tls.md b/_users/cn/use-tls.md
index 098c1c6..d691a38 100644
--- a/_users/cn/use-tls.md
+++ b/_users/cn/use-tls.md
@@ -63,7 +63,7 @@ ssl.[tag].[property]
 | ssl.keyStoreType | PKCS12 | - | 否 | 身份证书类型 | - |
 | ssl.keyStoreValue | - | - | 否 | 身份证书密码 | - |
 | ssl.crl | revoke.crl | - | 否 | 吊销证书文件 | - |
-| ssl.sslCustomClass | - | com.huawei.paas.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
+| ssl.sslCustomClass | - | io.servicecomb.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
 
 > **说明**:
 >

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/04bd51d2/_users/use-tls.md
----------------------------------------------------------------------
diff --git a/_users/use-tls.md b/_users/use-tls.md
index 7b2e838..9a635c4 100644
--- a/_users/use-tls.md
+++ b/_users/use-tls.md
@@ -63,7 +63,7 @@ ssl.[tag].[property]
 | ssl.keyStoreType | PKCS12 | - | 否 | 身份证书类型 | - |
 | ssl.keyStoreValue | - | - | 否 | 身份证书密码 | - |
 | ssl.crl | revoke.crl | - | 否 | 吊销证书文件 | - |
-| ssl.sslCustomClass | - | com.huawei.paas.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
+| ssl.sslCustomClass | - | io.servicecomb.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
 
 > **说明**:
 >


[17/51] incubator-servicecomb-website git commit: 修改allowCrossApp 默认值为false

Posted by jb...@apache.org.
修改allowCrossApp 默认值为false

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/225047ed
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/225047ed
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/225047ed

Branch: refs/heads/asf-site
Commit: 225047ed8c4dd4bb6ad5c582f54d502cc9d3a503
Parents: 7b74e85
Author: LyonJack <56...@qq.com>
Authored: Thu Nov 2 10:44:12 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:10:24 2017 -0700

----------------------------------------------------------------------
 _users/service-definition.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/225047ed/_users/service-definition.md
----------------------------------------------------------------------
diff --git a/_users/service-definition.md b/_users/service-definition.md
index c0111cd..ae6afe2 100644
--- a/_users/service-definition.md
+++ b/_users/service-definition.md
@@ -44,8 +44,8 @@ service_description: #服务描述
   name: helloServer #微服务名称
   version: 0.0.1 #服务版本号
   properties: #元数据
-    allowCrossApp: true
-    key1: value1
+    allowCrossApp: false
+    key1: value1
     key2: value2
   propertyExtentedClass: io.servicecomb.serviceregistry.MicroServicePropertyExtendedStub
 instance_description: #实例描述


[47/51] incubator-servicecomb-website git commit: added 2017 arch submit service mesh slides

Posted by jb...@apache.org.
added 2017 arch submit service mesh slides

Signed-off-by: Eric Lee <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/38c4d7a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/38c4d7a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/38c4d7a0

Branch: refs/heads/asf-site
Commit: 38c4d7a07383df608e11c8258bfacfba8691ede8
Parents: d7a37c4
Author: Eric Lee <li...@huawei.com>
Authored: Sat Dec 9 22:42:53 2017 +0800
Committer: Eric Lee <da...@huawei.com>
Committed: Sat Dec 9 22:53:59 2017 +0800

----------------------------------------------------------------------
 _pages/about-slides.md                           |   3 +++
 _pages/cn/about-slides.md                        |   3 +++
 .../PracticeOfServiceMeshOnHuaweiPublicCloud.pdf | Bin 0 -> 4580129 bytes
 3 files changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/38c4d7a0/_pages/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/about-slides.md b/_pages/about-slides.md
index 4c52552..e0e64da 100644
--- a/_pages/about-slides.md
+++ b/_pages/about-slides.md
@@ -10,6 +10,9 @@ date: 2017-06-20T11:02:20+08:00
  * [design principles and ecosystem of microservice]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/MSAPrinciple&EcoSystem.pdf)
  * [ServiceComb RoadMap]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/ServiceCombRoadMap.pdf)
  * [ServiceComb Workshop]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/LinuxCon-Workshop-company.pdf)
+ 
+## Arch Submit, 20171209, Beijing
+ * [Practice Of Service Mesh on Huawei Public Cloud]({{ site.url }}{{ site.baseurl }}/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf)
 
 ## [ServiceComb live streaming phase I](http://www.itdks.com/liveevent/detail/6618), 20171026
 * [ServiceComb Introduction]({{ site.url }}{{ site.baseurl }}/assets/slides/20171026/ServiceCombIntroduce1026.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/38c4d7a0/_pages/cn/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/cn/about-slides.md b/_pages/cn/about-slides.md
index 4409f7c..606cf60 100644
--- a/_pages/cn/about-slides.md
+++ b/_pages/cn/about-slides.md
@@ -11,6 +11,9 @@ date: 2017-06-20T11:02:20+08:00
  * [ServiceComb RoadMap]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/ServiceCombRoadMap.pdf)
  * [ServiceComb Workshop]({{ site.url }}{{ site.baseurl }}/assets/slides/20170619/LinuxCon-Workshop-company.pdf)  
 
+## Arch Submit, 20171209, 北京
+ * [Service Mesh在华为公有云的实践]({{ site.url }}{{ site.baseurl }}/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf)
+
 ## [ServiceComb直播第一期](http://www.itdks.com/liveevent/detail/6618), 20171026
 * [ServiceComb开源项目介绍]({{ site.url }}{{ site.baseurl }}/assets/slides/20171026/ServiceCombIntroduce1026.pdf)
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/38c4d7a0/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf
----------------------------------------------------------------------
diff --git a/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf b/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf
new file mode 100644
index 0000000..918ff16
Binary files /dev/null and b/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf differ


[10/51] incubator-servicecomb-website git commit: Update 2017-10-28-service-center-ui.md

Posted by jb...@apache.org.
Update 2017-10-28-service-center-ui.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/d6359756
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/d6359756
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/d6359756

Branch: refs/heads/asf-site
Commit: d6359756ea9ce2e2dd4aa0962c2f55950fe4be33
Parents: 3c96bd6
Author: Mohammad Asif Siddiqui <mo...@huawei.com>
Authored: Thu Nov 2 12:33:14 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:08:14 2017 -0700

----------------------------------------------------------------------
 _posts/cn/2017-10-28-service-center-ui.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/d6359756/_posts/cn/2017-10-28-service-center-ui.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-28-service-center-ui.md b/_posts/cn/2017-10-28-service-center-ui.md
index 0e90ee7..9265f05 100644
--- a/_posts/cn/2017-10-28-service-center-ui.md
+++ b/_posts/cn/2017-10-28-service-center-ui.md
@@ -2,7 +2,7 @@
 title: "Service-Center Management UI Console"
 lang: cn
 ref: service-center-ui
-permalink: /docs/service-centre-ui/
+permalink: /docs/service-center-ui/
 excerpt: "An introduction Service-Center Management Console"
 last_modified_at: 2017-10-30T09:18:43+08:00
 author: Asif Siddiqui


[04/51] incubator-servicecomb-website git commit: updated statements in quick start

Posted by jb...@apache.org.
updated statements in quick start

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/26bbf68b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/26bbf68b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/26bbf68b

Branch: refs/heads/asf-site
Commit: 26bbf68b6774fec12e7c1e81a52b94c8d92029e1
Parents: 35dcfff
Author: eric-lee-ltk <li...@huawei.com>
Authored: Mon Oct 23 12:54:07 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Oct 23 21:43:28 2017 -0500

----------------------------------------------------------------------
 _docs/cn/distributed-tracing.md |  8 ++------
 _docs/cn/flow-control.md        |  2 +-
 _docs/cn/load-balance.md        | 15 +--------------
 _docs/cn/quick-start-bmi.md     | 15 ++++++++++++---
 _docs/cn/service-management.md  |  2 +-
 _docs/distributed-tracing.md    |  8 ++------
 _docs/flow-control.md           |  2 +-
 _docs/load-balance.md           | 16 +---------------
 _docs/quick-start-bmi.md        | 15 ++++++++++++---
 _docs/service-management.md     |  2 +-
 10 files changed, 34 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/cn/distributed-tracing.md
----------------------------------------------------------------------
diff --git a/_docs/cn/distributed-tracing.md b/_docs/cn/distributed-tracing.md
index 4badbad..c9db557 100644
--- a/_docs/cn/distributed-tracing.md
+++ b/_docs/cn/distributed-tracing.md
@@ -40,10 +40,6 @@ last_modified_at: 2017-09-03T10:01:43-04:00
    ```xml
        <dependency>
          <groupId>io.servicecomb</groupId>
-         <artifactId>handler-tracing-zipkin</artifactId>
-       </dependency>
-       <dependency>
-         <groupId>io.servicecomb</groupId>
          <artifactId>spring-cloud-zuul-zipkin</artifactId>
        </dependency>
    ```
@@ -59,13 +55,13 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 2. 重启 *体质指数计算器* 微服务:
 
    ```bash
-   mvn spring-boot:run -Ptracing -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider"
+   mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider"
    ```
    
 3. 重启 *体质指数界面* 微服务:
 
    ```bash
-   mvn spring-boot:run -Ptracing
+   mvn spring-boot:run -Drun.jvmArguments="-Dservicecomb.tracing.enabled=true"
    ```
 
 ## 验证

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/cn/flow-control.md
----------------------------------------------------------------------
diff --git a/_docs/cn/flow-control.md b/_docs/cn/flow-control.md
index f06756f..f44d7de 100644
--- a/_docs/cn/flow-control.md
+++ b/_docs/cn/flow-control.md
@@ -43,7 +43,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 体质指数应用中已配置好了上述配置项,您只需关闭之前运行的 **体质指数计算器**,然后再用以下指令重新运行即可:
 
 ```bash
-mvn spring-boot:run -Pflowcontrol -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=qps-flowcontrol-provider -Dcse.flowcontrol.Provider.qps.limit.gateway=1"
+mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=qps-flowcontrol-provider -Dcse.flowcontrol.Provider.qps.limit.gateway=1"
 ```
 
 ## 验证 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/cn/load-balance.md
----------------------------------------------------------------------
diff --git a/_docs/cn/load-balance.md b/_docs/cn/load-balance.md
index 4d8800a..465a82f 100644
--- a/_docs/cn/load-balance.md
+++ b/_docs/cn/load-balance.md
@@ -16,20 +16,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 
 ## 开启
 
-1. 在 *体质指数界面* 的 `pom.xml` 文件中添加依赖项:
-
-   ```xml
-   <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>handler-loadbalance</artifactId>
-    </dependency>
-   ```
-
-体质指数应用中已配置好了上述配置项,您只需通过以下指令重启体质指数界面微服务即可:
-
-```bash
-mvn spring-boot:run -Ploadbalance 
-```
+默认情况下会使用内置的一个简单的负载均衡的实现,不需要额外的配置。
 
 ## 验证
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/cn/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start-bmi.md b/_docs/cn/quick-start-bmi.md
index af13500..229dcac 100644
--- a/_docs/cn/quick-start-bmi.md
+++ b/_docs/cn/quick-start-bmi.md
@@ -39,6 +39,9 @@ public interface CalculatorService {
 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);
   }
@@ -63,7 +66,6 @@ public interface CalculatorEndpoint {
 ```java
 @RestSchema(schemaId = "calculatorRestEndpoint")
 @RequestMapping("/")
-@Controller
 public class CalculatorRestEndpoint implements CalculatorEndpoint {
 
   private final CalculatorService calculatorService;
@@ -74,8 +76,7 @@ public class CalculatorRestEndpoint implements CalculatorEndpoint {
   }
 
   @Override
-  @RequestMapping(value = "/bmi", method = RequestMethod.GET)
-  @ResponseBody
+  @GetMapping("/bmi")
   public double calculate(double height, double weight) {
     return calculatorService.calculate(height, weight);
   }
@@ -128,6 +129,14 @@ public class CalculatorApplication {
       <groupId>io.servicecomb</groupId>
       <artifactId>spring-boot-starter-discovery</artifactId>
     </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>spring-boot-starter-servicecomb</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>spring-cloud-zuul</artifactId>
+    </dependency>
 ```
 在 `application.yaml` 文件中配置路由规则及服务端口信息:
 ```yaml

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/cn/service-management.md
----------------------------------------------------------------------
diff --git a/_docs/cn/service-management.md b/_docs/cn/service-management.md
index c7223a5..2a198b1 100644
--- a/_docs/cn/service-management.md
+++ b/_docs/cn/service-management.md
@@ -45,7 +45,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 体质指数应用中已配置好了上述配置项,您只需重新运行 **体质指数计算器**:
 
 ```bash
-mvn spring-boot:run -Pbizkeeper -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=bizkeeper-provider -Dcse.circuitBreaker.Provider.calculator.requestVolumeThreshold=3 -Dcse.fallbackpolicy.Provider.policy=returnnull"
+mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=bizkeeper-provider -Dcse.circuitBreaker.Provider.calculator.requestVolumeThreshold=3 -Dcse.fallbackpolicy.Provider.policy=returnnull"
 ```
 
 ## 验证

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/distributed-tracing.md
----------------------------------------------------------------------
diff --git a/_docs/distributed-tracing.md b/_docs/distributed-tracing.md
index 1bae478..3efe333 100644
--- a/_docs/distributed-tracing.md
+++ b/_docs/distributed-tracing.md
@@ -40,10 +40,6 @@ Walk through [Develop microservice application in minutes](/docs/quick-start-bmi
    ```xml
        <dependency>
          <groupId>io.servicecomb</groupId>
-         <artifactId>handler-tracing-zipkin</artifactId>
-       </dependency>
-       <dependency>
-         <groupId>io.servicecomb</groupId>
          <artifactId>spring-cloud-zuul-zipkin</artifactId>
        </dependency>
    ```
@@ -59,13 +55,13 @@ The above configurations have already set up in the code. All you need to do is
 2. Restart *BMI calculator service* with the following command:
 
    ```bash
-   mvn spring-boot:run -Ptracing -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider"
+   mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider"
    ```
    
 3. Restart *BMI web service* with the following command:
 
    ```bash
-   mvn spring-boot:run -Ptracing
+   mvn spring-boot:run -Drun.jvmArguments="-Dservicecomb.tracing.enabled=true"
    ```
 
 ## Verification

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/flow-control.md
----------------------------------------------------------------------
diff --git a/_docs/flow-control.md b/_docs/flow-control.md
index 9749539..61f472c 100644
--- a/_docs/flow-control.md
+++ b/_docs/flow-control.md
@@ -43,7 +43,7 @@ Walk through [Develop microservice application in minutes](/docs/quick-start-bmi
 The above configurations have already set up in the code. All you need to do is to stop all **BMI calculator services** and then start a new one with the following command:
 
 ```bash
-mvn spring-boot:run -Pflowcontrol -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=qps-flowcontrol-provider -Dcse.flowcontrol.Provider.qps.limit.gateway=1"
+mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=qps-flowcontrol-provider -Dcse.flowcontrol.Provider.qps.limit.gateway=1"
 ```
 
 ## Verification

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/load-balance.md
----------------------------------------------------------------------
diff --git a/_docs/load-balance.md b/_docs/load-balance.md
index 5c10361..57f282c 100644
--- a/_docs/load-balance.md
+++ b/_docs/load-balance.md
@@ -16,21 +16,7 @@ Walk through [Develop microservice application in minutes](/docs/quick-start-bmi
 
 ## Enable
 
-1. Add load balance dependency in `pom.xml` of *BMI web service*:
-
-   ```xml
-   <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>handler-loadbalance</artifactId>
-    </dependency>
-   ```
-   
-
-The above configurations have already set up in the code. All you need to do is restart the **BMI web services** with the following command:
-
-```bash
-mvn spring-boot:run -Ploadbalance 
-```
+The simple embedded load balancer will be used by default. No extra configurations needed.
 
 ## Verification
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start-bmi.md b/_docs/quick-start-bmi.md
index e556171..ac356ee 100644
--- a/_docs/quick-start-bmi.md
+++ b/_docs/quick-start-bmi.md
@@ -40,6 +40,9 @@ public interface CalculatorService {
 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);
   }
@@ -64,7 +67,6 @@ Expose calculator service's restful endpoint:
 ```java
 @RestSchema(schemaId = "calculatorRestEndpoint")
 @RequestMapping("/")
-@Controller
 public class CalculatorRestEndpoint implements CalculatorEndpoint {
 
   private final CalculatorService calculatorService;
@@ -75,8 +77,7 @@ public class CalculatorRestEndpoint implements CalculatorEndpoint {
   }
 
   @Override
-  @RequestMapping(value = "/bmi", method = RequestMethod.GET)
-  @ResponseBody
+  @GetMapping("/bmi")
   public double calculate(double height, double weight) {
     return calculatorService.calculate(height, weight);
   }
@@ -128,6 +129,14 @@ Introduce ServiceComb dependency:
       <groupId>io.servicecomb</groupId>
       <artifactId>spring-boot-starter-discovery</artifactId>
     </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>spring-boot-starter-servicecomb</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>spring-cloud-zuul</artifactId>
+    </dependency>
 ```
 Configure routing rules and service endpoint in `application.yaml`.
 ```yaml

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26bbf68b/_docs/service-management.md
----------------------------------------------------------------------
diff --git a/_docs/service-management.md b/_docs/service-management.md
index ea2340b..5a8930a 100644
--- a/_docs/service-management.md
+++ b/_docs/service-management.md
@@ -45,7 +45,7 @@ Walk through [Develop microservice application in minutes](/docs/quick-start-bmi
 The above configurations have already set up in the code. All you need to do is to restart the *BMI calculator services* with the following command:
 
 ```bash
-mvn spring-boot:run -Pbizkeeper -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=bizkeeper-provider -Dcse.circuitBreaker.Provider.calculator.requestVolumeThreshold=3 -Dcse.fallbackpolicy.Provider.policy=returnnull"
+mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=bizkeeper-provider -Dcse.circuitBreaker.Provider.calculator.requestVolumeThreshold=3 -Dcse.fallbackpolicy.Provider.policy=returnnull"
 ```
 
 ## Verification


[02/51] incubator-servicecomb-website git commit: syncd user guide

Posted by jb...@apache.org.
syncd user guide

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/35dcfffa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/35dcfffa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/35dcfffa

Branch: refs/heads/asf-site
Commit: 35dcfffa82048cf7e9c36fdf23fe02f75b2c8c90
Parents: bd811b4
Author: eric-lee-ltk <li...@huawei.com>
Authored: Tue Oct 17 20:59:46 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Oct 23 09:47:11 2017 -0500

----------------------------------------------------------------------
 _data/navigation.yml                            |  18 +-
 _docs/quick-start.md                            |   2 +-
 _users/application-boot-process.md              |  10 +-
 _users/cn/application-boot-process.md           |  10 +-
 _users/cn/communicate-channel.md                |  43 ---
 _users/cn/communicate-protocol.md               | 166 +--------
 _users/cn/customized-tracing.md                 | 103 ++++++
 _users/cn/define-service-contract.md            |  47 ++-
 _users/cn/deployment.md                         |  37 +-
 _users/cn/develop-with-jax-rs.md                |  18 +-
 _users/cn/develop-with-rpc.md                   |   3 -
 _users/cn/develop-with-springmvc.md             |  21 +-
 _users/cn/develop-with-transparent-rpc.md       |  27 +-
 _users/cn/distributed-tracing.md                |  14 -
 _users/cn/faq.md                                | 365 ++++++++++++++++++-
 _users/cn/local-develop-test.md                 |   2 +-
 _users/cn/nginx.md                              |  52 ++-
 _users/cn/service-configurations.md             |  26 +-
 _users/cn/service-definition.md                 |   6 +-
 _users/cn/service-heartbeat.md                  |   2 +-
 _users/cn/service-interface-constraints.md      |   6 +-
 _users/cn/setup-environment.md                  |   2 +-
 _users/cn/use-service-contract.md               |   9 +
 _users/cn/use-servicecomb-in-spring-boot.md     |  14 +-
 _users/cn/use-tls.md                            | 145 ++++++++
 _users/cn/zuul.md                               |  26 +-
 _users/communicate-channel.md                   |  43 ---
 _users/communicate-protocol.md                  | 166 +--------
 _users/customized-tracing.md                    | 103 ++++++
 _users/define-service-contract.md               |  47 ++-
 _users/deployment.md                            |  37 +-
 _users/develop-with-jax-rs.md                   |  18 +-
 _users/develop-with-rpc.md                      |   3 -
 _users/develop-with-springmvc.md                |  21 +-
 _users/develop-with-transparent-rpc.md          |  27 +-
 _users/distributed-tracing.md                   |  14 -
 _users/local-develop-test.md                    |   2 +-
 _users/nginx.md                                 |  52 ++-
 _users/service-configurations.md                |  26 +-
 _users/service-definition.md                    |   6 +-
 _users/service-heartbeat.md                     |   2 +-
 _users/service-interface-constraints.md         |   6 +-
 _users/setup-environment.md                     |   2 +-
 _users/use-service-contract.md                  |   9 +
 _users/use-servicecomb-in-spring-boot.md        |  14 +-
 _users/use-tls.md                               | 145 ++++++++
 _users/zuul.md                                  |  26 +-
 ..._springcloud_application_using_sc_and_gs.png | Bin 0 -> 16479 bytes
 48 files changed, 1248 insertions(+), 695 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_data/navigation.yml
----------------------------------------------------------------------
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 9155b6d..54d7fd1 100755
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -73,8 +73,6 @@ t:
             url: /users/use-service-contract/
           - title: Invoke Control
             url: /users/invoke-control/
-          - title: Communicate Channel
-            url: /users/communicate-channel/
 
       - title: General Development
         children:
@@ -84,6 +82,8 @@ t:
             url: /users/use-servicecomb-in-spring-boot/
           - title: Distributed Tracing
             url: /users/distributed-tracing/
+          - title: Customized Tracing
+            url: /users/customized-tracing/
 
       - title: Edging Service
         children:
@@ -97,6 +97,11 @@ t:
           - title: Run Mode
             url: /users/run-mode/
 
+      - title: Security
+        children:
+          - title: Use TLS
+            url: /users/use-tls/
+
       - title: Huawei Public Cloud
         children:
           - title: FAQ
@@ -183,8 +188,6 @@ t:
             url: /cn/users/use-service-contract/
           - title: 调用控制
             url: /cn/users/invoke-control/
-          - title: 通信信道
-            url: /cn/users/communicate-channel/
 
       - title: 通用开发
         children:
@@ -194,6 +197,8 @@ t:
             url: /cn/users/use-servicecomb-in-spring-boot/
           - title: 分布式调用链追踪
             url: /cn/users/distributed-tracing/
+          - title: 自定义调用链打点
+            url: /cn/users/customized-tracing/
 
       - title: 服务能力开放
         children:
@@ -207,6 +212,11 @@ t:
           - title: 运行模式
             url: /cn/users/run-mode/
 
+      - title: 微服务安全
+        children:
+          - title: 使用TLS通信
+            url: /cn/users/use-tls/
+
       - title: 华为公有云
         children:
           - title: 常见问题

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_docs/quick-start.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start.md b/_docs/quick-start.md
index fe0ef11..97e22a2 100644
--- a/_docs/quick-start.md
+++ b/_docs/quick-start.md
@@ -12,7 +12,7 @@ last_modified_at: 2017-09-06T00:50:43-55:00
 
 * Install Git, details can refer to [Git Installing Guide](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git){:target="_blank"}.
 
-* Install JDK 1.8+, details can refer to [JDK Installing Guide](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}.
+* Install JDK 1.8, details can refer to [JDK Installing Guide](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}.
 
 * Install Maven 3.x, details can refer to [Maven Installing Guide](https://maven.apache.org/install.html){:target="_blank"}.
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/application-boot-process.md
----------------------------------------------------------------------
diff --git a/_users/application-boot-process.md b/_users/application-boot-process.md
index df447da..c379dcf 100644
--- a/_users/application-boot-process.md
+++ b/_users/application-boot-process.md
@@ -13,15 +13,15 @@ redirect_from:
 
 * 初始化Log4j
 
-   Log4jUtils默认会从classpath\*:config/base/log4j.properties和classpath\*:config/log4j.properties两个路径读取log4j配置并合并,将其传递给Log4j的PropertyConfigurator方法初始化Log4j。如果优先级最高的配置文件是在磁盘上,且其所在目录有写权限,则将合并的配置输出到该目录,以便于维护时观察生效的参数。
+   `Log4jUtils`默认会从`classpath\*:config/base/log4j.properties`和`classpath\*:config/log4j.properties`两个路径读取log4j配置并合并,将其传递给Log4j的`PropertyConfigurator`方法初始化Log4j。如果优先级最高的配置文件是在磁盘上,且其所在目录有写权限,则将合并的配置输出到该目录,以便于维护时观察生效的参数。
 
 * bean加载
 
-   BeanUtils默认会从classpath\*:META-INF/spring/\*.bean.xml路径加载配置文件,并将其传递给Spring框架的ClassPathXmlApplicationContext完成应用上下文加载。在这个过程中会加载foundation-config模块的bean,完成配置加载。
+   `BeanUtils`默认会从`classpath\*:META-INF/spring/\*.bean.xml`路径加载配置文件,并将其传递给Spring框架的`ClassPathXmlApplicationContext`完成应用上下文加载。在这个过程中会加载foundation-config模块的bean,完成配置加载。
 
 * 服务注册
 
-   在Spring context加载完成后,io.servicecomb.core.CseApplicationListener会加载handler配置、加载provider的schema信息,最后将微服务信息注册到服务中心。
-
-ServiceComb的配置项分为两个层次:环境变量、本地文件,两者优先级依次递减,高优先级中的配置项覆盖低优先级同名配置项。
+   在Spring context加载完成后,`io.servicecomb.core.CseApplicationListener`会加载handler配置、加载provider的schema信息,最后将微服务信息注册到服务中心。
 
+> **说明:**
+> ServiceComb的配置项分为三个层次:配置中心、环境变量、本地文件,三者优先级依次递减,高优先级中的配置项覆盖低优先级同名配置项。存放在配置中心的配置项可以在运行时修改。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/application-boot-process.md
----------------------------------------------------------------------
diff --git a/_users/cn/application-boot-process.md b/_users/cn/application-boot-process.md
index b991224..d47b2d4 100644
--- a/_users/cn/application-boot-process.md
+++ b/_users/cn/application-boot-process.md
@@ -13,15 +13,15 @@ redirect_from:
 
 * 初始化Log4j
 
-   Log4jUtils默认会从classpath\*:config/base/log4j.properties和classpath\*:config/log4j.properties两个路径读取log4j配置并合并,将其传递给Log4j的PropertyConfigurator方法初始化Log4j。如果优先级最高的配置文件是在磁盘上,且其所在目录有写权限,则将合并的配置输出到该目录,以便于维护时观察生效的参数。
+   `Log4jUtils`默认会从`classpath\*:config/base/log4j.properties`和`classpath\*:config/log4j.properties`两个路径读取log4j配置并合并,将其传递给Log4j的`PropertyConfigurator`方法初始化Log4j。如果优先级最高的配置文件是在磁盘上,且其所在目录有写权限,则将合并的配置输出到该目录,以便于维护时观察生效的参数。
 
 * bean加载
 
-   BeanUtils默认会从classpath\*:META-INF/spring/\*.bean.xml路径加载配置文件,并将其传递给Spring框架的ClassPathXmlApplicationContext完成应用上下文加载。在这个过程中会加载foundation-config模块的bean,完成配置加载。
+   `BeanUtils`默认会从`classpath\*:META-INF/spring/\*.bean.xml`路径加载配置文件,并将其传递给Spring框架的`ClassPathXmlApplicationContext`完成应用上下文加载。在这个过程中会加载foundation-config模块的bean,完成配置加载。
 
 * 服务注册
 
-   在Spring context加载完成后,io.servicecomb.core.CseApplicationListener会加载handler配置、加载provider的schema信息,最后将微服务信息注册到服务中心。
-
-ServiceComb的配置项分为两个层次:环境变量、本地文件,两者优先级依次递减,高优先级中的配置项覆盖低优先级同名配置项。
+   在Spring context加载完成后,`io.servicecomb.core.CseApplicationListener`会加载handler配置、加载provider的schema信息,最后将微服务信息注册到服务中心。
 
+> **说明:**
+> ServiceComb的配置项分为三个层次:配置中心、环境变量、本地文件,三者优先级依次递减,高优先级中的配置项覆盖低优先级同名配置项。存放在配置中心的配置项可以在运行时修改。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/communicate-channel.md
----------------------------------------------------------------------
diff --git a/_users/cn/communicate-channel.md b/_users/cn/communicate-channel.md
deleted file mode 100644
index 5669943..0000000
--- a/_users/cn/communicate-channel.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: "通信信道"
-lang: cn
-ref: communicate-channel
-permalink: /cn/users/communicate-channel/
-excerpt: "通信信道"
-last_modified_at: 2017-08-15T15:01:43-04:00
-redirect_from:
-  - /theme-setup/
----
-
-ServiceComb的consumer、transport、handler、producer之间是解耦的,各功能之间通过契约定义联合在一起工作的,即:
-
-consumer使用透明rpc,还是springmvc开发与使用highway,还是RESTful在网络上传输没有关系,与producer是使用透明rpc,还是jaxrs,或者是springmvc开发,也没有关系。handler也不感知业务开发方式以及传输方式。
-
-consumer访问producer,在运行时的transport选择上,总规则为:consumer的transport与producer的endpoint取交集,如果交集后,还有多个transport可选择,则轮流使用。分解开来,存在以下场景:
-
-1. 当一个微服务producer同时开放了highway以及RESTful的endpoint
-
-   * consumer进程中只部署了highway transport jar,则只会访问producer的highway endpoint
-   * consumer进程中只部署了RESTful transport jar,则只会访问producer的RESTful endpoint
-   * consumer进程中,同时部署了highway和RESTful transport jar,则会轮流访问producer的highway、RESTful endpoint
-
-   如果此时consumer想固定使用某个transport访问producer,可以在consumer进程的microservice.yaml中配置,指定transport的名称
-
-   ```yaml
-   servicecomb:
-     references:
-       microservice_name:
-         transport: highway
-   ```
-
-2. 当一个微服务producer只开放了highway的endpoint
-
-   * consumer进程只部署了highway transport jar,则正常使用higway访问
-   * consumer进程只部署了RESTful transport jar,则无法访问
-   * consumer进程同时部署了highway和RESTful transport jar,则正常使用highway访问
-
-3. 当一个微服务producer只开放了RESTful的endpoint
-
-   * consumer进程只部署了highway transport jar,则无法访问
-   * consumer进程只部署了RESTful transport jar,则正常使用RESTful访问
-   * consumer进程同时部署了highway和RESTful transport jar,则正常使用RESTful访问

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/communicate-protocol.md
----------------------------------------------------------------------
diff --git a/_users/cn/communicate-protocol.md b/_users/cn/communicate-protocol.md
index 94cd003..22c54ee 100644
--- a/_users/cn/communicate-protocol.md
+++ b/_users/cn/communicate-protocol.md
@@ -103,7 +103,7 @@ cse:
    servicecomb.rest.servlet.urlPattern: /rest/*
    ```
 
-  以上两种方式是等效的,两种方式都需要在maven pom文件中添加如下依赖:
+以上两种方式是等效的,两种方式都需要在maven pom文件中添加如下依赖:
 
 ```xml
 <dependency> 
@@ -112,9 +112,9 @@ cse:
 </dependency>
 ```
 
-  REST over Servlet在microservice.yaml文件中的配置项见下表:
+REST over Servlet在microservice.yaml文件中的配置项见下表:
 
-  表1 REST over Servlet配置项说明
+表1 REST over Servlet配置项说明
 
 | 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
 | :--- | :--- | :--- | :--- | :--- | :--- |
@@ -124,9 +124,9 @@ cse:
 | cse.references.\[服务名\].transport | rest |  | 否 | 访问的transport类型 | 同REST over Vertx的配置 |
 | cse.references.\[服务名\].version-rule | latest | - | 否 | 访问实例的版本号 | 同REST over Vertx的配置 |
 
-## 示例代码
+### 示例代码
 
-  microservice.yaml文件中的配置示例如下:
+microservice.yaml文件中的配置示例如下:
 
 ```yaml
 cse:
@@ -136,7 +136,7 @@ cse:
 ```
 
 ## REST over Vertx
-## 配置说明
+### 配置说明
 
 REST over Vertx通信通道对应使用standalone部署运行模式,可直接通过main函数拉起。main函数中需要初始化日志和加载服务配置,代码如下:
 
@@ -152,7 +152,7 @@ public class MainServer {
 }
 ```
 
- 使用REST over Vertx网络通道需要在maven pom文件中添加如下依赖:
+使用REST over Vertx网络通道需要在maven pom文件中添加如下依赖:
 
 ```xml
 <dependency>
@@ -161,9 +161,9 @@ public class MainServer {
 </dependency>
 ```
 
- REST over Vertx通道在microservice.yaml文件中有以下配置项:
+REST over Vertx通道在microservice.yaml文件中有以下配置项:
 
- 表2 REST over Vertx配置项说明
+表2 REST over Vertx配置项说明
 
 | 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
 | :--- | :--- | :--- | :--- | :--- | :--- |
@@ -177,7 +177,7 @@ public class MainServer {
 
 ### 示例代码
 
-  microservice.yaml文件中的配置示例:
+microservice.yaml文件中的配置示例:
 
 ```yaml
 cse:
@@ -193,11 +193,11 @@ cse:
 ## Highway RPC协议
 ### 概念阐述
 
-  Highway是ServiceComb的高性能私有协议,用户可在有特殊性能需求的场景下选用。
+Highway是ServiceComb的高性能私有协议,用户可在有特殊性能需求的场景下选用。
 
 ### 配置说明
 
-  使用Highway网络通道需要在maven pom文件中添加如下依赖:
+使用Highway网络通道需要在maven pom文件中添加如下依赖:
 
 ```xml
 <dependency> 
@@ -206,9 +206,9 @@ cse:
 </dependency>
 ```
 
-  Highway通道在microservice.yaml文件中的配置项如下表所示:
+Highway通道在microservice.yaml文件中的配置项如下表所示:
 
- 表3 Highway配置项说明
+表3 Highway配置项说明
 
 | 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
 | :--- | :--- | :--- | :--- | :--- | :--- |
@@ -222,146 +222,10 @@ cse:
 
 ### 示例代码
 
- microservice.yaml文件中的配置示例:
+microservice.yaml文件中的配置示例:
 
 ```yaml
 cse:
   highway:
     address: 0.0.0.0:7070
 ```
-
-## TLS通信
-### 场景描述
-
-用户通过简单的配置即可启用TLS通信,以保障数据的传输安全。
-
-### 外部服务通信配置
-
-与外部服务通信相关的配置写在microservice.yaml文件中。
-
-* 服务中心TLS通信配置
-   微服务与服务中心的连接可以通过将http改为https启用TLS通信,配置示例如下:
-
-   ```yaml
-   cse:
-     service:
-       registry:
-         address: https://127.0.0.1:30100
-   ```
-
-* 服务提供者启用TLS通信
-   服务提供者在配置服务监听地址时,可以通过在地址后面追加`?sslEnabled=true`开启TLS通信,示例如下:
-
-   ```yaml
-   cse:
-     rest:
-       address: 0.0.0.0:8080?sslEnabled=true
-     highway:
-       address: 0.0.0.0:7070?sslEnabled=true
-   ```
-
-### 证书配置
-
-证书配置项写在microservice.yaml文件中,支持统一制定证书,也可以添加tag进行更细粒度的配置,有tag的配置会覆盖全局配置,配置格式如下:
-
-```yaml
-ssl.[tag].[property]
-```
-
-证书配置项见下表证书配置项说明表。
-
-表4 证书配置项说明表
-
-| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
-| :--- | :--- | :--- | :--- | :--- | :--- |
-| ssl.protocols | TLSv1.2 | - | 否 | 协议列表 | 使用逗号分隔 |
-| ssl.ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256 | - | 否 | 算法列表 | 使用逗号分隔 |
-| ssl.authPeer | true | - | 否 | 是否认证对端 | - |
-| ssl.checkCN.host | true | - | 否 | 是否对证书的CN进行检查 | 该配置项只对Consumer端,并且使用http协议有效,即Consumser端使用rest通道有效。对于Provider端、highway通道等无效。检查CN的目的是防止服务器被钓鱼,参考标准定义:[https://tools.ietf.org/html/rfc2818。](https://tools.ietf.org/html/rfc2818。) |
-| ssl.trustStore | trust.jks | - | 否 | 信任证书文件 | - |
-| ssl.trustStoreType | JKS | - | 否 | 信任证书类型 | - |
-| ssl.trustStoreValue | - | - | 否 | 信任证书密码 | - |
-| ssl.keyStore | server.p12 | - | 否 | 身份证书文件 | - |
-| ssl.keyStoreType | PKCS12 | - | 否 | 身份证书类型 | - |
-| ssl.keyStoreValue | - | - | 否 | 身份证书密码 | - |
-| ssl.crl | revoke.crl | - | 否 | 吊销证书文件 | - |
-| ssl.sslCustomClass | - | io.servicecomb.foundation.ssl.SSLCustom的实现类 | 否 | SSLCustom类的实现,用于开发者转换密码、文件路径等。 | - |
-
-> **说明**:
->
-> * 默认的协议算法是高强度加密算法,JDK需要安装对应的策略文件,参考:[http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)。 您可以在配置文件配置使用非高强度算法。
-> * 微服务消费者,可以针对不同的提供者指定证书(当前证书是按照HOST签发的,不同的提供者都使用一份证书存储介质,这份介质同时给微服务访问服务中心和配置中心使用)。
-
-### 服务中心的证书配置
-
-目前支持使用环境变量来配置服务中心的TLS认证方式,默认开启TLS通信,双向认证模式,认证对端时同时校验对端是否匹配证书(CommonName)字段。服务管理中心的证书配置项说明见下表服务中心TLS证书配置项说明。
-
-表5 服务中心TLS证书配置项说明
-
-| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
-| :--- | :--- | :--- | :--- | :--- | :--- |
-| CSE\_SSL\_MODE | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置协议模式 | - |
-| CSE\_SSL\_VERIFY\_CLIENT | 1 | 1/0<br/>0:HTTPS<br/>1:HTTP | 否 | 设置HTTPS模式下是否认证对端 | - |
-| CSE\_SSL\_PASSPHASE | - | - | 否 | 设置HTTPS模式下的证书密钥访问密码 | - |
-
-服务管理中心配置文件为$APP\_ROOT/conf/app.conf,配置项见下表,该配置暂不支持环境变量方式设置。
-
-表6 服务中心配置文件
-
-| 配置项 | 默认值 | 取值范围 | 是否必选 | 含义 | 注意 |
-| :--- | :--- | :--- | :--- | :--- | :--- |
-| ssl\_protocols | TLSv1.2 | - | 否 | 通信使用的SSL版本 | - |
-| ssl\_ciphers | TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384,<br/>TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256,<br/>TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA | - | 否 | 配置使用算法列表 | 由于服务中心支持HTTP/2协议,所以ssl\_ciphers必须配置有TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256算法。TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256、TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA被列为HTTP/2协议的不安全算法黑名单,但为了客户端算法兼容性,存在时必须配置到最后一位。 |
-
-### 密钥物料及证书存放路径
-
-表7 密钥物料及证书存放路径
-
-| 配置项 | 含义 | 对应环境变量 | 注意 |
-| :--- | :--- | :--- | :--- |
-| / | - | - | - |
-| /opt | - | - | - |
-| /opt/CSE | - | INSTALL\_ROOT | - |
-| /opt/CSE/etc | - | - | - |
-| /opt/CSE/etc/cipher | 密钥物料存放目录 | CIPHER\_ROOT | - |
-| /opt/CSE/etc/ssl | 证书存放目录 | SSL\_ROOT | - |
-| /opt/CSE/etc/ssl/trust.cer | 授信CA | - | - |
-| /opt/CSE/etc/ssl/server\_key.pem | 已加密服务端私钥文件 | - | - |
-| /opt/CSE/etc/ssl/server.cer | 服务器证书 | - | - |
-| /opt/CSE/etc/ssl/cert\_pwd | 用于存放解密私钥的对称加密密文文件 | - | - |
-| /opt/CSE/apps | - | - | - |
-| /opt/CSE/apps/ServiceCenter | - | APP\_ROOT | - |
-| /opt/CSE/apps/ServiceCenter/conf | 服务管理中心配置文件目录 | - | - |
-| /opt/CSE/apps/ServiceCenter/conf/app.conf | 应用配置文件 | - | - |
-
-### 示例代码
-
-microservice.yaml文件中启用TLS通信的配置示例如下:
-```yaml
-cse:
-  service:
-    registry:
-      address: https://127.0.0.1:30100
-  config:
-    client:
-      serverUri: https://127.0.0.1:30103
-  rest:
-    address: 0.0.0.0:8080?sslEnabled=true
-  highway:
-    address: 0.0.0.0:7070?sslEnabled=true
-
-#########SSL options
-ssl.protocols: TLSv1.2
-ssl.authPeer: true
-ssl.checkCN.host: true
-
-#########certificates config
-ssl.trustStore: trust.jks
-ssl.trustStoreType: JKS
-ssl.trustStoreValue: Changeme_123
-ssl.keyStore: server.p12
-ssl.keyStoreType: PKCS12
-ssl.keyStoreValue: Changeme_123
-ssl.crl: revoke.crl
-ssl.sslCustomClass: io.servicecomb.demo.DemoSSLCustom
-```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/customized-tracing.md
----------------------------------------------------------------------
diff --git a/_users/cn/customized-tracing.md b/_users/cn/customized-tracing.md
new file mode 100644
index 0000000..352c6b8
--- /dev/null
+++ b/_users/cn/customized-tracing.md
@@ -0,0 +1,103 @@
+---
+title: "自定义调用链打点"
+lang: cn
+ref: customized-tracing
+permalink: /cn/users/customized-tracing/
+excerpt: "自定义调用链打点"
+last_modified_at: 2017-08-15T15:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+## 概念阐述
+
+分布式调用链追踪提供了服务间调用的时序信息,但服务内部的链路调用信息对开发者同样重要,如果能将两者合二为一,就能提供更完整的调用链,更容易定位错误和潜在性能问题。
+
+## 前提条件
+
+* 使用自定义打点功能需要首先配置并启用Java Chassis微服务调用链。
+
+## 注意事项
+
+* 使用`@Span`注释的自定义打点功能只支持和Java Chassis调用请求同一线程的方法调用。
+* 添加`@Span`注释的方法必须是Spring管理的Bean,否则需要按这里[提到的方法](https://stackoverflow.com/questions/41383941/load-time-weaving-for-non-spring-beans-in-a-spring-application)配置。
+
+## 自定义调用链打点
+
+该功能集成了Zipkin,提供`@Span`注释为需要追踪的方法自定义打点。Java Chassis将自动追踪所有添加`@Span`注释的方法,把每个方法的本地调用信息与服务间调用信息连接起来。
+
+## 使用步骤:
+
+### 添加依赖
+
+基于 ServiceComb Java Chassis 的微服务只需要添加如下依赖到 pom.xml:
+
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>tracing-zipkin</artifactId>
+    </dependency>
+```
+
+### 启用自定义打点功能
+
+在应用入口或Spring配置类上添加`@EnableZipkinTracing`注释:
+
+```java
+@SpringBootApplication
+@EnableZipkinTracing
+public class ZipkinSpanTestApplication {
+  public static void main(String[] args) {
+    SpringApplication.run(ZipkinSpanTestApplication.class);
+  }
+}
+```
+
+### 定制打点
+
+在需要定制打点的方法上添加`@Span`注释:
+
+```java
+@Component
+public class SlowRepoImpl implements SlowRepo {
+  private static final Logger logger = LoggerFactory.getLogger(SlowRepoImpl.class);
+
+  private final Random random = new Random();
+
+  @Span
+  @Override
+  public String crawl() throws InterruptedException {
+    logger.info("in /crawl");
+    Thread.sleep(random.nextInt(200));
+    return "crawled";
+  }
+}
+```
+
+就这样,通过使用`@Span`注释,我们启动了基于 Zipkin 的自定义打点功能。
+
+## 定制上报的数据
+
+通过自定义打点上报的调用链包含两条数据:
+
+* **span name** 默认为当前注释的方法全名。
+* **call.path** 默认为当前注释的方法签名。
+
+例如,上述例子`SlowRepoImp`里上报的数据如下:
+
+| key | value |
+| :--- | :--- |
+| span name | crawl |
+| call.path | public abstract java.lang.String io.servicecomb.tests.tracing.SlowRepo.crawl\(\) throws java.lang.InterruptedException |
+
+如果需要定制上报的数据内容,可以传入自定义的参数:
+
+```java
+  public static class CustomSpanTask {
+    @Span(spanName = "transaction1", callPath = "startA")
+    public String invoke() {
+      return "invoke the method";
+    }
+  }
+```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/define-service-contract.md
----------------------------------------------------------------------
diff --git a/_users/cn/define-service-contract.md b/_users/cn/define-service-contract.md
index cd3d11f..70eb04e 100644
--- a/_users/cn/define-service-contract.md
+++ b/_users/cn/define-service-contract.md
@@ -44,8 +44,8 @@ swagger: '2.0'
 info:
   title: hello
   version: 1.0.0
-  x-java-interface: io.servicecomb.samples.springmvc.Hello
-basePath: /springmvc/rest/hello
+  x-java-interface: io.servicecomb.samples.common.schema.Hello
+basePath: /springmvchello
 produces:
   - application/json
 
@@ -55,10 +55,27 @@ paths:
       operationId: sayHi
       parameters:
         - name: name
-          in: body
+          in: query
           required: true
+          type: string
+      responses:
+        200:
+          description: 正确返回
+          schema:
+            type: string
+        default:
+          description: 默认返回
           schema:
             type: string
+  /sayhello:
+    post:
+      operationId: sayHello
+      parameters:
+        - name: person
+          in: body
+          required: true
+          schema:
+            $ref: "#/definitions/Person"
       responses:
         200:
           description: 正确返回
@@ -68,24 +85,6 @@ paths:
           description: 默认返回
           schema:
             type: string
-  /sayhello:
-     post:
-          operationId: sayHello
-          parameters:
-            - name: person
-              in: body
-              required: true
-              schema:
-                $ref: "#/definitions/Person"
-          responses:
-            200:
-              description: 正确返回
-              schema:
-                type: string
-            default:
-              description: 默认返回
-              schema:
-                type: string
 definitions:
   Person:
     type: "object"
@@ -97,9 +96,9 @@ definitions:
       name: "Person"
 ```
 
-根据swagger标准,basePath配置的路径需要包括web server的webroot。
-
-info.x-java-interface需要标明具体的接口路径,根据项目实际情况而定。
+> **注意**:  
+- 根据swagger标准,basePath配置的路径需要包括web server的webroot。
+- info.x-java-interface需要标明具体的接口路径,根据项目实际情况而定。
 
 ## 隐式契约
 ### 概念阐述

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/deployment.md
----------------------------------------------------------------------
diff --git a/_users/cn/deployment.md b/_users/cn/deployment.md
index f66199b..657b1e4 100644
--- a/_users/cn/deployment.md
+++ b/_users/cn/deployment.md
@@ -12,7 +12,7 @@ redirect_from:
 {% include toc %}
 微服务框架当前提供了两种部署运行模式:standalone模式和web容器模式。推荐使用**standalone模式**拉起服务进程。
 ## standalone模式
-  框架提供了standalone部署运行模式,可直接在本地通过Main函数启动。
+一个Standalone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。微框架提供了standalone部署运行模式,服务容器只是一个简单的Main方法,并加载一个简单的Spring容器,用于暴露服务。
 
 ### 操作步骤
 
@@ -32,12 +32,12 @@ redirect_from:
 
 * **步骤2** 运行MainServer即可启动该微服务进程,向外暴露服务。
 
-   如果使用的是rest网络通道,需要将pom中的transport改为使用cse-transport-rest-vertx包。
+   注意:如果使用的是rest网络通道,需要将pom中的transport改为使用cse-transport-rest-vertx包。
 
 ## WEB容器模式
-如果需要将该微服务加载到web容器中启动运行时,需要新建一个servlet工程包装一下。
+如果需要将该微服务加载到web容器中启动运行时,需要新建一个servlet工程包装一下,该servlet工程,根据需要,可以不写或写少量的引导代码即可。
 
-### web.xml文件配置
+### 开发示例
 
 ```xml
 <web-app>
@@ -49,12 +49,12 @@ redirect_from:
         </param-value>
     </context-param>
     <listener>
-        <listener-class>io.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
+        <listener-class>com.huawei.paas.cse.transport.rest.servlet.RestServletContextListener</listener-class>
     </listener>
 
     <servlet>
         <servlet-name>RestServlet</servlet-name>
-        <servlet-class>io.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
+        <servlet-class>com.huawei.paas.cse.transport.rest.servlet.RestServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
         <async-supported>true</async-supported>
     </servlet>
@@ -65,28 +65,21 @@ redirect_from:
 </web-app>
 ```
 
-  RestServletContextListener用于初始化cse环境,包括日志、spring等等。需要指定spring配置文件加载路径,通过context-param来配置。上例中,classpath\*:META-INF/spring/\*.bean.xml是cse的内置规则,如果配置中未包含这个路径,则RestServletContextListener内部会将它追加在最后。
-
-  另外可以配置servlet-mapping中的url-pattern规则将满足指定规则的URL路由到该servlet中来。
-
-### pom文件配置
-  当前只有Rest网络通道支持此种运行模式,使用web容器模式时需要将pom文件中的transport改为依赖transport-rest-servlet包。
-
-  设置finalName,是方便部署,有这一项后,maven打出来的war包,部署到web容器中,webroot即是这个finalName。
+* **步骤2 修改pom文件**
 
 ```xml
-<dependencies> 
-  <dependency> 
-    <groupId>io.servicecomb</groupId>  
-    <artifactId>transport-rest-servlet</artifactId> 
-  </dependency>
+<dependencies>
+    <dependency>
+        <groupId>com.huawei.paas.cse</groupId>
+        <artifactId>cse-transport-rest-servlet</artifactId>
+    </dependency>
 </dependencies>
-<build> 
-  <finalName>test</finalName> 
+<build>
+    <finalName>test</finalName>
 </build>
 ```
 
-**注意:**
+**注意事项:**
 1. RESTful调用应该与web容器中其他静态资源调用(比如html、js等等)隔离开来,所以webroot后一段应该还有一层关键字,比如上面web.xml中举的例子(/test/rest)中的rest。
 2. 以tomcat为例,默认每个war包都有不同的webroot,这个webroot需要是basePath的前缀,比如webroot为test,则该微服务所有的契约都必须以/test打头。
 3. 当微服务加载在web容器中,并直接使用web容器开的http、https端口时,因为是使用的web容器的通信通道,所以需要满足web容器的规则。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/develop-with-jax-rs.md
----------------------------------------------------------------------
diff --git a/_users/cn/develop-with-jax-rs.md b/_users/cn/develop-with-jax-rs.md
index 33ae381..5a558f7 100644
--- a/_users/cn/develop-with-jax-rs.md
+++ b/_users/cn/develop-with-jax-rs.md
@@ -28,6 +28,7 @@ ServiceComb支持开发者使用JAX-RS注解,使用JAX-RS模式开发服务。
    }
    ```
 
+   > **说明**:
    该接口的位置需要与契约中x-java-interface所指定的路径一致。
 
 * **步骤 2** 实现服务。
@@ -78,10 +79,15 @@ ServiceComb支持开发者使用JAX-RS注解,使用JAX-RS模式开发服务。
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <context:component-scan base-package="io.servicecomb.samples.jaxrs.provider"/> 
+   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
+          xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util "
+          xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
+          xmlns:context=" http://www.springframework.org/schema/context "
+          xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+   
+       <context:component-scan base-package="io.servicecomb.samples.jaxrs.provider"/>
    </beans>
-```
+   ```
 
 ## 涉及API
 
@@ -100,6 +106,6 @@ JAX-RS开发模式当前支持如下注解,所有注解的使用方法参考[J
 | javax.ws.rs.HeaderParam | parameter | 从header中获取参数 |
 | javax.ws.rs.CookieParam | parameter | 从cookie中获取参数 |
 
-当方法参数没有注解,且不为HttpServletRequest类型参数时,默认为body类型参数,一个方法只支持最多一个body类型参数。
-
-打在参数上面的注解建议显式定义出value值,否则将直接使用契约中的参数名,例如应该使用@QueryParam\("name"\) String name,而不是@QueryParam String name。
+> **说明**:
+- 当方法参数没有注解,且不为HttpServletRequest类型参数时,默认为body类型参数,一个方法只支持最多一个body类型参数。
+- 打在参数上面的注解建议显式定义出value值,否则将直接使用契约中的参数名,例如应该使用`@QueryParam\("name"\) String name`,而不是`@QueryParam String name`。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/develop-with-rpc.md
----------------------------------------------------------------------
diff --git a/_users/cn/develop-with-rpc.md b/_users/cn/develop-with-rpc.md
index c196f0a..789b53b 100644
--- a/_users/cn/develop-with-rpc.md
+++ b/_users/cn/develop-with-rpc.md
@@ -48,6 +48,3 @@ public class CodeFirstConsumerMain {
 ```
 
 在以上代码中,服务消费者已经取得了服务提供者的服务接口`Hello`,并在代码中声明一个`Hello`类型的成员。通过在`hello`上使用`@RPCReference`注解指明微服务名称和schemaId,ServiceComb框架可以在程序启动时从服务中心获取到对应的服务提供者实例信息,并且生成一个代理注入到hello中,用户可以像调用本地类一样调用远程服务。
-
-> 注意:
-- 使用RPC开发方式开发服务消费者仍然需要在microservice.yaml文件中添加对于被依赖服务的说明,参见[使用Rest Template开发服务消费者](/cn/users/develop-with-rest-template/)中对于microservice.yaml的配置。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/develop-with-springmvc.md
----------------------------------------------------------------------
diff --git a/_users/cn/develop-with-springmvc.md b/_users/cn/develop-with-springmvc.md
index 16d00c9..d00e4fa 100644
--- a/_users/cn/develop-with-springmvc.md
+++ b/_users/cn/develop-with-springmvc.md
@@ -12,7 +12,7 @@ redirect_from:
 {% include toc %}
 ## 概念阐述
 
-  ServiceComb支持SpringMVC注解,允许使用SpringMVC风格开发微服务。
+ServiceComb支持SpringMVC注解,允许使用SpringMVC风格开发微服务。
 
 ## 开发示例
 
@@ -71,22 +71,33 @@ redirect_from:
    }
    ```
 
-   然后在resources/META-INF/spring目录下创建springmvcHello.bean.xml文件,命名规则为\*.bean.xml,配置spring进行服务扫描的base-package,文件内容如下:
+   然后在`resources/META-INF/spring`目录下创建`springmvcHello.bean.xml`文件,命名规则为`\*.bean.xml`,配置spring进行服务扫描的base-package,文件内容如下:
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <context:component-scan base-package="io.servicecomb.samples.springmvc.povider"/> 
+   
+   <beans xmlns="http://www.springframework.org/schema/beans"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xmlns:context="http://www.springframework.org/schema/context"
+          xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
+          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+   
+       <context:component-scan base-package="io.servicecomb.samples.springmvc.povider"/>
    </beans>
    ```
 
 ## 涉及API
 
-  Spring MVC开发模式当前支持org.springframework.web.bind.annotation包下的如下注解,所有注解的使用方法参考[Spring MVC官方文档](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)。
+Spring MVC开发模式当前支持org.springframework.web.bind.annotation包下的如下注解,所有注解的使用方法参考[Spring MVC官方文档](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html)。
 
 | 注解 | 位置 | 描述 |
 | :--- | :--- | :--- |
 | RequestMapping | schema/operation | 支持标注path/method/produces三种数据,operation默认继承schema上的produces |
+| GetMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| PutMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| PostMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| DeleteMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
+| PatchMapping | schema/operation | 支持标注path/produces两种数据,operation默认继承schema上的produces |
 | PathVariable | parameter | 从path中获取参数 |
 | RequestParam | parameter | 从query中获取参数 |
 | RequestHeader | parameter | 从header中获取参数 |

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/develop-with-transparent-rpc.md
----------------------------------------------------------------------
diff --git a/_users/cn/develop-with-transparent-rpc.md b/_users/cn/develop-with-transparent-rpc.md
index a1c70a3..ea09019 100644
--- a/_users/cn/develop-with-transparent-rpc.md
+++ b/_users/cn/develop-with-transparent-rpc.md
@@ -29,7 +29,8 @@ redirect_from:
    }
    ```
 
-   该接口的位置需要与契约中x-java-interface所指定的路径一致。
+   > **说明**:
+   > 该接口的位置需要与契约中x-java-interface所指定的路径一致。
 
 * **步骤 2** 实现服务
 
@@ -58,12 +59,18 @@ redirect_from:
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <cse:rpc-schema schema-id="pojoHello" implementation="io.servicecomb.samples.pojo.provider.PojoHelloImpl"/> 
+   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
+          xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util "
+          xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
+          xmlns:context=" http://www.springframework.org/schema/context "
+          xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+   
+       <cse:rpc-schema schema-id="pojoHello" implementation="io.servicecomb.samples.pojo.provider.PojoHelloImpl"/>
    </beans>
    ```
 
-   每一个服务接口都需要定义一个schema声明。
+   > **说明**:
+   > 每一个服务接口都需要定义一个schema声明。
 
 ## 通过注解配置的开发方式
 
@@ -84,9 +91,15 @@ redirect_from:
 
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
-   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util " xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc " xmlns:context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">  
-     <context:component-scan base-package="io.servicecomb.samples.pojo.provider"/> 
+   <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
+          xmlns:p=" http://www.springframework.org/schema/p " xmlns:util=" http://www.springframework.org/schema/util "
+          xmlns:cse=" http://www.huawei.com/schema/paas/cse/rpc "
+          xmlns:context=" http://www.springframework.org/schema/context "
+          xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+   
+       <context:component-scan base-package="io.servicecomb.samples.pojo.provider"/>
    </beans>
    ```
 
-与Spring MVC开发模式和JAX-RS开发模式不同的是,透明RPC开发模式使用的注解是`@RpcSchema`而非`@RestSchema`。
+> **说明**:
+> 与Spring MVC开发模式和JAX-RS开发模式不同的是,透明RPC开发模式使用的注解是`@RpcSchema`而非`@RestSchema`。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/distributed-tracing.md
----------------------------------------------------------------------
diff --git a/_users/cn/distributed-tracing.md b/_users/cn/distributed-tracing.md
index b96ec09..4d97416 100644
--- a/_users/cn/distributed-tracing.md
+++ b/_users/cn/distributed-tracing.md
@@ -28,8 +28,6 @@ ServiceComb 集成了 Zipkin 提供自动调用链追踪能力,如此一来用
 
 ## 使用步骤:
 
-我们将以 [workshop demo](https://github.com/ServiceComb/LinuxCon-Beijing-WorkShop) 为例演示如何用 Zipkin 实施调用链追踪。
-
 ### 添加依赖
 
 基于 ServiceComb Java Chassis 的微服务只需要添加如下依赖到 pom.xml:
@@ -72,15 +70,3 @@ servicecomb:
 
 **注意:** 如果项目中的其他依赖也引入了 zipkin (例如 Spring Cloud),可能导致 zipkin 版本不一致而运行出错,这时需要在项目 pom 中声明 zipkin 版本。
 {: .notice--warning}
-
-## 快速演示
-
-在 workshop demo 中启动追踪后,我们接下来在 docker 环境中演示一下调用链追踪功能。
-
-1. 在 workshop demo 目录下,使用命令`mvn package -DskipTests -Pdocker`或`mvn package -DskipTests -Pdocker -Pdocker-machine`(如果你使用[Docker Toolbox](https://www.docker.com/products/docker-toolbox)),创建所有服务的 docker 镜像
-
-2. 运行`docker-compose up`
-
-3. 发送请求。请参考链接视频进行操作:[http://v.youku.com/v\_show/id\_XMjg1NzQ3NzUzNg==.html](http://v.youku.com/v_show/id_XMjg1NzQ3NzUzNg==.html)
-
-4. 用浏览器打开运行在 docker 容器中的 Zipkin 网站,地址应为 docker 容器IP,例如:`http://192.168.99.100:9411/zipkin/`在这界面上就可以看到所有请求的调用性能数据。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/faq.md
----------------------------------------------------------------------
diff --git a/_users/cn/faq.md b/_users/cn/faq.md
index 6f191ac..bc00ef6 100644
--- a/_users/cn/faq.md
+++ b/_users/cn/faq.md
@@ -9,18 +9,18 @@ redirect_from:
   - /theme-setup/
 ---
 
-1. **Q: 使用Java-Chassis这个框架时有什么需要注意的地方?**
+* **Q: 使用Java-Chassis这个框架时有什么需要注意的地方?**
 
    A: 使用Java-Chassis有以下这些限制:
    (1) 0.3.0-SNAPSHOT之前的版本不支持类似`@GetMapping`这样的标注。
    (2) 所用到的HTTP请求方法一样时,如GET,则方法名不能重载。这是由于生成契约时方法名会作为其Operation ID,所以要保证其唯一性。
    (3) 方法和类必须是public的。
 
-2. **Q: 使用*spring-boot-starter-provider*这个依赖时,在*application.yml*文件中声明的`spring.main.web-application`属性并没有生效?**
+* **Q: 使用*spring-boot-starter-provider*这个依赖时,在*application.yml*文件中声明的`spring.main.web-application`属性并没有生效?**
 
    A: 使用*starter-provider*这个依赖时,如果用到了servlet这种方式时,需要在*application.properties*这个文件引入`spring.main.web-application=true`这样的属性或者在*application.yml*文件中声明,但是此时需要新建一个*application.properties*的文件,其内容可以为空。
 
-3. **Q: 网关依赖的jar和其他微服务的一样吗?**
+* **Q: 网关依赖的jar和其他微服务的一样吗?**
 
    ```xml
    <groupId>io.servicecomb</groupId>
@@ -29,15 +29,15 @@ redirect_from:
 
    A: 网关除了要依赖`spring-boot-starter-provider`之外还要依赖`spring-boot-starter-discovery`,可以参考[LinuxCon-Beijing-Workshop](https://github.com/ServiceComb/LinuxCon-Beijing-WorkShop)中manager的实现。
 
-4. **Q: 网关需要像其他微服务一样配置assembly吗?其中的/maven/gateway这个路径是docker maven plugin默认的吗?**
+* **Q: 网关需要像其他微服务一样配置assembly吗?其中的/maven/gateway这个路径是docker maven plugin默认的吗?**
 
    A: 需要,由于项目现在使用的是spring-boot的打包方式,docker maven plugin也是依赖打包生成的文件来生成docker镜像的。/maven这个路径是docker maven plugin指定的,而gateway这个路径是在assembly中指定的。
 
-5. **Q: 服务接口的返回类型可以是任意类型吗?还是必须是responseEntity?**
+* **Q: 服务接口的返回类型可以是任意类型吗?还是必须是responseEntity?**
 
    A: 可以,具体可以参考java-chassis的[integration-test的实现](https://github.com/ServiceComb/java-chassis/blob/master/integration-tests/springmvc-tests/src/test/java/io/servicecomb/demo/springmvc/tests/SpringMvcIntegrationTestBase.java#L145)。
 
-6. **Q: 微服务启动后,无法正确调用接口,使用的代码为:**
+* **Q: 微服务启动后,无法正确调用接口,使用的代码为:**
 
    ```java
    @RestController
@@ -57,10 +57,359 @@ redirect_from:
    public class WorkerController {}
    ```
 
-7. **Q: 如果没有指定RequestMapping这个标注的value时,默认的基本路径是什么?**
+* **Q: 如果没有指定RequestMapping这个标注的value时,默认的基本路径是什么?**
 
    A: 假设你的Controller类名为*HelloController*,那么基本路径就是/HelloController。
 
-8. **Q: 在eclipse下修改了microservice.yaml配置文件下的端口号,启动程序后,端口号没生效?**
+* **Q: 在eclipse下修改了microservice.yaml配置文件下的端口号,启动程序后,端口号没生效?**
 
    A: 需要单独导入sample项目,如果导入整个ServiceComb-Java-Chassis项目,由于sample目录不在ServiceComb-Java-Chassis模块中,IDE不会对sample进行编译,eclipse下并没有提示错误信息,IDEA下会有提示信息。因此eclipse启动sample的demo会发现修改了端口没有生效。
+
+* **Q: 如何自定义某个Java方法对应的REST接口里的HTTP Status Code?**
+
+   A: 对于正常的返回值,可以通过SwaggerAnnotation实现,例如:
+
+   ```java
+   @ApiResponse(code = 300, response = String.class, message = "")
+   public int test(int x) {
+     return 100;
+   }
+   ```
+   
+   对于异常的返回值,可以通过抛出自定义的InvocationException实现,例如:、
+   
+   ```java
+   public String testException(int code) {
+     String strCode = String.valueOf(code);
+       switch (code) {
+         case 200:
+           return strCode;
+         case 456:
+           throw new InvocationException(code, strCode, strCode + " error");
+         case 556:
+           throw new InvocationException(code, strCode, Arrays.asList(strCode + " error"));
+         case 557:
+           throw new InvocationException(code, strCode, Arrays.asList(Arrays.asList(strCode + " error")));
+         default:
+           break;
+       }
+   
+     return "not expected";
+   }
+   ```
+
+
+* **Q: 如何定制自己微服务的日志配置?**
+
+   A: ServiceComb不绑定日志器,只是使用了slf4j,用户可以自由选择log4j/log4j2/logback等等。ServiceComb提供了一个log4j的扩展,在标准log4j的基础上,支持log4j的properties文件的增量配置。
+   * 默认以规则:"classpath\*:config/log4j.properties"加载配置文件
+   * 实际会搜索出classpath中所有的```config/log4j.properties和config/log4j.*.properties```, 从搜索出的文件中切出```\*```的部分,进行alpha排序,然后按顺序加载,最后合成的文件作为log4j的配置文件。
+   * 如果要使用ServiceComb的log4j扩展,则需要调用Log4jUtils.init,否则完全按标准的日志器的规则使用。
+
+* **Q: 当服务配置了多个transport的时候,在运行时是怎么选择使用哪个transport的?**
+
+   A: 
+   * ServiceComb的consumer、transport、handler、producer之间是解耦的,各功能之间通过契约定义联合在一起工作的,即:
+      consumer使用透明rpc,还是springmvc开发与使用highway,还是RESTful在网络上传输没有关系与producer是使用透明rpc,还是jaxrs,或者是springmvc开发,也没有关系handler也不感知,业务开发方式以及传输方式
+   
+   * consumer访问producer,在运行时的transport选择上,总规则为:
+      consumer的transport与producer的endpoint取交集,如果交集后,还有多个transport可选择,则轮流使用
+   
+      分解开来,存在以下场景:
+   
+   * 当一个微服务producer同时开放了highway以及RESTful的endpoint
+      * consumer进程中只部署了highway transport jar,则只会访问producer的highway endpoint
+      * consumer进程中只部署了RESTful transport jar,则只会访问producer的RESTful endpoint
+      * consumer进程中,同时部署了highway和RESTful transport jar,则会轮流访问producer的highway、RESTful endpoint
+   
+      如果,此时consumer想固定使用某个transport访问producer,可以在consumer进程的microservice.yaml中配置,指定transport的名称:
+
+      ```yaml
+      servicecomb:
+        references:
+          <service_name>:
+            transport: highway
+      ```
+   
+   * 当一个微服务producer只开放了highway的endpoint
+      * consumer进程只部署了highway transport jar,则正常使用highway访问
+      * consumer进程只部署了RESTful transport jar,则无法访问
+      * consumer进程同时部署了highway和RESTful transport jar,则正常使用highway访问
+   
+   * 当一个微服务producer只开放了RESTful的endpoint
+      * consumer进程只部署了highway transport jar,则无法访问
+      * consumer进程只部署了RESTful transport jar,则正常使用RESTful访问
+      * consumer进程同时部署了highway和RESTful transport jar,则正常使用RESTful访问
+
+* **Q: swagger body参数类型定义错误,导致服务中心注册的内容没有类型信息**
+
+   **现象描述:**
+   
+   定义如下接口,将参数放到body传递
+   
+   ```yaml
+   /testInherate:
+       post:
+         operationId: "testInherate"
+         parameters:
+         - in: "body"
+           name: "xxxxx"
+           required: false
+           type: string
+         responses:
+           200:
+             description: "response of 200"
+             schema:
+               $ref: "#/definitions/ReponseImpl"
+   ```
+   
+   采用上面方式定义接口。在服务注册以后,从服务中心查询下来的接口type: string 丢失,变成了:
+   
+   ```yaml
+   /testInherate:
+       post:
+         operationId: "testInherate"
+         parameters:
+         - in: "body"
+           name: "xxxxx"
+           required: false
+         responses:
+           200:
+             description: "response of 200"
+             schema:
+               $ref: "#/definitions/ReponseImpl"
+   ```
+   
+   如果客户端没有放置swagger,还会报告如下异常:
+   
+   ```text
+      Caused by: java.lang.ClassFormatError: Method "testInherate" in class ? has illegal signature "
+   ```
+   
+   A:定义body参数的类型的时候,需要使用schema,不能直接使用type。
+   
+   ```yaml
+   /testInherate:
+       post:
+         operationId: "testInherate"
+         parameters:
+         - in: "body"
+           name: "request"
+           required: false
+           schema:
+             type: string
+         responses:
+           200:
+             description: "response of 200"
+             schema:
+               $ref: "#/definitions/ReponseImpl"
+   ```
+
+* **Q: ServiceComb微服务框架服务调用是否使用长连接?**
+
+   A: http使用的是长连接(有超时时间),highway方式使用的是长连接(一直保持)。
+   
+* **Q: 服务断连服务中心注册信息是否自动删除**
+
+   A: 服务中心心跳检测到服务实例不可用,只会移除服务实例信息,服务的静态数据不会移除。
+
+* **Q: 如果使用tomcat方式集成ServiceComb微服务框架,如何实现服务注册**
+
+   A: 如果使用cse sdk servlet方式(使用transport-rest-servlet依赖)制作为war包部署到tomcat,需要保证,服务描述文件(microservice.yaml)中rest端口配置和外置容器一致才能实现该服务的正确注册。否则无法感知tomcat开放端口。
+
+* **Q: 如果使用tomcat方式集成CSE微服务框架,服务注册的时候如何将war包部署的上下文注册到服务中心**
+
+   A: 发布服务接口的时候需要将war包部署的上下文(context)放在baseurl最前面,这样才能保证注册到服务中心的路径是完整的路径(包含了上下文)。实例:
+
+   ```java
+   @path(/{context}/xxx)
+   class ServiceA
+   ```
+   
+* **Q: ServiceComb微服务框架如何实现数据多个微服务间透传**
+
+   A:
+   透传数据塞入:
+   
+   ```java
+   CseHttpEntity<xxxx.class> httpEntity = new CseHttpEntity<>(xxx);
+   //透传内容
+   httpEntity.addContext("contextKey","contextValue");
+   ResponseEntity<String> responseEntity = RestTemplateBuilder.create().exchange("cse://springmvc/springmvchello/sayhello",HttpMethod.POST,httpEntity,String.class);
+   ```
+   
+   透传数据获取:
+   
+   ```java
+   @Override
+   @RequestMapping(path="/sayhello",method = RequestMethod.POST)
+   public String sayHello(@RequestBody Person person,InvocationContext context){
+     //透传数据获取
+     context.getContext();
+     return "Hello person " + person.getName();
+   }
+   ```
+
+* **Q: ServiceComb微服务框架服务如何自定义返回状态码?**
+
+   A:
+   ```java
+   @Override
+   @RequestMapping(path = "/sayhello",method = RequestMethod.POST)
+   public String sayHello(@RequestBody Person person){
+     InvocationContext context = ContextUtils.getInvocationContext();
+     //自定义状态码
+     context.setStatus(Status.CREATED);
+     return "Hello person "+person.getName();
+   }
+   ```
+   
+* **Q: ServiceComb body Model部分暴露**
+
+   A: 一个接口对应的body对象中,可能有一些属性是内部的,不想开放出去,生成schema的时候不要带出去,使用:
+   
+   ```java
+   @ApiModelProperty(hidden = true)
+   ```
+   
+* **Q: ServiceComb框架获取远端consumer的地址**
+
+   A: 如果使用http rest方式(使用transport-rest-vertx依赖)可以用下面这种方式获取:
+
+   ```java
+   AbstractProducerContextArgMapper httpRequestCreator = (AbstractProducerContextArgMapper)invocation.getHandlerContext().get(RestConst.HTTP_REQUEST_CREATOR);
+   if(httpRequestCreator != null){
+     HttpServletRequest req = (HttpServletRequest)httpRequestCreator.createContextArg(invocation);
+     System.out.println(req.getRemoteHost());
+   }
+   ```
+   
+   实际场景是拿最外层的地址,所以应该是LB传入到edgeservice,edgeService再放到context外下传递。
+   
+* **Q: ServiceComb不支持泛型**
+
+   A: 明确不支持,需要修改接口,接口修改后需要修改版本号,以免consumer还是使用旧的版本。
+
+* **Q: ServiceComb对handler描述**
+
+   A: consumer默认的handler是simpleLB,没有配置的时候handler链会使用这个,如果配置了handler,里面一定要包含lb的handler,否则调用报错,需要在文档里面进行说明。
+
+* **Q: ServiceComb日志替换**
+
+   A: CSE java-chassis日志推荐方式是在启动的时候使用Log4jUtils.init\(\),直接使用推荐的Log4j来做日志管理,但是有些场景不想用log4j,比如想使用log4j2或者logback,下面以log4j2为例简单介绍下步骤:
+
+   1. 在代码里面不要使用Log4jUtils.init\(\);
+   2. 去掉log4j的配置文件(不删掉也没关系,因为不会使用);
+   3. exclude掉CSE框架引入的log4j,例如:
+      ```xml
+      <dependency>
+          <groupId>io.servicecomb</groupId>
+          <artifactId>provider-springmvc</artifactId>
+          <exclusions>
+              <exclusion>
+                  <groupId>log4j</groupId>
+                  <artifactId>log4j</artifactId>
+              </exclusion>
+          </exclusions>
+      </dependency>
+      ```
+   4. 引入log4j2的依赖
+   
+      ```xml
+      <dependency>    
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-slf4j-impl</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-api</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-core</artifactId>
+      </dependency>
+      ```
+   
+      如果没有版本依赖管理,还需要填写上版本号。
+   
+   5. 加入log4j2的配置文件log4j2.xml,关于这个请查看官方说明,例如:
+   
+      ```xml
+       <?xml version="1.0" encoding="UTF-8"?>
+       <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+       <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
+       <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
+       <configuration status="WARN" monitorInterval="30">
+           <!--先定义所有的appender-->
+           <appenders>
+           <!--这个输出控制台的配置-->
+               <console name="Console" target="SYSTEM_OUT">
+               <!--输出日志的格式-->
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+               </console>
+               <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
+               <File name="log" fileName="log/test.log" append="false">
+                  <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
+               </File>
+               <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+               <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
+                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
+                   <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+                   <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+                   <Policies>
+                       <TimeBasedTriggeringPolicy/>
+                       <SizeBasedTriggeringPolicy size="100 MB"/>
+                   </Policies>
+               </RollingFile>
+               <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
+                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
+                   <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+                   <Policies>
+                       <TimeBasedTriggeringPolicy/>
+                       <SizeBasedTriggeringPolicy size="100 MB"/>
+                   </Policies>
+                   <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
+                   <DefaultRolloverStrategy max="20"/>
+               </RollingFile>
+               <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
+                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
+                   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+                   <Policies>
+                       <TimeBasedTriggeringPolicy/>
+                       <SizeBasedTriggeringPolicy size="100 MB"/>
+                   </Policies>
+               </RollingFile>
+           </appenders>
+           <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
+           <loggers>
+               <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
+               <logger name="org.springframework" level="INFO"></logger>
+               <logger name="org.mybatis" level="INFO"></logger>
+               <root level="all">
+                   <appender-ref ref="Console"/>
+                   <appender-ref ref="RollingFileInfo"/>
+                   <appender-ref ref="RollingFileWarn"/>
+                   <appender-ref ref="RollingFileError"/>
+               </root>
+           </loggers>
+       </configuration>
+      ```
+   
+   6. 启动服务进行验证
+
+* **Q: netty版本问题**
+
+   A: netty3和netty4是完全不同的三方件,因为坐标跟package都不相同,所以可以共存,但是要注意小版本问题,小版本必须使用CSE的版本。
+
+* **Q: 服务超时设置**
+
+   A: 在微服务描述文件(microservice.yaml)中添加如下配置:
+
+   ```yaml
+   cse:
+     request:
+       timeout: 30000
+   ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/local-develop-test.md
----------------------------------------------------------------------
diff --git a/_users/cn/local-develop-test.md b/_users/cn/local-develop-test.md
index c0a7b13..81ef893 100644
--- a/_users/cn/local-develop-test.md
+++ b/_users/cn/local-develop-test.md
@@ -51,7 +51,7 @@ redirect_from:
            rest://127.0.0.1:8080
    ```
 
-   mock机制需要自己准备契约,并且当前只支持在本地进行服务消费端\(consumer\)侧的调试,不支持服务提供者\(provider\)
+   注意:mock机制需要自己准备契约,并且当前只支持在本地进行服务消费端\(consumer\)侧的调试,不支持服务提供者\(provider\)
 
 * **步骤 2**在服务消费者Main函数首末添加如下代码:
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/nginx.md
----------------------------------------------------------------------
diff --git a/_users/cn/nginx.md b/_users/cn/nginx.md
index 2c45889..2246d62 100644
--- a/_users/cn/nginx.md
+++ b/_users/cn/nginx.md
@@ -14,25 +14,25 @@ redirect_from:
 
 ### **confd**
 
-  confd是一个轻量级的配置管理工具,源码地址:[https://github.com/kelseyhightower/confd](https://github.com/kelseyhightower/confd),它可以将配置信息存储在etcd、consul、dynamodb、redis以及zookeeper等。confd定期会从这些存储节点pull最新的配置,然后重新加载服务,完成配置文件的更新。
+confd是一个轻量级的配置管理工具,源码地址:[https://github.com/kelseyhightower/confd](https://github.com/kelseyhightower/confd),它可以将配置信息存储在etcd、consul、dynamodb、redis以及zookeeper等。confd定期会从这些存储节点pull最新的配置,然后重新加载服务,完成配置文件的更新。
 
 ### **Nginx**
 
-  Nginx \(engine x\)是一个高性能的HTTP和反向代理服务器,具有负载均衡的功能。详情请参考[http://www.nginx.cn/doc/](http://www.nginx.cn/doc/)。本小节介绍的服务主要使用到的是Nginx的http代理功能。
+Nginx \(engine x\)是一个高性能的HTTP和反向代理服务器,具有负载均衡的功能。详情请参考[http://www.nginx.cn/doc/](http://www.nginx.cn/doc/)。本小节介绍的服务主要使用到的是Nginx的http代理功能。
 
 ## 场景描述
 
-  本小节介绍的技术是使用nginx+confd做边缘服务,同时可以对接ServiceComb微服务框架中的服务中心,从服务中心中拉去服务信息通过confd动态更新nginx的配置。
+本小节介绍的技术是使用nginx+confd做边缘服务,同时可以对接ServiceComb微服务框架中的服务中心,从服务中心中拉去服务信息通过confd动态更新nginx的配置。
 
-  使用nginx+confd动态反向代理的实现步骤可参考文章[http://www.cnblogs.com/Anker/p/6112022.html](http://www.cnblogs.com/Anker/p/6112022.html),本节主要介绍confd如何对接ServiceComb框架的服务中心。
+使用nginx+confd动态反向代理的实现步骤可参考文章[http://www.cnblogs.com/Anker/p/6112022.html](http://www.cnblogs.com/Anker/p/6112022.html),本节主要介绍confd如何对接ServiceComb框架的服务中心。
 
 ## 对接服务中心
 
-  本节介绍的技术核心在于如何使得confd获取到服务中心的服务信息,服务中心开放了以下接口供外部调用:
+本节介绍的技术核心在于如何使得confd获取到服务中心的服务信息,服务中心开放了以下接口供外部调用:
 
 ### **方法一:http调用**
 
-  服务中心开放http接口均需要添加租户头部信息:“X-Tenant-Name:tenantName”,tenameName为租户名,默认为default,例如"X-Tenant-Name:default"。
+服务中心开放http接口均需要添加租户头部信息:“X-Tenant-Name:tenantName”,tenameName为租户名,默认为default,例如"X-Tenant-Name:default"。
 
 * 检查服务中心健康状态
 
@@ -74,20 +74,34 @@ redirect_from:
   ```
    需要在header中添加"X-ConsumerId:{serviceId}"。
 
-  在实际开发中请访问实际的service-center访问地址,并将上述url中{}的变量替换成具体值,http返回的数据均为json格式
+注意:在实际开发中请访问实际的service-center访问地址,并将上述url中{}的变量替换成具体值,http返回的数据均为json格式
 
 ### **方法二:使用servicecomb开源代码接口**
 
-  在开发微服务应用,只需要调用servicecomb框架代码中的工具类RegistryUtil.java中提供的接口,即可获取服务中心的信息,接口描述如下:
+在开发微服务应用,只需要调用servicecomb框架代码中的工具类RegistryUtil.java中提供的接口,即可获取服务中心的信息,接口描述如下:
 
-* 获取所有微服务信息  List&lt;Microservice&gt; getAllMicroservices\(\);
-
-* 获取微服务唯一标识  String getMicroserviceId\(String appId, String microserviceName, String versionRule\);
-
-* 根据微服务唯一标识查询微服务静态信息  Microservice getMicroservice\(String microserviceId\);
-
-* 根据多个微服务唯一标识查询所有微服务实例信息  List&lt;MicroserviceInstance&gt; getMicroserviceInstance\(String consumerId, String providerId\);
-
-* 按照app+interface+version查询实例endpoints信息  List&lt;MicroserviceInstance&gt; findServiceInstance\(String consumerId, String appId, String serviceName,String versionRule\);
-
-  通过上述http接口可获取到服务中心的微服务和其实例的信息,从而通过confd动态更新nginx配置。
+* 获取所有微服务信息
+   ```java
+   List<Microservice> getAllMicroservices();
+   ```
+
+* 获取微服务唯一标识
+   ```java
+   String getMicroserviceId(String appId, String microserviceName, String versionRule);
+   ```
+
+* 根据微服务唯一标识查询微服务静态信息 
+   ```java
+   Microservice getMicroservice(String microserviceId);
+   ```
+
+* 根据多个微服务唯一标识查询所有微服务实例信息
+   ```java
+   List<MicroserviceInstance> getMicroserviceInstance(String consumerId, String providerId);
+   ```
+* 按照app+interface+version查询实例endpoints信息  
+   ```java
+   List<MicroserviceInstance> findServiceInstance(String consumerId, String appId, String serviceName,String versionRule);
+   ```
+
+通过上述http接口可获取到服务中心的微服务和其实例的信息,从而通过confd动态更新nginx配置。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/service-configurations.md
----------------------------------------------------------------------
diff --git a/_users/cn/service-configurations.md b/_users/cn/service-configurations.md
index f1b38e9..b8a7d44 100644
--- a/_users/cn/service-configurations.md
+++ b/_users/cn/service-configurations.md
@@ -17,7 +17,7 @@ redirect_from:
 
 ### 配置说明
 
-  负载均衡策略在mocroservice.yaml文件中配置,配置项为cse.loadbalance.\[MicroServiceName\].\[property name\],其中若省略MicroServiceName,则为全局配置;若指定MicroServiceName,则为针对特定微服务的配置。
+  负载均衡策略在mocroservice.yaml文件中配置,配置项为`cse.loadbalance.[MicroServiceName].[property name]`,其中若省略MicroServiceName,则为全局配置;若指定MicroServiceName,则为针对特定微服务的配置。
 
   **表1 配置项说明**
 
@@ -66,20 +66,17 @@ cse:
 
   用户可以在ServiceComb提供的路由策略框架下根据业务需要,通过编程的方式来开发路由策略。实施步骤如下:
 
-* 实现接口com.netflix.loadbalancer.IRule中定义的接口方法。
-
-   路由选择逻辑在public Server choose\(Object key\)方法中实现。LoadBalancerStats是一个封装了负载均衡器当前运行状态的一个结构。通过获取stats中各个实例的运行指标,在choose方法中,判定将当前请求路由到哪个实例上进行处理。处理风格可以参照io.servicecomb.loadbalance.SessionStickinessRule。
+* 实现接口`com.netflix.loadbalancer.IRule`中定义的接口方法。
+路由选择逻辑在public Server choose\(Object key\)方法中实现。LoadBalancerStats是一个封装了负载均衡器当前运行状态的一个结构。通过获取stats中各个实例的运行指标,在choose方法中,判定将当前请求路由到哪个实例上进行处理。处理风格可以参照`io.servicecomb.loadbalance.SessionStickinessRule`。
 
 * 编译开发的策略,保证生成的class在classpath下。
 
-* 通过SDK配置该路由策略,假如是AbcRule。则配置如下:
-
-   `cse.loadbalance.NFLoadBalancerRuleClassName=com.huawei.cse.ribbon.rule.AbcRule`
+* 通过SDK配置该路由策略,假如是`AbcRule`。则配置如下:       `cse.loadbalance.NFLoadBalancerRuleClassName=io.servicecomb.ribbon.rule.AbcRule`
    
 ## 限流策略
 ### 场景描述
 
-  用户在provider端使用限流策略,可以限制指定微服务向其发送请求的频率,达到限制每秒钟最大请求数量的效果。
+用户在provider端使用限流策略,可以限制指定微服务向其发送请求的频率,达到限制每秒钟最大请求数量的效果。
 
 ### 注意事项
 
@@ -105,17 +102,17 @@ cse:
 | :--- | :--- | :--- | :--- | :--- | :--- |
 | cse.flowcontrol.Provider.qps.enabled | true | true/false | 否 | 是否启用Provider流控 | - |
 | cse.flowcontrol.Provider.qps.limit.\[ServiceName\] | 2147483647(max int) | \(0,2147483647\],整形 | 否 | 每秒钟允许的请求数 | 仅支持microservice一个级别的配置 |
+| cse.flowcontrol.Provider.qps.global.limit | 2147483647(max int) | (0,2147483647\],整形 | 否 | provider接受请求流量的全局配置 | 没有具体到微服务的配置时,此配置生效 |
 
 ## 降级策略
 ### 概念阐述
 
 降级策略是当服务请求异常时,微服务所采用的异常处理策略。降级策略有三个相关的技术概念:“隔离”、“熔断”、“容错”:
 
-> * “隔离”是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。
->
-> * “熔断”是一种异常反应机制,“熔断”依赖于“隔离”。熔断通常基于错误率来实现。一般的设置参数包括统计请求的个数、错误率等。
->
-> * “容错”是一种异常处理机制,“容错”依赖于“熔断”。熔断以后,会调用“容错”的方法。一般的设置参数包括调用容错方法的次数等。
+降级策略有三个相关的技术概念:“隔离”、“熔断”、“容错”:
+* “隔离”是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。
+* “熔断”是一种异常反应机制,“熔断”依赖于“隔离”。熔断通常基于错误率来实现。一般的设置参数包括统计请求的个数、错误率等。
+* “容错”是一种异常处理机制,“容错”依赖于“熔断”。熔断以后,会调用“容错”的方法。一般的设置参数包括调用容错方法的次数等。
 
 把这些概念联系起来:当"隔离"措施检测到N次请求中共有M次错误的时候,"熔断"不再发送后续请求,调用"容错"处理函数。这个技术上的定义,是和Netflix Hystrix一致的,通过这个定义,非常容易理解它提供的配置项,参考:[https://github.com/Netflix/Hystrix/wiki/Configuration](https://github.com/Netflix/Hystrix/wiki/Configuration)。当前ServiceComb提供两种容错方式,分别为返回null值和抛出异常。
 
@@ -168,4 +165,5 @@ cse:
     policy: throwexception
 ```
 
-  降级策略需要启用服务治理能力,对应的服务提供者的handler是bizkeeper-provider,服务消费者的handler是bizkeeper-consumer。
+> **说明:**
+> 降级策略需要启用服务治理能力,对应的服务提供者的handler是`bizkeeper-provider`,服务消费者的handler是`bizkeeper-consumer`。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/service-definition.md
----------------------------------------------------------------------
diff --git a/_users/cn/service-definition.md b/_users/cn/service-definition.md
index e789216..418f53e 100644
--- a/_users/cn/service-definition.md
+++ b/_users/cn/service-definition.md
@@ -32,9 +32,9 @@ redirect_from:
 | instance\_description.properties | - | - | 否 | 服务实例元数据配置(通过microservice.yaml文件进行配置) |  |
 | instance\_description.propertyExtendedClass | - | - | 否 | 微服务元数据配置(通过实现接口PropertyExtended进行配置) | 同service\_description.propertyExtendedClass |
 
-服务的元数据会随服务一同注册到服务中心,如需修改,则要连同服务version一起变更。若想保持服务version不变,则需要通过服务管理中心统一变更元数据。
-
-默认情况下,微服务只支持同一个app内部的服务调用。可在微服务的properties中配置allowCrossApp=true属性,开启可被跨app访问权限。
+> 说明:
+- 服务的元数据会随服务一同注册到服务中心,如需修改,则要连同服务version一起变更。若想保持服务version不变,则需要通过服务管理中心统一变更元数据。
+- 默认情况下,微服务只支持同一个app内部的服务调用。可在微服务的properties中配置allowCrossApp=true属性,开启可被跨app访问权限。
 
 ## 示例代码
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/service-heartbeat.md
----------------------------------------------------------------------
diff --git a/_users/cn/service-heartbeat.md b/_users/cn/service-heartbeat.md
index f5bbabc..dc808ae 100644
--- a/_users/cn/service-heartbeat.md
+++ b/_users/cn/service-heartbeat.md
@@ -16,7 +16,7 @@ redirect_from:
 
 ## 涉及API
 
-* io.servicecomb.serviceregistry.client.ServiceRegistryClient:服务中心客户端
+* `io.servicecomb.serviceregistry.client.ServiceRegistryClient`:服务中心客户端
 
 ## 配置说明
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/service-interface-constraints.md
----------------------------------------------------------------------
diff --git a/_users/cn/service-interface-constraints.md b/_users/cn/service-interface-constraints.md
index 75bc16a..816ffd7 100644
--- a/_users/cn/service-interface-constraints.md
+++ b/_users/cn/service-interface-constraints.md
@@ -44,17 +44,17 @@ public Person query(@RequestBody String id);
    ```java
    public class PersonHolder<T> {...}
    ```
-* 上述类型的集合类型或者没指定类型的集合,比如:List\<IPerson\>, Map\<String, PersonHolder\<?\>\>, List, Map等。 List\<String\>, List\<Person\>这些具体类型是支持的。
+* 上述类型的集合类型或者没指定类型的集合,比如:`List<IPerson>, Map<String, PersonHolder<?>>, List, Map`等。 `List<String>, List<Person>`这些具体类型是支持的。
 
 * 包含上述类型作为属性的类型
    ```java
    public class GroupOfPerson {IPerson master ...}
    ```
 
-开发者不用担心记不住这些约束,程序启动的时候会检查,并给于错误提示。
+开发者不用担心记不住这些约束,程序会在启动的时候检查不支持的类型,并给与错误提示。
 
 ## 协议上的差异 
-尽管Java Chassis实现了不同协议之间开发方式的透明,受限于底层协议的限制,不同的协议还是有少量差异。
+尽管ServiceComb-Java-Chassis实现了不同协议之间开发方式的透明,受限于底层协议的限制,不同的协议存在少量差异。
 
 * map,key只支持string
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/setup-environment.md
----------------------------------------------------------------------
diff --git a/_users/cn/setup-environment.md b/_users/cn/setup-environment.md
index e5e7272..27930f5 100644
--- a/_users/cn/setup-environment.md
+++ b/_users/cn/setup-environment.md
@@ -13,7 +13,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 
 * 安装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){:target="_blank"}。
+* 安装JDK 1.8,详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}。
 
 * 安装Maven 3.x,详情可参考[Maven安装教程](https://maven.apache.org/install.html){:target="_blank"}。
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35dcfffa/_users/cn/use-service-contract.md
----------------------------------------------------------------------
diff --git a/_users/cn/use-service-contract.md b/_users/cn/use-service-contract.md
index 8e68146..346aa12 100644
--- a/_users/cn/use-service-contract.md
+++ b/_users/cn/use-service-contract.md
@@ -30,6 +30,15 @@ cse:
       version-rule: 0.0.1
 ```
 
+> version-rule是版本匹配规则,有四种格式:
+>
+> * 精确版本匹配:例如`version-rule: 0.0.1`,表示只匹配版本号为0.0.1的服务提供者
+> * 后续版本匹配:例如`version-rule: 1.0.0+`,表示匹配版本号大于或等于1.0.0的服务提供者
+> * 最新版本:`version-rule: latest`,表示匹配最新版本的服务提供者
+> * 版本范围:例如`1.0.0-2.0.2`,表示匹配版本号在1.0.0至2.0.2之间的服务提供者,包含1.0.0和2.0.2
+>
+> 此配置项默认为`latest`
+
 ### 手工配置服务契约
 
 服务消费者的开发者在线下拿到服务提供者的契约,配置到消费者工程的特定目录下。服务契约在项目中的存放目录与[服务契约](/cn/users/service-contract/)的配置说明部分相同。



[25/51] incubator-servicecomb-website git commit: updated statements for blog legacy system reform

Posted by jb...@apache.org.
updated statements for blog legacy system reform

Signed-off-by: Eric Lee <da...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/8b91b1a7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/8b91b1a7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/8b91b1a7

Branch: refs/heads/asf-site
Commit: 8b91b1a7827a4d4d9e38ad9b6d85418decbba02c
Parents: 0edcb90
Author: Eric Lee <da...@huawei.com>
Authored: Tue Nov 14 17:28:19 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Tue Nov 14 18:29:51 2017 +0800

----------------------------------------------------------------------
 .../2017-10-23-how-to-reform-a-legacy-system.md |  69 ++++++++++++-------
 .../2017-10-23-how-to-reform-a-legacy-system.md |  69 ++++++++++++-------
 assets/images/case_mengtuo_new_mode.png         | Bin 71137 -> 22686 bytes
 .../case_mengtuo_reform_before_and_after.png    | Bin 169124 -> 39806 bytes
 assets/images/case_mengtuo_traditional_mode.png | Bin 63155 -> 24621 bytes
 5 files changed, 86 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8b91b1a7/_posts/2017-10-23-how-to-reform-a-legacy-system.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-23-how-to-reform-a-legacy-system.md b/_posts/2017-10-23-how-to-reform-a-legacy-system.md
index 54d1c0f..1fe3518 100644
--- a/_posts/2017-10-23-how-to-reform-a-legacy-system.md
+++ b/_posts/2017-10-23-how-to-reform-a-legacy-system.md
@@ -11,16 +11,17 @@ redirect_from:
   - /theme-setup/
 ---
 
-随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务(Microservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?在该分享中,王磊将通过实际的案例,跟大家探讨使用微服务改造遗留系统的实践之路。
-1. 什么是微服务
-2. 微服务的诞生背景
-3. 遗留系统的微服务改造策略
-4. 微服务改造之路
+随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务(Microservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?在该分享中,王磊将通过实际的案例,跟大家探讨使用微服务改造遗留系统的实践之路。
+
+* 什么是微服务
+* 微服务的诞生背景
+* 遗留系统的微服务改造策略
+* 微服务改造之路
 
 ## 背景
-首先,请大家思考什么是系统架构设计?
+什么是系统架构设计?
 
-一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效的构建。大家也一直在探索,寻找更优秀的架构设计方式来构建系统。
+一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效的构建。架构师们也一直在持续探索,寻找更优秀的架构设计方式来构建系统。
 
 那什么是系统的架构设计?对于这个问题,我相信每个朋友都会有不同的定义,实际上,也并没有一个标准的答案来解释什么是架构设计。
 
@@ -29,7 +30,7 @@ redirect_from:
 随着RESTful、云计算、DevOps、持续交付等概念的深入人心,**微服务架构逐渐成为系统架构的一个代名词**。
 
 ## 什么是微服务架构
-2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文章、会议、社区上。这里,我就和大家快速回顾一下,老马(Martin Folwer)对微服务的定义。
+2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文章、会议、社区上。这里,我先和大家快速回顾一下,Martin Fowler对微服务的抽象。
 
 ![](/assets/images/microservice_definition_by_martin_folwer.jpeg)
 
@@ -42,11 +43,11 @@ redirect_from:
 ## 微服务的诞生背景
 2015年,微服务突然火了,为什么?
 
-其实微服务架构并不是什么技术创新,而是IT发展到现阶段对技术架构的要求。
+其实微服务架构并不是技术创新,而是IT发展到现阶段对技术架构的一种阐释。
 
-这个要求包括**快速和业务对齐(alignbusiness)、快速理解和抽象业务(DDD)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)**。
+它要求包括**快速和业务对齐(aligning business)、理解和抽象业务(基于领域建模)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)**。
 
-所以我认为微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,无论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。
+所以说,微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,无论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。
 
 当然,任何新事物的诞生,总会有一个推动因素。微服务的诞生也并非偶然。它是互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下所诞生的产物。
 
@@ -184,14 +185,29 @@ redirect_from:
 
 ### 系统概览
 
-系统为典型的三层单块架构,所有业务共用一个数据库。
+系统为典型的三层单块架构,使用MySQL数据库存储数据。运行在服务器上的应用处理性能较低,为了应对短暂的访问高峰,额外购置了较多的服务器资源,访问高峰过后,服务器资源闲置造成较大浪费,且需要较多人员维护。
 
 ### 相关数据
 
-* 代码约3万行,测试覆盖率为80%,集成测试时间为一个月
-* 营销预案需提前1个月准备资源
-* 业务耦合紧,新业务上线>半年
-* 上百种业务,2-3种开发语言,运维团队>20人
+* 代码约**100万**行,测试覆盖率为**10%**,集成测试时间为**一个月**
+
+   代码臃肿,无效遗留代码较多,且业务间紧耦合,测试覆盖率较低,测试出问题了难以定位,导致测试耗时较长。
+
+* 营销预案需**提前1个月**准备资源
+
+   为应对访问高峰,每次都需要预购大量的服务资源,重新部署环境,并运行相关测试。
+
+* 业务耦合紧,新业务上线**>半年**
+
+   每次测试都要多个业务团队联合测试,问题定位较耗时,测试效率低。
+
+* 上百种业务,2-3种开发语言
+
+   业务复杂,且语言不一,系统联调时耗时较多且需相互配合,时间周期较长。
+
+* 运维团队**>20人**
+
+   臃肿的团队导致问题定位需多方配合,沟通成本高。
 
 **基于之前定义的改造策略,我们的改造过程大致如下所示:**
 
@@ -199,9 +215,11 @@ redirect_from:
 
    * 将原房地产CRM平台按业务类别拆分为多个微服务。
 
+      ![](/assets/images/case_mengtuo_reform_before_and_after.png)
+
 功能剥离:
 
-   * 按照DDD设计理念,从单体CRM系统中逐步拆分出业务模块(服务网关、客户服务、房源服务、机会服务、积分服务)。
+   * 从单体CRM系统中逐步拆分出业务模块(服务网关、客户服务、房源服务、机会服务、积分服务)。
 
 数据解耦
 
@@ -211,28 +229,27 @@ redirect_from:
 
    * 在负载较低时,将数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务。
 
-改造过程中,ServiceComb的微服务示例项目[Company Workshop](https://github.com/ServiceComb/ServiceComb-Company-WorkShop)提供了架构和实际代码参考。复用Company Workshop中的网关,只需更改路由配置, 一天内完成了网关服务。参考Company Workshop的架构,我们用网关接入手机端APP请求,路由给后端服务。**通过控制请求路由,逐步架空对原单体应用的请求, 平滑过渡系统到微服务架构。**
+改造过程中,基于ServiceComb,**通过控制请求路由,逐步架空对原单体应用的请求, 平滑过渡系统到微服务架构。**
 
-微服务的改造也很容易,参考[微服务快速开发博文](http://servicecomb.io/docs/linuxcon-workshop-demo/),**基于ServiceComb,简单4步, 1天改造1个微服务:**
+**单个服务的构建并没有那么复杂,基于ServiceComb,通过如下的简单4步,即可快速完成改造:**
 
 1. 引入[ServiceComb Java Chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis)框架依赖
 2. 定义服务接口端点
 3. 添加服务配置文件
 4. 注释服务启动入口
 
-![](/assets/images/case_mengtuo_reform_before_and_after.png)
 
 另外,通过Company Workshop中提供的Docker插件配置,10分钟内完成了服务容器化,自动生成镜像。
 
-作为[华为ServiceStage](https://www.huaweicloud.com/product/servicestage.html)的开源微服务解决方案,利用ServiceComb开发的微服务应用可无缝接入ServiceStage,同时享受到微服务治理、容器虚机混编、应用拓扑等能力。
+同时,利用ServiceComb开发的微服务应用,可同时无缝接入[ServiceStage](https://www.huaweicloud.com/product/servicestage.html),享受到微服务治理、容器虚机混编、应用拓扑等能力。
 
-盟拓容器虚机混编应用云化方案是盟拓软件基于华为ServiceStage的以云应用为中心的混编管理方案。通过华为的核心技术容器改造、混编方案、 编排调度算法等,帮助系统做云化改造,云化后的产品和解决方案能够随着参与人数增加而秒级伸缩,支撑业务峰值和资源利用率。
+为应对短暂的业务高峰,经常需要预购大量的资源来提前部署和验证环境,花费大量的人力物力,且资源利用率极低。因此,进行云化改造后的产品和解决方案需要具备随着参与人数增加而秒级伸缩,支撑业务峰值和资源利用率的能力。盟拓软件基于华为ServiceStage的核心技术容器改造、混编方案、编排调度算法等进行容器虚机混编应用云化改造,实现了应用的秒级部署和弹性伸缩能力,极大地提高了资源的利用率。
 
 **改造后效果:**
 
-* 运维人力减少80%
-* 资源利用率提升50%,降低运营成本
-* 每秒万级调用链分析能力
+* 运维人力**减少80%**
+* 资源利用率**提升50%**,大幅降低运营成本
+* **每秒万级**调用链分析能力
 * 传统系统和应用平滑改造上云
 * 互联网营销模式,天粒度业务快速创新
 
@@ -246,7 +263,7 @@ redirect_from:
 ![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
 
 ### 基础设施自动化
-原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用AWS作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究AWS以及相关的DevOps配套工具。
+原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用华为ServiceStage作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究华为ServiceStage以及相关的DevOps配套工具。
 
 目前,国内外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8b91b1a7/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md b/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
index 2df95d8..3a33c4a 100644
--- a/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
+++ b/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
@@ -11,16 +11,17 @@ redirect_from:
   - /theme-setup/
 ---
 
-随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务(Microservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?在该分享中,王磊将通过实际的案例,跟大家探讨使用微服务改造遗留系统的实践之路。
-1. 什么是微服务
-2. 微服务的诞生背景
-3. 遗留系统的微服务改造策略
-4. 微服务改造之路
+随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务(Microservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?在该分享中,王磊将通过实际的案例,跟大家探讨使用微服务改造遗留系统的实践之路。
+
+* 什么是微服务
+* 微服务的诞生背景
+* 遗留系统的微服务改造策略
+* 微服务改造之路
 
 ## 背景
-首先,请大家思考什么是系统架构设计?
+什么是系统架构设计?
 
-一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效的构建。大家也一直在探索,寻找更优秀的架构设计方式来构建系统。
+一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效的构建。架构师们也一直在持续探索,寻找更优秀的架构设计方式来构建系统。
 
 那什么是系统的架构设计?对于这个问题,我相信每个朋友都会有不同的定义,实际上,也并没有一个标准的答案来解释什么是架构设计。
 
@@ -29,7 +30,7 @@ redirect_from:
 随着RESTful、云计算、DevOps、持续交付等概念的深入人心,**微服务架构逐渐成为系统架构的一个代名词**。
 
 ## 什么是微服务架构
-2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文章、会议、社区上。这里,我就和大家快速回顾一下,老马(Martin Folwer)对微服务的定义。
+2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文章、会议、社区上。这里,我先和大家快速回顾一下,Martin Fowler对微服务的抽象。
 
 ![](/assets/images/microservice_definition_by_martin_folwer.jpeg)
 
@@ -42,11 +43,11 @@ redirect_from:
 ## 微服务的诞生背景
 2015年,微服务突然火了,为什么?
 
-其实微服务架构并不是什么技术创新,而是IT发展到现阶段对技术架构的要求。
+其实微服务架构并不是技术创新,而是IT发展到现阶段对技术架构的一种阐释。
 
-这个要求包括**快速和业务对齐(alignbusiness)、快速理解和抽象业务(DDD)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)**。
+它要求包括**快速和业务对齐(aligning business)、理解和抽象业务(基于领域建模)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)**。
 
-所以我认为微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,无论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。
+所以说,微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,无论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。
 
 当然,任何新事物的诞生,总会有一个推动因素。微服务的诞生也并非偶然。它是互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下所诞生的产物。
 
@@ -184,14 +185,29 @@ redirect_from:
 
 ### 系统概览
 
-系统为典型的三层单块架构,所有业务共用一个数据库。
+系统为典型的三层单块架构,使用MySQL数据库存储数据。运行在服务器上的应用处理性能较低,为了应对短暂的访问高峰,额外购置了较多的服务器资源,访问高峰过后,服务器资源闲置造成较大浪费,且需要较多人员维护。
 
 ### 相关数据
 
-* 代码约3万行,测试覆盖率为80%,集成测试时间为一个月
-* 营销预案需提前1个月准备资源
-* 业务耦合紧,新业务上线>半年
-* 上百种业务,2-3种开发语言,运维团队>20人
+* 代码约**100万**行,测试覆盖率为**10%**,集成测试时间为**一个月**
+
+   代码臃肿,无效遗留代码较多,且业务间紧耦合,测试覆盖率较低,测试出问题了难以定位,导致测试耗时较长。
+
+* 营销预案需**提前1个月**准备资源
+
+   为应对访问高峰,每次都需要预购大量的服务资源,重新部署环境,并运行相关测试。
+
+* 业务耦合紧,新业务上线**>半年**
+
+   每次测试都要多个业务团队联合测试,问题定位较耗时,测试效率低。
+
+* 上百种业务,2-3种开发语言
+
+   业务复杂,且语言不一,系统联调时耗时较多且需相互配合,时间周期较长。
+
+* 运维团队**>20人**
+
+   臃肿的团队导致问题定位需多方配合,沟通成本高。
 
 **基于之前定义的改造策略,我们的改造过程大致如下所示:**
 
@@ -199,9 +215,11 @@ redirect_from:
 
    * 将原房地产CRM平台按业务类别拆分为多个微服务。
 
+      ![](/assets/images/case_mengtuo_reform_before_and_after.png)
+
 功能剥离:
 
-   * 按照DDD设计理念,从单体CRM系统中逐步拆分出业务模块(服务网关、客户服务、房源服务、机会服务、积分服务)。
+   * 从单体CRM系统中逐步拆分出业务模块(服务网关、客户服务、房源服务、机会服务、积分服务)。
 
 数据解耦
 
@@ -211,28 +229,27 @@ redirect_from:
 
    * 在负载较低时,将数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务。
 
-改造过程中,ServiceComb的微服务示例项目[Company Workshop](https://github.com/ServiceComb/ServiceComb-Company-WorkShop)提供了架构和实际代码参考。复用Company Workshop中的网关,只需更改路由配置, 一天内完成了网关服务。参考Company Workshop的架构,我们用网关接入手机端APP请求,路由给后端服务。**通过控制请求路由,逐步架空对原单体应用的请求, 平滑过渡系统到微服务架构。**
+改造过程中,基于ServiceComb,**通过控制请求路由,逐步架空对原单体应用的请求, 平滑过渡系统到微服务架构。**
 
-微服务的改造也很容易,参考[微服务快速开发博文](http://servicecomb.io/docs/linuxcon-workshop-demo/),**基于ServiceComb,简单4步, 1天改造1个微服务:**
+**单个服务的构建并没有那么复杂,基于ServiceComb,通过如下的简单4步,即可快速完成改造:**
 
 1. 引入[ServiceComb Java Chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis)框架依赖
 2. 定义服务接口端点
 3. 添加服务配置文件
 4. 注释服务启动入口
 
-![](/assets/images/case_mengtuo_reform_before_and_after.png)
 
 另外,通过Company Workshop中提供的Docker插件配置,10分钟内完成了服务容器化,自动生成镜像。
 
-作为[华为ServiceStage](https://www.huaweicloud.com/product/servicestage.html)的开源微服务解决方案,利用ServiceComb开发的微服务应用可无缝接入ServiceStage,同时享受到微服务治理、容器虚机混编、应用拓扑等能力。
+同时,利用ServiceComb开发的微服务应用,可同时无缝接入[ServiceStage](https://www.huaweicloud.com/product/servicestage.html),享受到微服务治理、容器虚机混编、应用拓扑等能力。
 
-盟拓容器虚机混编应用云化方案是盟拓软件基于华为ServiceStage的以云应用为中心的混编管理方案。通过华为的核心技术容器改造、混编方案、 编排调度算法等,帮助系统做云化改造,云化后的产品和解决方案能够随着参与人数增加而秒级伸缩,支撑业务峰值和资源利用率。
+为应对短暂的业务高峰,经常需要预购大量的资源来提前部署和验证环境,花费大量的人力物力,且资源利用率极低。因此,进行云化改造后的产品和解决方案需要具备随着参与人数增加而秒级伸缩,支撑业务峰值和资源利用率的能力。盟拓软件基于华为ServiceStage的核心技术容器改造、混编方案、编排调度算法等进行容器虚机混编应用云化改造,实现了应用的秒级部署和弹性伸缩能力,极大地提高了资源的利用率。
 
 **改造后效果:**
 
-* 运维人力减少80%
-* 资源利用率提升50%,降低运营成本
-* 每秒万级调用链分析能力
+* 运维人力**减少80%**
+* 资源利用率**提升50%**,大幅降低运营成本
+* **每秒万级**调用链分析能力
 * 传统系统和应用平滑改造上云
 * 互联网营销模式,天粒度业务快速创新
 
@@ -246,7 +263,7 @@ redirect_from:
 ![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
 
 ### 基础设施自动化
-原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用AWS作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究AWS以及相关的DevOps配套工具。
+原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用华为ServiceStage作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究华为ServiceStage以及相关的DevOps配套工具。
 
 目前,国内外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8b91b1a7/assets/images/case_mengtuo_new_mode.png
----------------------------------------------------------------------
diff --git a/assets/images/case_mengtuo_new_mode.png b/assets/images/case_mengtuo_new_mode.png
index 4b9ddf0..2d43596 100644
Binary files a/assets/images/case_mengtuo_new_mode.png and b/assets/images/case_mengtuo_new_mode.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8b91b1a7/assets/images/case_mengtuo_reform_before_and_after.png
----------------------------------------------------------------------
diff --git a/assets/images/case_mengtuo_reform_before_and_after.png b/assets/images/case_mengtuo_reform_before_and_after.png
index 12dec8a..c0743ee 100644
Binary files a/assets/images/case_mengtuo_reform_before_and_after.png and b/assets/images/case_mengtuo_reform_before_and_after.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8b91b1a7/assets/images/case_mengtuo_traditional_mode.png
----------------------------------------------------------------------
diff --git a/assets/images/case_mengtuo_traditional_mode.png b/assets/images/case_mengtuo_traditional_mode.png
index 6daaad2..4f15ad8 100644
Binary files a/assets/images/case_mengtuo_traditional_mode.png and b/assets/images/case_mengtuo_traditional_mode.png differ


[44/51] incubator-servicecomb-website git commit: remove unnecessary mvn command option: -DskipITs

Posted by jb...@apache.org.
remove unnecessary mvn command option: -DskipITs


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/5a410c76
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/5a410c76
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/5a410c76

Branch: refs/heads/asf-site
Commit: 5a410c76971dd29a48929291ff7a449ccb200cf5
Parents: 57b55f1
Author: songkv5 <so...@163.com>
Authored: Wed Dec 6 11:12:56 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 14:20:39 2017 +0800

----------------------------------------------------------------------
 _docs/cn/quick-start.md | 2 +-
 _docs/quick-start.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/5a410c76/_docs/cn/quick-start.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start.md b/_docs/cn/quick-start.md
index 05db93e..2642b8c 100644
--- a/_docs/cn/quick-start.md
+++ b/_docs/cn/quick-start.md
@@ -21,7 +21,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
    ```bash
    git clone https://github.com/ServiceComb/ServiceComb-Java-Chassis.git
    cd ServiceComb-Java-Chassis
-   mvn clean install -DskipTests -DskipITs
+   mvn clean install -DskipTests
    ```
 
 ## 运行 Service Center

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/5a410c76/_docs/quick-start.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start.md b/_docs/quick-start.md
index 6591910..5aaa9db 100644
--- a/_docs/quick-start.md
+++ b/_docs/quick-start.md
@@ -21,7 +21,7 @@ last_modified_at: 2017-09-06T00:50:43-55:00
    ```bash
    git clone https://github.com/ServiceComb/ServiceComb-Java-Chassis.git
    cd ServiceComb-Java-Chassis
-   mvn clean install -DskipTests -DskipITs
+   mvn clean install -DskipTests
    ```
 
 ## Run Service Center


[46/51] incubator-servicecomb-website git commit: added 5th live streaming materials

Posted by jb...@apache.org.
added 5th live streaming materials

Signed-off-by: eric-lee-ltk <da...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/d7a37c47
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/d7a37c47
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/d7a37c47

Branch: refs/heads/asf-site
Commit: d7a37c473b4f4246e02d7af053baf7a7430b8fa4
Parents: a1de068
Author: eric-lee-ltk <da...@huawei.com>
Authored: Fri Dec 8 11:42:07 2017 +0800
Committer: Eric Lee <da...@huawei.com>
Committed: Fri Dec 8 11:42:59 2017 +0800

----------------------------------------------------------------------
 _pages/about-slides.md                            |   3 +++
 _pages/cn/about-slides.md                         |   3 +++
 .../20171207/Uncover_ServiceComb_Design.pdf       | Bin 0 -> 851729 bytes
 3 files changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/d7a37c47/_pages/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/about-slides.md b/_pages/about-slides.md
index 472fe04..4c52552 100644
--- a/_pages/about-slides.md
+++ b/_pages/about-slides.md
@@ -22,3 +22,6 @@ date: 2017-06-20T11:02:20+08:00
 
 ## [ServiceComb live streaming phase IV](http://www.itdks.com/liveevent/detail/6622), 20171124
  * [Live coding the quick start example of ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip)
+
+## [ServiceComb live streaming phase V](http://www.itdks.com/liveevent/detail/6623), 20171207
+ * [Uncover ServiceComb Design]({{ site.url }}{{ site.baseurl }}/assets/slides/20171207/Uncover_ServiceComb_Design.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/d7a37c47/_pages/cn/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/cn/about-slides.md b/_pages/cn/about-slides.md
index 17d9ba8..4409f7c 100644
--- a/_pages/cn/about-slides.md
+++ b/_pages/cn/about-slides.md
@@ -22,3 +22,6 @@ date: 2017-06-20T11:02:20+08:00
 
 ## [ServiceComb 直播第四期](http://www.itdks.com/liveevent/detail/6622), 20171124
  * [ServiceComb快速入门&&在线Coding]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip)
+
+## [ServiceComb 直播第五期](http://www.itdks.com/liveevent/detail/6623), 20171207
+ * [ServiceComb设计揭秘]({{ site.url }}{{ site.baseurl }}/assets/slides/20171207/Uncover_ServiceComb_Design.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/d7a37c47/assets/slides/20171207/Uncover_ServiceComb_Design.pdf
----------------------------------------------------------------------
diff --git a/assets/slides/20171207/Uncover_ServiceComb_Design.pdf b/assets/slides/20171207/Uncover_ServiceComb_Design.pdf
new file mode 100644
index 0000000..feebe95
Binary files /dev/null and b/assets/slides/20171207/Uncover_ServiceComb_Design.pdf differ


[42/51] incubator-servicecomb-website git commit: Add FAQ

Posted by jb...@apache.org.
Add FAQ

Signed-off-by: MabinGo <bi...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/bea4205e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/bea4205e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/bea4205e

Branch: refs/heads/asf-site
Commit: bea4205e30184928809d57f30fa5dc1fc2604532
Parents: 04bd51d
Author: MabinGo <bi...@huawei.com>
Authored: Mon Dec 4 18:00:51 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 14:18:29 2017 +0800

----------------------------------------------------------------------
 _faqs/cn/faq.md | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/bea4205e/_faqs/cn/faq.md
----------------------------------------------------------------------
diff --git a/_faqs/cn/faq.md b/_faqs/cn/faq.md
old mode 100644
new mode 100755
index b33139c..38b28e8
--- a/_faqs/cn/faq.md
+++ b/_faqs/cn/faq.md
@@ -486,3 +486,39 @@ redirect_from:
 * **Q: 如果服务端是链式调用,即类似a->b->c,那设置了qps 流控会不会造成水管粗细不均的事情?**
 
    A: 一般采取的模式是先测量再设置。qps设置最终是结合整体业务需求来进行调控的,而不是就单个节点来进行设置。
+
+* **Q: 通过cse://serviceName/appPath调用服务失败,报错:java.lang.Error:not support def type:class io.swagger.models.properties xxx**
+
+   A: 检查consumer和provider依赖的java-chassis版本是否一致,如果不一致请修改并使用较新版本。
+
+* **Q: 发送rest请求时,出现如下报错:Bad Request,description:http:request body too large**
+
+   A: 检查Service Center是否老版本,如果是,则升级到最新版本。
+
+* **Q: 如何在Json序列化忽略Bean中的指定属性**
+
+   A: 使用@JsonIgnore注解标记需要忽略的属性,注意修改完成后需重启Service Center。例如:
+
+  ```java
+  public class OutputForTest{
+  @JsonIgnore
+  private String outputId = null;
+  private String inputId = null;
+  ...
+  }
+  ```
+
+* **Q: 如何在用户自定义的handler中获取header中某个字段的值**
+
+   A: 在用户自定义的handler使用@ApiImplicitParams注解声明,使用invocation.getArgs()获取header的值。例如:
+
+  ```java
+  public class MyHandler implements Handler {
+    @ApiImplicitParams({@ApiImplicitParam(name = "tester", dataType = "string", paramType = "header")})
+    @Override
+    public void handle(Invocation invocation, AsyncResponse asyncResp) throws Exception {
+      Object[] args = invocation.getArgs();
+      System.out.println(args);
+    }
+  }
+  ```
\ No newline at end of file


[23/51] incubator-servicecomb-website git commit: added 3rd livestreaming slide

Posted by jb...@apache.org.
added 3rd livestreaming slide

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/c0f5aa55
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/c0f5aa55
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/c0f5aa55

Branch: refs/heads/asf-site
Commit: c0f5aa55c66380c6763eee3e2b599b1bd4603130
Parents: 48d938a
Author: eric-lee-ltk <li...@huawei.com>
Authored: Fri Nov 10 14:24:10 2017 +0800
Committer: Eric Lee <li...@huawei.com>
Committed: Fri Nov 10 14:25:06 2017 +0800

----------------------------------------------------------------------
 _pages/about-slides.md                           |   4 ++++
 _pages/cn/about-slides.md                        |   3 +++
 ...ceOfHuaweiConsumerCloudBasedOnServiceComb.pdf | Bin 0 -> 1456205 bytes
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c0f5aa55/_pages/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/about-slides.md b/_pages/about-slides.md
index 09b3608..abae0d4 100644
--- a/_pages/about-slides.md
+++ b/_pages/about-slides.md
@@ -16,3 +16,7 @@ date: 2017-06-20T11:02:20+08:00
 
 ## [ServiceComb live streaming phase II](http://www.itdks.com/liveevent/detail/6620), 20171102
  * [ServiceComb: past and present]({{ site.url }}{{ site.baseurl }}/assets/slides/20171102/ServiceComb_PastAndPresent.pdf)
+
+## [ServiceComb live streaming phase III](http://www.itdks.com/liveevent/detail/6621), 20171109
+ * [Micrservice practice of Huawei consumer cloud based on ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf)
+

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c0f5aa55/_pages/cn/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/cn/about-slides.md b/_pages/cn/about-slides.md
index 584631e..81a8f2d 100644
--- a/_pages/cn/about-slides.md
+++ b/_pages/cn/about-slides.md
@@ -16,3 +16,6 @@ date: 2017-06-20T11:02:20+08:00
 
 ## [ServiceComb直播第二期](http://www.itdks.com/liveevent/detail/6620), 20171102
  * [ServiceComb前世今生]({{ site.url }}{{ site.baseurl }}/assets/slides/20171102/ServiceComb_PastAndPresent.pdf)
+
+## [ServiceComb直播第三期](http://www.itdks.com/liveevent/detail/6621), 20171109
+ * [消费者云ServiceComb微服务实践]({{ site.url }}{{ site.baseurl }}/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c0f5aa55/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf
----------------------------------------------------------------------
diff --git a/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf b/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf
new file mode 100644
index 0000000..461ef03
Binary files /dev/null and b/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf differ


[03/51] incubator-servicecomb-website git commit: added new version feature description in quick start

Posted by jb...@apache.org.
added new version feature description in quick start

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/31414329
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/31414329
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/31414329

Branch: refs/heads/asf-site
Commit: 31414329f62e7354cc6a8df633d82062fc21e78c
Parents: 26bbf68
Author: eric-lee-ltk <li...@huawei.com>
Authored: Tue Oct 24 10:32:22 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Oct 23 21:43:28 2017 -0500

----------------------------------------------------------------------
 _docs/cn/quick-start-bmi.md | 8 ++++++++
 _docs/quick-start-bmi.md    | 8 ++++++++
 2 files changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/31414329/_docs/cn/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start-bmi.md b/_docs/cn/quick-start-bmi.md
index 229dcac..39188f5 100644
--- a/_docs/cn/quick-start-bmi.md
+++ b/_docs/cn/quick-start-bmi.md
@@ -82,6 +82,10 @@ public class CalculatorRestEndpoint implements CalculatorEndpoint {
   }
 }
 ```
+
+ServiceComb从0.3.0版本之后提供了对SpringMvc中简化注解(即`GetMapping`等)的支持。
+{: .notice--info}
+
 这里用`@RestSchema`注释端点后, **ServiceComb** 微服务框架会自动生成对应的服务端点契约,并根据
 如下的 `microservice.yaml` 文件中的定义来配置端点端口,将契约和服务一起注册到服务注册中心。
 ```yaml
@@ -138,6 +142,10 @@ public class CalculatorApplication {
       <artifactId>spring-cloud-zuul</artifactId>
     </dependency>
 ```
+
+ServiceComb从0.4.0-SNAPSHOT版本之后新增了`spring-cloud-zuul`模块使能提供对zuul的兼容。
+{: .notice--info}
+
 在 `application.yaml` 文件中配置路由规则及服务端口信息:
 ```yaml
 zuul:

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/31414329/_docs/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start-bmi.md b/_docs/quick-start-bmi.md
index ac356ee..c6a1cb7 100644
--- a/_docs/quick-start-bmi.md
+++ b/_docs/quick-start-bmi.md
@@ -83,6 +83,10 @@ public class CalculatorRestEndpoint implements CalculatorEndpoint {
   }
 }
 ```
+
+ServiceComb supports SpringMvc simplified annotations, e.g. `GetMapping`, since version 0.3.0.
+{: .notice--info}
+
 Note that ServiceComb can auto-generate service contract when annotating endpoints with `@RestSchema`. Then configure the endpoint in  `microservice.yaml` as follows to register the contact and microservice to service center.
 ```yaml
 APPLICATION_ID: bmi
@@ -138,6 +142,10 @@ Introduce ServiceComb dependency:
       <artifactId>spring-cloud-zuul</artifactId>
     </dependency>
 ```
+
+ServiceComb added `spring-cloud-zuul` module to provide better compatibility with zuul since version 0.4.0-SNAPSHOT.
+{: .notice--info}
+
 Configure routing rules and service endpoint in `application.yaml`.
 ```yaml
 zuul:


[35/51] incubator-servicecomb-website git commit: JAV-529 added guide on migration from dubbo to servicecomb

Posted by jb...@apache.org.
JAV-529 added guide on migration from dubbo to servicecomb


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/3e97a883
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/3e97a883
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/3e97a883

Branch: refs/heads/asf-site
Commit: 3e97a883dd5a15c82929326e5fbca60dec8356f8
Parents: 4e37fb8
Author: seanyinx <se...@huawei.com>
Authored: Mon Nov 27 16:39:43 2017 +0800
Committer: seanyinx <yi...@hotmail.com>
Committed: Tue Nov 28 16:12:05 2017 +0800

----------------------------------------------------------------------
 _posts/cn/2017-11-27-dubbo-to-servicecomb.md | 312 ++++++++++++++++++++++
 1 file changed, 312 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/3e97a883/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
new file mode 100644
index 0000000..108d2d2
--- /dev/null
+++ b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
@@ -0,0 +1,312 @@
+---
+title: "Dubbo to ServiceComb 迁移指南"
+lang: cn
+ref: dubbo_to_servicecomb
+permalink: /cn/docs/dubbo_to_servicecomb/
+excerpt: "Dubbo to ServiceComb 迁移指南"
+last_modified_at: 2017-11-27T11:08:00+08:00
+author: Sean Yin
+redirect_from:
+  - /theme-setup/
+---
+
+Dubbo和Java chassis底层都使用了Spring的依赖注入和bean管理系统,所以使用Dubbo的服务迁移到ServiceComb工作量较小,
+主要改动在依赖和配置方面。
+
+## 服务提供方
+### 替换依赖
+将对dubbo的依赖替换为对Java chassis的依赖
+
+Dubbo
+```xml
+  <dependency>
+    <groupId>com.alibaba</groupId>
+    <artifactId>dubbo</artifactId>
+    <version>${dubbo.version}</version>
+  </dependency>
+```
+
+Java chassis
+```xml
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>io.servicecomb</groupId>
+				<artifactId>java-chassis-dependencies</artifactId>
+				<version>${java.chassis.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+	
+	<dependencies>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>transport-highway</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>transport-rest-vertx</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>provider-pojo</artifactId>
+    </dependency>
+  </dependencies>
+```
+
+### 替换服务接口注释
+以 `@Service` 注释方式暴露的服务接口,用 `@RpcSchema` 替代
+
+Dubbo
+```java
+import com.alibaba.dubbo.config.annotation.Service;
+
+@Service
+public class SomeServiceImpl implements SomeService {
+  // ...
+}
+```
+
+Java chassis
+```java
+@RpcSchema(schemaId = "someServiceEndpoint")
+public class SomeServiceImpl implements SomeService {
+  // ...
+}
+```
+
+### 修改提供方启动入口
+
+Dubbo
+```java
+public class ProviderMain
+{
+
+	public static void main(String[] args) throws Exception
+	{
+		@SuppressWarnings(
+		{ "resource", "unused" })
+		ApplicationContext context = new ClassPathXmlApplicationContext("conf/applicationContext.xml");
+		System.out.println("Dubbo provider started successfully...");
+
+		System.in.read();
+	}
+}
+```
+
+Java chassis
+```java
+public class ProviderMain
+{
+
+	public static void main(String[] args) throws Exception
+	{
+		Log4jUtils.init();
+		BeanUtils.init();
+
+		System.out.println("ServiceComb provider started successfully...");
+	}
+}
+```
+
+### 修改服务提供方配置
+Dubbo服务通过一个XML文件同时配置了服务接口、服务注册中心地址、服务监听端口等所有内容。
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
+
+	<dubbo:application name="provider-service" />
+
+	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
+
+	<dubbo:protocol name="dubbo" port="20880" />
+
+	<dubbo:annotation package="io.servicecomb.demo" />
+
+  <!-- 以XML配置方式暴露的服务 -->
+	<dubbo:service interface="io.servicecomb.demo.api.AnotherService" ref="anotherServiceImpl" />
+	<bean id="anotherServiceImpl" class="io.servicecomb.demo.provider.AnotherServiceImpl" />
+
+</beans>
+```
+
+Java chassis也同样提供了以XML文件暴露服务接口的方式,但其他服务配置则通过 `microservice.yaml` 文件提供。 
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
+		http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+
+  <!-- 以XML配置方式暴露的服务 -->
+	<cse:rpc-schema schema-id="anotherServiceEndpoint" implementation="io.servicecomb.demo.provider.AnotherServiceImpl"/>
+</beans>
+```
+
+```yaml
+APPLICATION_ID: my-application
+service_description:
+  name: service-provider
+  version: 0.0.1
+cse:
+  service:
+    registry:
+      address: http://127.0.0.1:30100 # 服务注册中心地址
+  rest:
+    address: 0.0.0.0:8080 # 服务REST端口
+```
+
+## 服务消费方
+### 替换依赖
+将对Dubbo的依赖替换为对Java chassis的依赖
+```xml
+  <dependency>
+    <groupId>com.alibaba</groupId>
+    <artifactId>dubbo</artifactId>
+    <version>${dubbo.version}</version>
+  </dependency>
+```
+
+```xml
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>io.servicecomb</groupId>
+				<artifactId>java-chassis-dependencies</artifactId>
+				<version>${java.chassis.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+	
+	<dependencies>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>transport-highway</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>transport-rest-vertx</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>provider-pojo</artifactId>
+    </dependency>
+  </dependencies>
+```
+
+### 修改消费方启动入口
+```java
+public class ConsumerMain
+{
+
+	public static void main(String[] args) throws Exception
+	{
+		@SuppressWarnings(
+		{ "resource", "unused" })
+		ApplicationContext context = new ClassPathXmlApplicationContext("conf/applicationContext.xml");
+		System.out.println("Dubbo Consumer started successfully...");
+
+		System.in.read();
+	}
+}
+```
+
+```java
+public class ConsumerMain
+{
+
+	public static void main(String[] args) throws Exception
+	{
+		Log4jUtils.init();
+		BeanUtils.init();
+
+		System.out.println("ServiceComb Consumer started successfully...");
+	}
+}
+```
+
+### 服务异步调用
+Dubbo
+```java
+  SomeService someService = (SomeService) context.getBean("someServiceRef");
+  String hello = someService.sayHello("world");
+  Future<String> future = RpcContext.getContext().getFuture();
+  return future.get();
+```
+
+Java chassis
+```java
+  ApplicationContext context = BeanUtils.getContext();
+  SomeService someService = (SomeService) context.getBean("someServiceRef");
+  
+  CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> someService.sayHello("world"));
+  return future.get();
+```
+
+### 修改服务提供方配置
+Dubbo服务通过一个XML文件同时配置了远程服务提供方接口、服务注册中心地址、服务监听端口等所有内容。
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
+
+	<dubbo:application name="consumer-service" />
+
+	<dubbo:protocol name="dubbo" port="20880"/>
+	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
+
+	<dubbo:reference id="someServiceRef"
+		interface="io.servicecomb.demo.api.SomeService"
+		async="true" timeout="30000" />
+
+	<dubbo:reference id="anotherServiceRef"
+		interface="io.servicecomb.demo.api.AnotherService"
+		async="true" timeout="30000" />
+</beans>
+```
+
+Java chassis也同样提供了以XML文件引用远程服务提供方接口的方式,但其他服务配置则通过 `microservice.yaml` 文件提供。
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+  xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc"
+  xmlns:context="http://www.springframework.org/schema/context"
+  xsi:schemaLocation="
+		http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
+		http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
+
+
+  <cse:rpc-reference id="someServiceRef" microservice-name="service-provider"
+    schema-id="someServiceEndpoint" interface="io.servicecomb.demo.api.SomeService"/>
+    
+  <cse:rpc-reference id="anotherServiceRef" microservice-name="service-provider"
+    schema-id="anotherServiceEndpoint" interface="io.servicecomb.demo.api.AnotherService"/>
+</beans>
+```
+
+```yaml
+APPLICATION_ID: my-application
+service_description:
+  name: service-consumer
+  version: 0.0.1
+cse:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+```


[48/51] incubator-servicecomb-website git commit: update java chassis release version from 0.4.0 to 0.5.0 and service center from 0.4.0 to 0.4.1

Posted by jb...@apache.org.
update java chassis release version from 0.4.0 to 0.5.0 and service center from 0.4.0 to 0.4.1


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/9f0e753e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/9f0e753e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/9f0e753e

Branch: refs/heads/asf-site
Commit: 9f0e753edde5cc8b6019b603659e2a5b6aeb0802
Parents: 38c4d7a
Author: kongbinghit <kb...@gmail.com>
Authored: Wed Dec 6 11:33:40 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Sun Dec 10 21:01:49 2017 +0800

----------------------------------------------------------------------
 _pages/cn/home.md | 4 ++--
 _pages/home.md    | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/9f0e753e/_pages/cn/home.md
----------------------------------------------------------------------
diff --git a/_pages/cn/home.md b/_pages/cn/home.md
index 4716126..6d31cd4 100644
--- a/_pages/cn/home.md
+++ b/_pages/cn/home.md
@@ -11,8 +11,8 @@ excerpt: 'ServiceComb提供了一套包含代码框架生成,服务注册发
 
 <div class="excerpt-label">最新发布版本:</div>
 <div class="button-group">
-<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.4.0" class="home-button btn--info">Java开发包 v0.4.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.0" class="home-button btn--info">服务中心 v0.4.0</a>
+<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.5.0" class="home-button btn--info">Java开发包 v0.5.0</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.1" class="home-button btn--info">服务中心 v0.4.1</a>
 <a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/9f0e753e/_pages/home.md
----------------------------------------------------------------------
diff --git a/_pages/home.md b/_pages/home.md
index 42b4586..12c1061 100644
--- a/_pages/home.md
+++ b/_pages/home.md
@@ -10,8 +10,8 @@ excerpt: 'ServiceComb is a microservice framework with full functionality of ser
 
 <div class="excerpt-label">Latest release:</div>
 <div class="button-group">
-<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.4.0" class="home-button btn--info">Java SDK v0.4.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.0" class="home-button btn--info">Service Center v0.4.0</a>
+<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.5.0" class="home-button btn--info">Java SDK v0.5.0</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.1" class="home-button btn--info">Service Center v0.4.1</a>
 <a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 


[50/51] incubator-servicecomb-website git commit: Updated the latest release version of ServiceCenter.

Posted by jb...@apache.org.
Updated the latest release version of ServiceCenter.


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/2734387c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/2734387c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/2734387c

Branch: refs/heads/asf-site
Commit: 2734387c12e363d8bf26b2480eb9f812d1528c3d
Parents: a95a8d2
Author: Willem Jiang <ji...@huawei.com>
Authored: Sun Dec 10 21:16:01 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Sun Dec 10 21:16:01 2017 +0800

----------------------------------------------------------------------
 _pages/cn/home.md | 2 +-
 _pages/home.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/2734387c/_pages/cn/home.md
----------------------------------------------------------------------
diff --git a/_pages/cn/home.md b/_pages/cn/home.md
index 6d31cd4..569a346 100644
--- a/_pages/cn/home.md
+++ b/_pages/cn/home.md
@@ -12,7 +12,7 @@ excerpt: 'ServiceComb提供了一套包含代码框架生成,服务注册发
 <div class="excerpt-label">最新发布版本:</div>
 <div class="button-group">
 <a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.5.0" class="home-button btn--info">Java开发包 v0.5.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.1" class="home-button btn--info">服务中心 v0.4.1</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.5.0" class="home-button btn--info">服务中心 v0.5.0</a>
 <a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/2734387c/_pages/home.md
----------------------------------------------------------------------
diff --git a/_pages/home.md b/_pages/home.md
index 12c1061..90031c0 100644
--- a/_pages/home.md
+++ b/_pages/home.md
@@ -11,7 +11,7 @@ excerpt: 'ServiceComb is a microservice framework with full functionality of ser
 <div class="excerpt-label">Latest release:</div>
 <div class="button-group">
 <a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.5.0" class="home-button btn--info">Java SDK v0.5.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.1" class="home-button btn--info">Service Center v0.4.1</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.5.0" class="home-button btn--info">Service Center v0.5.0</a>
 <a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 


[08/51] incubator-servicecomb-website git commit: Update the latest released version

Posted by jb...@apache.org.
Update the latest released version


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/b48bc73f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/b48bc73f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/b48bc73f

Branch: refs/heads/asf-site
Commit: b48bc73fd61d42e0d3f31df6adef48cac45bc717
Parents: 455450a
Author: Willem Jiang <ji...@huawei.com>
Authored: Tue Oct 31 19:48:30 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Tue Oct 31 19:48:30 2017 +0800

----------------------------------------------------------------------
 _pages/cn/home.md | 6 +++---
 _pages/home.md    | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b48bc73f/_pages/cn/home.md
----------------------------------------------------------------------
diff --git a/_pages/cn/home.md b/_pages/cn/home.md
index b2bd3a0..886d95d 100644
--- a/_pages/cn/home.md
+++ b/_pages/cn/home.md
@@ -11,9 +11,9 @@ excerpt: 'ServiceComb提供了一套包含代码框架生成,服务注册发
 
 <div class="excerpt-label">最新发布版本:</div>
 <div class="button-group">
-<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.3.0" class="home-button btn--info">Java开发包 v0.3.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.2.0" class="home-button btn--info">服务中心 v0.2.0</a>
-<a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.1" class="home-button btn--info">Saga v0.0.1</a>
+<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.4.0" class="home-button btn--info">Java开发包 v0.4.0</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.3.0" class="home-button btn--info">服务中心 v0.3.0</a>
+<a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 
 intro:

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b48bc73f/_pages/home.md
----------------------------------------------------------------------
diff --git a/_pages/home.md b/_pages/home.md
index c518ab3..2499817 100644
--- a/_pages/home.md
+++ b/_pages/home.md
@@ -10,9 +10,9 @@ excerpt: 'ServiceComb is a microservice framework with full functionality of ser
 
 <div class="excerpt-label">Latest release:</div>
 <div class="button-group">
-<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.3.0" class="home-button btn--info">Java SDK v0.3.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.2.0" class="home-button btn--info">Service Center v0.2.0</a>
-<a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.1" class="home-button btn--info">Saga v0.0.1</a>
+<a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.4.0" class="home-button btn--info">Java SDK v0.4.0</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.3.0" class="home-button btn--info">Service Center v0.3.0</a>
+<a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 
 intro:


[22/51] incubator-servicecomb-website git commit: updated faq

Posted by jb...@apache.org.
updated faq

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/48d938a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/48d938a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/48d938a5

Branch: refs/heads/asf-site
Commit: 48d938a51b20846835565dd9a1486225004bc989
Parents: 93699c6
Author: eric-lee-ltk <li...@huawei.com>
Authored: Mon Nov 6 11:18:03 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Nov 6 06:19:58 2017 -0800

----------------------------------------------------------------------
 _faqs/cn/faq.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/48d938a5/_faqs/cn/faq.md
----------------------------------------------------------------------
diff --git a/_faqs/cn/faq.md b/_faqs/cn/faq.md
index fc50549..92817f4 100644
--- a/_faqs/cn/faq.md
+++ b/_faqs/cn/faq.md
@@ -422,3 +422,53 @@ redirect_from:
      request:
        timeout: 30000
    ```
+
+* **Q: URL 地址就可以唯一定位,为什么要加上一个schema?**
+
+   A:
+   1. schema 是用来匹配服务契约的,用来保证服务端和消费端契约兼容,每个契约需要一个唯一ID,在服务中心存储。
+   2. schema映射到java的interface概念,在consumer使用透明rpc模式开发时,可以找到是微服务里的哪个operation。schema之间的方法名是没有唯一性要求的。
+   3. operation qualified name是治理的key,而URL 因为path参数的存在,没办法直接查找,而qualified name是不会变的。治理是不区分传输的,如果治理按URL 走,那么highway调进来时,还得根据参数反向构造出url,再来正则表达式匹配,太折腾了。
+   4. http只是一种传输通道,还有别的传输通道不需要映射到URL的。
+
+* **Q: rest客户端调用的时候,实际上只带上了服务名和URL,并不需要指定schema id的, 而实际上根据这个URL也能找到具体契约的,所以指定schema id作用何在?**
+
+   A: 由于透明rpc是接口式调用,并没有URL,内部实际都归一化到operation来描述的,这样就可以结合schema id唯一定位到具体的请求处理中。
+
+* **Q: Transport是个什么概念?用来干什么的?**
+
+   A: transport负责编解码,以及传输。通信模型有rest和highway两种,highway对应的是私有协议,使用protobuf编码,rest用的是json。hightway和rest都是基于vertx做的,vertx是基于netty的。
+
+* **Q: 框架中引入了vertx会有什么好处?**
+
+   A: 启用vertx的标准工作模式更强大,不过对业务人员要求就有些高了,目前还没开放业务接口出来。vertx标准的reactive工作模式,要求业务代码中不能有任何的block wait,sleep,大循环,总之,不能停下来。做到这一点,可以用少很多的CPU,提供更多的服务。
+
+* **Q: 一个服务提供者里面会有多个 appid 和微服务吗?什么场景会出现这种情况?**
+
+   A: 会,这里表达的是一个merge的概念。microservice.yaml文件,可能同时存在于jar,磁盘,命令行参数指定这几个地方,此时他们按优先级合并,是用于增加灵活性的。在jar里的是默认值,在此之外,还有环境变量,命令行参数,配置中心覆盖,提供多层定制。
+
+* **Q: ServiceComb和服务中心是怎么交互的?**
+
+   A: 走rest,主要负责注册,取数据和心跳等;watch事件走websocket,watch事件是观察服务中心实例信息有没有变更。
+
+* **Q: 有类似dubbo那种治理中心吗?**
+
+   A: bizkeeper是一个handler,是治理的其中一个内容。治理可以通过handler扩展。
+
+* **Q: service path怎么理解?**
+
+   A: 每个微服务有一个servicePathManager,每一个schema将自己的path注册进去。
+
+   **Q: 这样浏览器能访问到吗?**
+
+   A: 可以,restful的URL路由,都是由service path搞定。
+
+* **Q: 契约生成时,需要强制带上版本号和语言吗?**
+
+   A: 契约是属于微服务的,微服务本来就有版本,但语言是不应该带上版本号的。应该契约要求与语言无关。契约“没有版本”,契约的版本体现在微服务上,实例能找到所属的微服务的版本,就能找到一个确定的契约。
+
+* **Q: ServiceRegistry里的设计代码和Eureka很类似?**
+   A: 我们第一个版本就是在Spring Cloud的基础上做的 后来随着发展发现不够用了才逐渐自己做的一套,所以的确是在充分参考Eureka后设计的。
+
+* **Q: 有些rpc是netty调用redis实现,比直接netty转发优势在哪里?**
+   A: 可能是想用redis解决订阅发布吧。但这样意义也不大,之前也尝试过这么用,但后来都改成ServiceComb了。


[28/51] incubator-servicecomb-website git commit: spelling mistake

Posted by jb...@apache.org.
spelling mistake


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/4c9c876e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/4c9c876e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/4c9c876e

Branch: refs/heads/asf-site
Commit: 4c9c876ef90b1763044bcfa2887325314d66167e
Parents: 977ba51
Author: kang.lin <timaagcl>
Authored: Tue Nov 21 10:03:04 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Tue Nov 21 10:13:33 2017 +0800

----------------------------------------------------------------------
 _developers/cn/submit-codes.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4c9c876e/_developers/cn/submit-codes.md
----------------------------------------------------------------------
diff --git a/_developers/cn/submit-codes.md b/_developers/cn/submit-codes.md
index abb0f02..3a260be 100644
--- a/_developers/cn/submit-codes.md
+++ b/_developers/cn/submit-codes.md
@@ -52,7 +52,7 @@ last_modified_at: 2017-09-08T20:26:43-20:46
 - 检查远程仓库设置:
 
   ```shell
-  git remote –v
+  git remote -v
   origin https://github.com/<your_github_name>/ServiceComb.github.io.git (fetch)
   origin    https://github.com/<your_github_name>/ServiceComb.github.io.git (push)
   upstream  https://github.com/ServiceComb/ServiceComb.github.io.git (fetch)


[15/51] incubator-servicecomb-website git commit: Lower the resolution of the image

Posted by jb...@apache.org.
Lower the resolution of the image


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/4aa705dd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/4aa705dd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/4aa705dd

Branch: refs/heads/asf-site
Commit: 4aa705ddffbc81c19408b495727f24a66058abab
Parents: 5d68166
Author: asifdxtreme <mo...@huawei.com>
Authored: Thu Nov 2 11:31:03 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:08:14 2017 -0700

----------------------------------------------------------------------
 assets/images/ConsumerList.PNG   | Bin 79573 -> 51406 bytes
 assets/images/Dashboard.PNG      | Bin 103902 -> 82572 bytes
 assets/images/InstanceList.PNG   | Bin 81525 -> 52659 bytes
 assets/images/ProviderList.PNG   | Bin 77030 -> 47134 bytes
 assets/images/SchemaList.PNG     | Bin 80818 -> 59937 bytes
 assets/images/SchemaView.PNG     | Bin 89128 -> 27108 bytes
 assets/images/SelectInstance.PNG | Bin 93174 -> 38459 bytes
 assets/images/ServiceList.PNG    | Bin 108323 -> 85794 bytes
 8 files changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/ConsumerList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/ConsumerList.PNG b/assets/images/ConsumerList.PNG
index a517995..4da2c2d 100644
Binary files a/assets/images/ConsumerList.PNG and b/assets/images/ConsumerList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/Dashboard.PNG
----------------------------------------------------------------------
diff --git a/assets/images/Dashboard.PNG b/assets/images/Dashboard.PNG
index d33ef37..c365aa2 100644
Binary files a/assets/images/Dashboard.PNG and b/assets/images/Dashboard.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/InstanceList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/InstanceList.PNG b/assets/images/InstanceList.PNG
index 45b5897..87f2a58 100644
Binary files a/assets/images/InstanceList.PNG and b/assets/images/InstanceList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/ProviderList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/ProviderList.PNG b/assets/images/ProviderList.PNG
index 8db0fd5..c286971 100644
Binary files a/assets/images/ProviderList.PNG and b/assets/images/ProviderList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/SchemaList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/SchemaList.PNG b/assets/images/SchemaList.PNG
index 70245de..bab359f 100644
Binary files a/assets/images/SchemaList.PNG and b/assets/images/SchemaList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/SchemaView.PNG
----------------------------------------------------------------------
diff --git a/assets/images/SchemaView.PNG b/assets/images/SchemaView.PNG
index 65769b9..2ddeda9 100644
Binary files a/assets/images/SchemaView.PNG and b/assets/images/SchemaView.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/SelectInstance.PNG
----------------------------------------------------------------------
diff --git a/assets/images/SelectInstance.PNG b/assets/images/SelectInstance.PNG
index 95c8f11..600787b 100644
Binary files a/assets/images/SelectInstance.PNG and b/assets/images/SelectInstance.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4aa705dd/assets/images/ServiceList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/ServiceList.PNG b/assets/images/ServiceList.PNG
index 7863125..3770e4b 100644
Binary files a/assets/images/ServiceList.PNG and b/assets/images/ServiceList.PNG differ


[11/51] incubator-servicecomb-website git commit: Update 2017-10-28-service-center-ui.md

Posted by jb...@apache.org.
Update 2017-10-28-service-center-ui.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/3c96bd68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/3c96bd68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/3c96bd68

Branch: refs/heads/asf-site
Commit: 3c96bd688d3cc248d5f4abf0017d1a9e483e60d1
Parents: 4aa705d
Author: Mohammad Asif Siddiqui <mo...@huawei.com>
Authored: Thu Nov 2 12:32:50 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:08:14 2017 -0700

----------------------------------------------------------------------
 _posts/2017-10-28-service-center-ui.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/3c96bd68/_posts/2017-10-28-service-center-ui.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-28-service-center-ui.md b/_posts/2017-10-28-service-center-ui.md
index a96da28..f0b50b5 100644
--- a/_posts/2017-10-28-service-center-ui.md
+++ b/_posts/2017-10-28-service-center-ui.md
@@ -2,7 +2,7 @@
 title: "Service-Center Management UI Console"
 lang: en
 ref: service-center-ui
-permalink: /docs/service-centre-ui/
+permalink: /docs/service-center-ui/
 excerpt: "An introduction Service-Center Management Console"
 last_modified_at: 2017-10-30T09:18:43+08:00
 author: Asif Siddiqui


[51/51] incubator-servicecomb-website git commit: make behavior of environment setup page consistent

Posted by jb...@apache.org.
make behavior of environment setup page consistent


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/d18d3e62
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/d18d3e62
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/d18d3e62

Branch: refs/heads/asf-site
Commit: d18d3e62725c64cced8adff28ca77e9d7d1935e0
Parents: 2734387
Author: zhangshuaitao <17...@qq.com>
Authored: Tue Dec 12 14:25:02 2017 +0800
Committer: Eric Lee <da...@huawei.com>
Committed: Tue Dec 12 14:27:59 2017 +0800

----------------------------------------------------------------------
 _users/setup-environment.md | 41 ++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/d18d3e62/_users/setup-environment.md
----------------------------------------------------------------------
diff --git a/_users/setup-environment.md b/_users/setup-environment.md
index 36aeb06..e9f1ffd 100644
--- a/_users/setup-environment.md
+++ b/_users/setup-environment.md
@@ -24,33 +24,34 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 
 1. 以可执行文件的方式运行
 
-    <details open>
-      <summary>Windows运行步骤</summary>
-      <div markdown="1">
-      1. 下载[服务注册中心可执行文件压缩包](https://github.com/ServiceComb/service-center/releases/download/0.1.1/service-center-0.1.1-windows-amd64.zip)
-      2. 解压缩到当前文件夹
-      3. 进入解压缩后的目录,然后双击运行**start**文件
-      </div>
-    </details>
-    <details open>
-      <summary>Linux运行步骤</summary>
-      <div markdown="1">
-      1. 下载服务注册中心可执行文件压缩包并解压缩
-      ```bash
+   <ul class="nav nav-tabs">
+     <li data-toggle="tab" class="active"><a data-toggle="tab" href="#windows">Windows</a></li>
+     <li data-toggle="tab"><a data-toggle="tab" href="#linux">Linux</a></li>
+   </ul>
+   
+   <div class="tab-content">
+     <div id="windows" class="tab-pane active" markdown="1">
+   1. 下载[服务注册中心可执行文件压缩包](https://github.com/ServiceComb/service-center/releases/download/0.1.1/service-center-0.1.1-windows-amd64.zip)
+   2. 解压缩到当前文件夹
+   3. 进入解压缩后的目录,然后双击运行**start**文件
+     </div>
+     <div id="linux" class="tab-pane fade" markdown="1">
+   1. 下载服务注册中心可执行文件压缩包并解压缩
+   ```bash
    wget https://github.com/ServiceComb/service-center/releases/download/0.1.1/service-center-0.1.1-linux-amd64.tar.gz
    tar xvf service-center-0.1.1-linux-amd64.tar.gz
-      ```
-      2. 运行服务注册中心
-      ```bash
+   ```
+   2. 运行服务注册中心
+   ```bash
    bash service-center-0.1.1-linux-amd64/start.sh
-      ```
-      </div>
-    </details>
+   ```
+    </div>
+   </div>
 
    注意:Window和Linux版本均只支持64位系统。
    {: .notice--warning}
 
-2.以Docker的方式运行
+2. 以Docker的方式运行
 
 ```bash
 docker pull servicecomb/service-center


[20/51] incubator-servicecomb-website git commit: updated blog statements

Posted by jb...@apache.org.
updated blog statements

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/b04abded
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/b04abded
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/b04abded

Branch: refs/heads/asf-site
Commit: b04abdedcfbf9bcff315eae259f30b2086f27ce5
Parents: 4df516f
Author: eric-lee-ltk <li...@huawei.com>
Authored: Thu Nov 2 09:02:19 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:11:28 2017 -0700

----------------------------------------------------------------------
 .../2017-10-23-how-to-reform-a-legacy-system.md | 125 ++++++++-----------
 .../2017-10-23-how-to-reform-a-legacy-system.md | 125 ++++++++-----------
 assets/images/case_mengtuo_new_mode.png         | Bin 0 -> 71137 bytes
 .../case_mengtuo_reform_before_and_after.png    | Bin 0 -> 169124 bytes
 assets/images/case_mengtuo_traditional_mode.png | Bin 0 -> 63155 bytes
 assets/images/legacy_system_background.jpeg     | Bin 19848 -> 0 bytes
 .../legacy_system_reform_architecture.jpeg      | Bin 22413 -> 0 bytes
 assets/images/rapid_development_framework.png   | Bin 0 -> 152219 bytes
 ...pid_development_framework_based_on_ruby.jpeg | Bin 28266 -> 0 bytes
 9 files changed, 104 insertions(+), 146 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/_posts/2017-10-23-how-to-reform-a-legacy-system.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-23-how-to-reform-a-legacy-system.md b/_posts/2017-10-23-how-to-reform-a-legacy-system.md
index c2f4d7d..54d1c0f 100644
--- a/_posts/2017-10-23-how-to-reform-a-legacy-system.md
+++ b/_posts/2017-10-23-how-to-reform-a-legacy-system.md
@@ -172,83 +172,71 @@ redirect_from:
 ## 遗留系统改造实践 
 接下来,我和大家分享一个我所经历的遗留系统改造的案例。首先,让我们看看这个系统的背景和一些数据。
 
-![](/assets/images/legacy_system_background.jpeg)
-
 ### 客户背景
 
-澳洲最大的房产门户,业务涉及个人房产、商业房产、土地交易、买卖租赁、业务运行在7个国家。
-
-8年前基于第三方平台二次开发的业务支撑系统,随着企业的高速发展,维护成本增加,新需求交付周期长,系统逐渐成为阻碍企业高速发展的瓶颈。
+[盟拓软件](http://movit-tech.com/)是中国房地产行业IT服务及行业解决方案和产品的领先厂家,其依据市场变化推出全民卖房的新营销模式,正从线下的传统现场售楼模式向线上的房地产电商模式进行转变。
 
 ### 业务痛点
 
-对于每10万元额度的合同,从销售团队准备材料、与客户签单、递交给合同部门,再到合同生效大概需要3.5人天。当时年销售额为4亿,随着业务量的快速增长,签订合同的人力成本在66人年,这还是不考虑管理、沟通等成本,因此成本急剧增加。
+当今房地产行业呈现短期开盘峰值、后期零星散客的业务特性。其面临着高昂线下运营成本,营销成本占销售额>5%。而由此引入的线上竞价秒杀营销模式,传统IT解决方案的系统资源率、峰值扩容能力将无法满足。
+
+![](/assets/images/case_mengtuo_traditional_mode.png)
 
 ### 系统概览
 
-系统为典型的三层单块架构,主从数据库运行在数据中心的虚拟机上。开发和运维团队属于两个独立部门,部署时需要提交文档,记录部署流程、细节以及潜在风险,然后提交审批,获取批准后由运维团队排期并完成部署。
+系统为典型的三层单块架构,所有业务共用一个数据库。
 
 ### 相关数据
 
-* 400K行代码
-
-   系统涉及订单、用户、产品、价格、合同、多国业务支撑等
-
-* 11名团队成员
-
-   以开发和测试为主,每2周交付一个版本给运维部门,以修复缺陷为主,也会有新特性需求。
-
-* 30% 单元测试覆盖率
-
-   系统功能繁杂,二次开发封装了很多库,单元测试覆盖率低。
-
-   无效功能的代码长期不清理,核心人员离职或者换岗,因此,大部分功能用集成和功能测试来验证。
-
-* 50分钟持续集成
-
-   持续集成的大部分时间都用来运行集成/功能测试,同时创建很多任务,用于检测不同系统间的数据一致性。
-
-* 3天部署
-
-   交付版本给运维部门后,需要相关人员审批,授权后排期进行部署,从提交到部署生效,通常需要2~3天。
+* 代码约3万行,测试覆盖率为80%,集成测试时间为一个月
+* 营销预案需提前1个月准备资源
+* 业务耦合紧,新业务上线>半年
+* 上百种业务,2-3种开发语言,运维团队>20人
 
 **基于之前定义的改造策略,我们的改造过程大致如下所示:**
 
 范围定义:
 
-   * 将合同相关部分作为改造的业务范围
-
-   * 将团队中3人+外部引入的2人作为微服务改造团队
+   * 将原房地产CRM平台按业务类别拆分为多个微服务。
 
 功能剥离:
 
-   * 首先剥离合同签署部分,提供在线签署合同系统(H5+JS)
-
-   * 提供合同签署后的存储服务,记录用户在线签署的合同
+   * 按照DDD设计理念,从单体CRM系统中逐步拆分出业务模块(服务网关、客户服务、房源服务、机会服务、积分服务)。
 
 数据解耦
 
-   * 将用户在线签署的合同数据独立存储
+   * 每个微服务的数据进行独立存储。
 
 数据同步
 
-   * 在夜间负载较低的时候,将签署的合同数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务
+   * 在负载较低时,将数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务。
+
+改造过程中,ServiceComb的微服务示例项目[Company Workshop](https://github.com/ServiceComb/ServiceComb-Company-WorkShop)提供了架构和实际代码参考。复用Company Workshop中的网关,只需更改路由配置, 一天内完成了网关服务。参考Company Workshop的架构,我们用网关接入手机端APP请求,路由给后端服务。**通过控制请求路由,逐步架空对原单体应用的请求, 平滑过渡系统到微服务架构。**
 
-   * 实现合同服务,并构建前后端分离的H5+JS应用,为合同部门提供合同管理后台
+微服务的改造也很容易,参考[微服务快速开发博文](http://servicecomb.io/docs/linuxcon-workshop-demo/),**基于ServiceComb,简单4步, 1天改造1个微服务:**
 
-   * 定义合同pdf生成器,完成pdf的存储和下载
+1. 引入[ServiceComb Java Chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis)框架依赖
+2. 定义服务接口端点
+3. 添加服务配置文件
+4. 注释服务启动入口
 
-   * 定义合同中相关数据的服务接口,譬如产品服务,用户服务。便于用户挑选产品组合以及获取积分信息
+![](/assets/images/case_mengtuo_reform_before_and_after.png)
 
-**经过近半年多后,改造的架构如下所示:**
+另外,通过Company Workshop中提供的Docker插件配置,10分钟内完成了服务容器化,自动生成镜像。
 
-![](/assets/images/legacy_system_reform_architecture.jpeg)
+作为[华为ServiceStage](https://www.huaweicloud.com/product/servicestage.html)的开源微服务解决方案,利用ServiceComb开发的微服务应用可无缝接入ServiceStage,同时享受到微服务治理、容器虚机混编、应用拓扑等能力。
 
-可以看到,合同签署的业务已经被拆分出来,同时合同签署的数据也被独立出来,但由于原有遗留系统的复杂度以及数据相关依赖,我们需要将合同的签署数据同步到遗留系统的数据库中。
+盟拓容器虚机混编应用云化方案是盟拓软件基于华为ServiceStage的以云应用为中心的混编管理方案。通过华为的核心技术容器改造、混编方案、 编排调度算法等,帮助系统做云化改造,云化后的产品和解决方案能够随着参与人数增加而秒级伸缩,支撑业务峰值和资源利用率。
 
-当然,这只是我的个案中用到,大家可以在改造的过程中,结合具体的业务场景中,考虑是否需要这样的数据同步机制。
+**改造后效果:**
 
-对于当前这个例子,如果不做数据的同步,则需要更长的时间分析并解耦合同数据同原有遗留系统的依赖,因此也可以看出,同步是为了帮助我们尽快的使改造后的服务体现价值。
+* 运维人力减少80%
+* 资源利用率提升50%,降低运营成本
+* 每秒万级调用链分析能力
+* 传统系统和应用平滑改造上云
+* 互联网营销模式,天粒度业务快速创新
+
+![](/assets/images/case_mengtuo_new_mode.png)
 
 **理论上,经过不断地迭代,逐渐完成业务功能解耦,新服务构建。那么遗留系统就会被替换掉。**
 
@@ -258,52 +246,45 @@ redirect_from:
 ![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
 
 ### 基础设施自动化
-
 原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用AWS作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究AWS以及相关的DevOps配套工具。
 
 目前,国内外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。
 
 ### 微服务生态系统
-
 微服务的生态系统是指微服务实施过程相关的协作部分,涉及部分较多,譬如测试机制、持续集成、自动化部署、细粒度监控、日志聚合、告警、持续交付,以及大家非常关注的服务注册、服务发现机制等。
 
-这部分的灵活性比较大,因为目前如上说的每一个领域都有很多优秀的工具。譬如日志聚合目前业界的方案通常为ELK、AWS的部署使用CloudFormation更灵活,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工具都具有告警功能,PagerDuty也提供更专业的告警服务。服务注册和发现有Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。
+这部分的灵活性比较大,因为目前如上说的每一个领域都有很多优秀的工具。譬如日志聚合目前业界的方案通常为ELK,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工具都具有告警功能,PagerDuty也提供更专业的告警服务。服务注册和发现有ServiceComb框架的Service Center,Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。
 
 ### 开发框架的演进
-
 开发框架是团队在构建微服务的过程中,不断总结,梳理出的快速开发微服务的相关工具和框架。
 
-我们基于Ruby构建了快速开发框架,主要包括四部分,如下图所示:
+我们基于ServiceComb构建了快速开发框架,主要包括四部分,如下图所示:
 
-![](/assets/images/rapid_development_framework_based_on_ruby.jpeg)
+![](/assets/images/rapid_development_framework.png)
 
-1. 开发模板
+1. 微服务工程示例
 
-   使用Grape作为Web框架,HAL作为API通信规约,RSpec作为测试框架。同时,还定义了一组Rake任务,譬如运行测试,查看测试报告,将当前的服务生成RPM/AMI镜像等。
-   
-   除此之外,该模板也提供了一组通用的URL,帮助使用者查看微服务的版本、配置信息以及检测是否健康运行等。譬如/diagnostic/config, /health, /version, /heartbeat
+   提供微服务改造架构最佳实践参考工程Company,使能微服务改造或开发能复用其架构设计和配置,同时指导实现服务容器化和后续服务性能测试等提高服务可靠性。
 
-2. 代码生成工具
+2. 契约生成工具
 
-   通过指定不同参数,代码生成工具能创建具有数据库访问能力,或者是包含异步队列处理的微服务应用。同时,也可以标记该服务是数据消费者还是数据生产者,帮助理解多个微服务之间的联系
+   ServiceComb采用了基于OpenAPI的服务契约,使业务逻辑与编程语言解耦,并可使用Swagger工具定义服务契约,自动生成契约对应的代码和文档。
 
-3. 持续集成模板
+3. 持续集成
 
-   基于持续集成服务器Bamboo,创建了模板工程,并定义主要的阶段:
-   
-   > 验证:运行单元测试,契约测试
+   持续集成使用了Jenkins,通过其配置文件定义主要的阶段:
+
+   > 验证:运行单元测试,集成测试
    >
-   > 构建:构建基于AMI的部署包
+   > 构建:构建可执行的jar部署包
    >
-   > 部署:基于指定版本的AMI,快速部署到验收环境或者产品环境上。
+   > 部署:基于指定版本制作镜像,并推送到测试或生产环境下
 
    利用这样的持续集成模板工程,花费很少的时间,就可以针对新建的微服务应用,快速配置其对应的持续集成环境。
+   
+4. Kubernetes集群一键部署
 
-4. 基于Asgard的部署工具
-
-   Asgard是由Netflix开发的基于Web的AWS云部署和管理工具。基于Asgard,我们实现了命令行部署工具,部署时通过一条命令,提供服务名称、版本号,就可自动完成资源的创建、部署、流量切换、删除旧的应用等操作。譬如:
-
-   > deploy [ServiceName] [ServiceVersion]
+   Kubernetes是谷歌开源的一个容器集群管理工具。基于Kubernetes,可实现微服务的快速部署及弹性伸缩。我们提供了一键部署脚本,部署时只需稍作修改即可通过一条命令,自动完成资源的创建、部署、弹性伸缩、金丝雀发布等。
 
 ### 团队运维自管理
 
@@ -319,12 +300,10 @@ redirect_from:
    
 最后,和大家分享一下,我个人在微服务实施过程中总结的4句方针:
 
-由大到小,由粗到细
-
-关注运维,关注监控
+**由大到小,由粗到细**
 
-快速反馈,快速修复
+**关注运维,关注监控**
 
-循序渐进,增量实现
+**快速反馈,快速修复**
 
-也希望大家能够支持我的书《微服务架构与实践》。
+**循序渐进,增量实现**

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md b/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
index 30680e0..2df95d8 100644
--- a/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
+++ b/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
@@ -172,83 +172,71 @@ redirect_from:
 ## 遗留系统改造实践 
 接下来,我和大家分享一个我所经历的遗留系统改造的案例。首先,让我们看看这个系统的背景和一些数据。
 
-![](/assets/images/legacy_system_background.jpeg)
-
 ### 客户背景
 
-澳洲最大的房产门户,业务涉及个人房产、商业房产、土地交易、买卖租赁、业务运行在7个国家。
-
-8年前基于第三方平台二次开发的业务支撑系统,随着企业的高速发展,维护成本增加,新需求交付周期长,系统逐渐成为阻碍企业高速发展的瓶颈。
+[盟拓软件](http://movit-tech.com/)是中国房地产行业IT服务及行业解决方案和产品的领先厂家,其依据市场变化推出全民卖房的新营销模式,正从线下的传统现场售楼模式向线上的房地产电商模式进行转变。
 
 ### 业务痛点
 
-对于每10万元额度的合同,从销售团队准备材料、与客户签单、递交给合同部门,再到合同生效大概需要3.5人天。当时年销售额为4亿,随着业务量的快速增长,签订合同的人力成本在66人年,这还是不考虑管理、沟通等成本,因此成本急剧增加。
+当今房地产行业呈现短期开盘峰值、后期零星散客的业务特性。其面临着高昂线下运营成本,营销成本占销售额>5%。而由此引入的线上竞价秒杀营销模式,传统IT解决方案的系统资源率、峰值扩容能力将无法满足。
+
+![](/assets/images/case_mengtuo_traditional_mode.png)
 
 ### 系统概览
 
-系统为典型的三层单块架构,主从数据库运行在数据中心的虚拟机上。开发和运维团队属于两个独立部门,部署时需要提交文档,记录部署流程、细节以及潜在风险,然后提交审批,获取批准后由运维团队排期并完成部署。
+系统为典型的三层单块架构,所有业务共用一个数据库。
 
 ### 相关数据
 
-* 400K行代码
-
-   系统涉及订单、用户、产品、价格、合同、多国业务支撑等
-
-* 11名团队成员
-
-   以开发和测试为主,每2周交付一个版本给运维部门,以修复缺陷为主,也会有新特性需求。
-
-* 30% 单元测试覆盖率
-
-   系统功能繁杂,二次开发封装了很多库,单元测试覆盖率低。
-
-   无效功能的代码长期不清理,核心人员离职或者换岗,因此,大部分功能用集成和功能测试来验证。
-
-* 50分钟持续集成
-
-   持续集成的大部分时间都用来运行集成/功能测试,同时创建很多任务,用于检测不同系统间的数据一致性。
-
-* 3天部署
-
-   交付版本给运维部门后,需要相关人员审批,授权后排期进行部署,从提交到部署生效,通常需要2~3天。
+* 代码约3万行,测试覆盖率为80%,集成测试时间为一个月
+* 营销预案需提前1个月准备资源
+* 业务耦合紧,新业务上线>半年
+* 上百种业务,2-3种开发语言,运维团队>20人
 
 **基于之前定义的改造策略,我们的改造过程大致如下所示:**
 
 范围定义:
 
-   * 将合同相关部分作为改造的业务范围
-
-   * 将团队中3人+外部引入的2人作为微服务改造团队
+   * 将原房地产CRM平台按业务类别拆分为多个微服务。
 
 功能剥离:
 
-   * 首先剥离合同签署部分,提供在线签署合同系统(H5+JS)
-
-   * 提供合同签署后的存储服务,记录用户在线签署的合同
+   * 按照DDD设计理念,从单体CRM系统中逐步拆分出业务模块(服务网关、客户服务、房源服务、机会服务、积分服务)。
 
 数据解耦
 
-   * 将用户在线签署的合同数据独立存储
+   * 每个微服务的数据进行独立存储。
 
 数据同步
 
-   * 在夜间负载较低的时候,将签署的合同数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务
+   * 在负载较低时,将数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务。
+
+改造过程中,ServiceComb的微服务示例项目[Company Workshop](https://github.com/ServiceComb/ServiceComb-Company-WorkShop)提供了架构和实际代码参考。复用Company Workshop中的网关,只需更改路由配置, 一天内完成了网关服务。参考Company Workshop的架构,我们用网关接入手机端APP请求,路由给后端服务。**通过控制请求路由,逐步架空对原单体应用的请求, 平滑过渡系统到微服务架构。**
 
-   * 实现合同服务,并构建前后端分离的H5+JS应用,为合同部门提供合同管理后台
+微服务的改造也很容易,参考[微服务快速开发博文](http://servicecomb.io/docs/linuxcon-workshop-demo/),**基于ServiceComb,简单4步, 1天改造1个微服务:**
 
-   * 定义合同pdf生成器,完成pdf的存储和下载
+1. 引入[ServiceComb Java Chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis)框架依赖
+2. 定义服务接口端点
+3. 添加服务配置文件
+4. 注释服务启动入口
 
-   * 定义合同中相关数据的服务接口,譬如产品服务,用户服务。便于用户挑选产品组合以及获取积分信息
+![](/assets/images/case_mengtuo_reform_before_and_after.png)
 
-**经过近半年多后,改造的架构如下所示:**
+另外,通过Company Workshop中提供的Docker插件配置,10分钟内完成了服务容器化,自动生成镜像。
 
-![](/assets/images/legacy_system_reform_architecture.jpeg)
+作为[华为ServiceStage](https://www.huaweicloud.com/product/servicestage.html)的开源微服务解决方案,利用ServiceComb开发的微服务应用可无缝接入ServiceStage,同时享受到微服务治理、容器虚机混编、应用拓扑等能力。
 
-可以看到,合同签署的业务已经被拆分出来,同时合同签署的数据也被独立出来,但由于原有遗留系统的复杂度以及数据相关依赖,我们需要将合同的签署数据同步到遗留系统的数据库中。
+盟拓容器虚机混编应用云化方案是盟拓软件基于华为ServiceStage的以云应用为中心的混编管理方案。通过华为的核心技术容器改造、混编方案、 编排调度算法等,帮助系统做云化改造,云化后的产品和解决方案能够随着参与人数增加而秒级伸缩,支撑业务峰值和资源利用率。
 
-当然,这只是我的个案中用到,大家可以在改造的过程中,结合具体的业务场景中,考虑是否需要这样的数据同步机制。
+**改造后效果:**
 
-对于当前这个例子,如果不做数据的同步,则需要更长的时间分析并解耦合同数据同原有遗留系统的依赖,因此也可以看出,同步是为了帮助我们尽快的使改造后的服务体现价值。
+* 运维人力减少80%
+* 资源利用率提升50%,降低运营成本
+* 每秒万级调用链分析能力
+* 传统系统和应用平滑改造上云
+* 互联网营销模式,天粒度业务快速创新
+
+![](/assets/images/case_mengtuo_new_mode.png)
 
 **理论上,经过不断地迭代,逐渐完成业务功能解耦,新服务构建。那么遗留系统就会被替换掉。**
 
@@ -258,52 +246,45 @@ redirect_from:
 ![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
 
 ### 基础设施自动化
-
 原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用AWS作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究AWS以及相关的DevOps配套工具。
 
 目前,国内外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。
 
 ### 微服务生态系统
-
 微服务的生态系统是指微服务实施过程相关的协作部分,涉及部分较多,譬如测试机制、持续集成、自动化部署、细粒度监控、日志聚合、告警、持续交付,以及大家非常关注的服务注册、服务发现机制等。
 
-这部分的灵活性比较大,因为目前如上说的每一个领域都有很多优秀的工具。譬如日志聚合目前业界的方案通常为ELK、AWS的部署使用CloudFormation更灵活,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工具都具有告警功能,PagerDuty也提供更专业的告警服务。服务注册和发现有Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。
+这部分的灵活性比较大,因为目前如上说的每一个领域都有很多优秀的工具。譬如日志聚合目前业界的方案通常为ELK,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工具都具有告警功能,PagerDuty也提供更专业的告警服务。服务注册和发现有ServiceComb框架的Service Center,Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。
 
 ### 开发框架的演进
-
 开发框架是团队在构建微服务的过程中,不断总结,梳理出的快速开发微服务的相关工具和框架。
 
-我们基于Ruby构建了快速开发框架,主要包括四部分,如下图所示:
+我们基于ServiceComb构建了快速开发框架,主要包括四部分,如下图所示:
 
-![](/assets/images/rapid_development_framework_based_on_ruby.jpeg)
+![](/assets/images/rapid_development_framework.png)
 
-1. 开发模板
+1. 微服务工程示例
 
-   使用Grape作为Web框架,HAL作为API通信规约,RSpec作为测试框架。同时,还定义了一组Rake任务,譬如运行测试,查看测试报告,将当前的服务生成RPM/AMI镜像等。
-   
-   除此之外,该模板也提供了一组通用的URL,帮助使用者查看微服务的版本、配置信息以及检测是否健康运行等。譬如/diagnostic/config, /health, /version, /heartbeat
+   提供微服务改造架构最佳实践参考工程Company,使能微服务改造或开发能复用其架构设计和配置,同时指导实现服务容器化和后续服务性能测试等提高服务可靠性。
 
-2. 代码生成工具
+2. 契约生成工具
 
-   通过指定不同参数,代码生成工具能创建具有数据库访问能力,或者是包含异步队列处理的微服务应用。同时,也可以标记该服务是数据消费者还是数据生产者,帮助理解多个微服务之间的联系
+   ServiceComb采用了基于OpenAPI的服务契约,使业务逻辑与编程语言解耦,并可使用Swagger工具定义服务契约,自动生成契约对应的代码和文档。
 
-3. 持续集成模板
+3. 持续集成
 
-   基于持续集成服务器Bamboo,创建了模板工程,并定义主要的阶段:
-   
-   > 验证:运行单元测试,契约测试
+   持续集成使用了Jenkins,通过其配置文件定义主要的阶段:
+
+   > 验证:运行单元测试,集成测试
    >
-   > 构建:构建基于AMI的部署包
+   > 构建:构建可执行的jar部署包
    >
-   > 部署:基于指定版本的AMI,快速部署到验收环境或者产品环境上。
+   > 部署:基于指定版本制作镜像,并推送到测试或生产环境下
 
    利用这样的持续集成模板工程,花费很少的时间,就可以针对新建的微服务应用,快速配置其对应的持续集成环境。
+   
+4. Kubernetes集群一键部署
 
-4. 基于Asgard的部署工具
-
-   Asgard是由Netflix开发的基于Web的AWS云部署和管理工具。基于Asgard,我们实现了命令行部署工具,部署时通过一条命令,提供服务名称、版本号,就可自动完成资源的创建、部署、流量切换、删除旧的应用等操作。譬如:
-
-   > deploy [ServiceName] [ServiceVersion]
+   Kubernetes是谷歌开源的一个容器集群管理工具。基于Kubernetes,可实现微服务的快速部署及弹性伸缩。我们提供了一键部署脚本,部署时只需稍作修改即可通过一条命令,自动完成资源的创建、部署、弹性伸缩、金丝雀发布等。
 
 ### 团队运维自管理
 
@@ -319,12 +300,10 @@ redirect_from:
    
 最后,和大家分享一下,我个人在微服务实施过程中总结的4句方针:
 
-由大到小,由粗到细
-
-关注运维,关注监控
+**由大到小,由粗到细**
 
-快速反馈,快速修复
+**关注运维,关注监控**
 
-循序渐进,增量实现
+**快速反馈,快速修复**
 
-也希望大家能够支持我的书《微服务架构与实践》。
+**循序渐进,增量实现**

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/case_mengtuo_new_mode.png
----------------------------------------------------------------------
diff --git a/assets/images/case_mengtuo_new_mode.png b/assets/images/case_mengtuo_new_mode.png
new file mode 100644
index 0000000..4b9ddf0
Binary files /dev/null and b/assets/images/case_mengtuo_new_mode.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/case_mengtuo_reform_before_and_after.png
----------------------------------------------------------------------
diff --git a/assets/images/case_mengtuo_reform_before_and_after.png b/assets/images/case_mengtuo_reform_before_and_after.png
new file mode 100644
index 0000000..12dec8a
Binary files /dev/null and b/assets/images/case_mengtuo_reform_before_and_after.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/case_mengtuo_traditional_mode.png
----------------------------------------------------------------------
diff --git a/assets/images/case_mengtuo_traditional_mode.png b/assets/images/case_mengtuo_traditional_mode.png
new file mode 100644
index 0000000..6daaad2
Binary files /dev/null and b/assets/images/case_mengtuo_traditional_mode.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/legacy_system_background.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/legacy_system_background.jpeg b/assets/images/legacy_system_background.jpeg
deleted file mode 100644
index 528710d..0000000
Binary files a/assets/images/legacy_system_background.jpeg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/legacy_system_reform_architecture.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/legacy_system_reform_architecture.jpeg b/assets/images/legacy_system_reform_architecture.jpeg
deleted file mode 100644
index 66c6597..0000000
Binary files a/assets/images/legacy_system_reform_architecture.jpeg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/rapid_development_framework.png
----------------------------------------------------------------------
diff --git a/assets/images/rapid_development_framework.png b/assets/images/rapid_development_framework.png
new file mode 100644
index 0000000..1f8ae21
Binary files /dev/null and b/assets/images/rapid_development_framework.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b04abded/assets/images/rapid_development_framework_based_on_ruby.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/rapid_development_framework_based_on_ruby.jpeg b/assets/images/rapid_development_framework_based_on_ruby.jpeg
deleted file mode 100644
index 942b913..0000000
Binary files a/assets/images/rapid_development_framework_based_on_ruby.jpeg and /dev/null differ


[13/51] incubator-servicecomb-website git commit: Update and rename 2017-10-28-service-centre-ui.md to 2017-10-28-service-center-ui.md

Posted by jb...@apache.org.
Update and rename 2017-10-28-service-centre-ui.md to 2017-10-28-service-center-ui.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/26d3b349
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/26d3b349
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/26d3b349

Branch: refs/heads/asf-site
Commit: 26d3b349c0795244185e3795d580e4ea21a47749
Parents: 35d1cbe
Author: Mohammad Asif Siddiqui <mo...@huawei.com>
Authored: Wed Nov 1 18:44:54 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:08:14 2017 -0700

----------------------------------------------------------------------
 _posts/2017-10-28-service-center-ui.md | 67 +++++++++++++++++++++++++++++
 _posts/2017-10-28-service-centre-ui.md | 67 -----------------------------
 2 files changed, 67 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26d3b349/_posts/2017-10-28-service-center-ui.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-28-service-center-ui.md b/_posts/2017-10-28-service-center-ui.md
new file mode 100644
index 0000000..a96da28
--- /dev/null
+++ b/_posts/2017-10-28-service-center-ui.md
@@ -0,0 +1,67 @@
+---
+title: "Service-Center Management UI Console"
+lang: en
+ref: service-center-ui
+permalink: /docs/service-centre-ui/
+excerpt: "An introduction Service-Center Management Console"
+last_modified_at: 2017-10-30T09:18:43+08:00
+author: Asif Siddiqui
+tags: [service center]
+redirect_from:
+  - /theme-setup/
+---
+
+Service-Center Management UI Console enables user to view the list of MicroServices registered in SC.
+Users can view the detailed information of their MicroServices, Instances and Schemas.
+Service-Center UI also offers a unique feature of testing the Schemas of their MicroServices from UI, Users 
+can also download the html client for their Schemas.
+
+### Preview of Management Console
+![Preview]({{ site.url }}{{ site.baseurl }}/assets/images/Service-Center-UI-Preview.gif){: .align-center}
+
+### Features
+Service-Center Management console offers very useful features which makes users easy to use and manage service-center.
+
+### Dashboard
+This is the place where you can get the overall information about the services which are registered in your service-center like total number of services, providers, consumers and total instances. You can also get a list of Services which based on their current status.  
+![Dashboard]({{ site.url }}{{ site.baseurl }}/assets/images/Dashboard.PNG){: .align-center}  
+
+
+
+### Micro-Service List
+This is the place where you can see the basic details of all the services which are registered in Service-Center. You can see the details like MicroService Name, Application Name, Status, Version, Creation time and Instance count. You can also un-register the microservice from Operations Tab if there is no running instances for the microservice.  
+![ServiceList]({{ site.url }}{{ site.baseurl }}/assets/images/ServiceList.PNG){: .align-center}  
+
+
+### Instance Details
+This is the place where you can see all the current running instances for the MicroService, you can get the list of endpoints and their protocols.  
+![InstanceList]({{ site.url }}{{ site.baseurl }}/assets/images/InstanceList.PNG){: .align-center}  
+
+
+### Provider List
+This is the place where you can get the list of all the providers for the MicroService.  
+![Provider List]({{ site.url }}{{ site.baseurl }}/assets/images/ProviderList.PNG){: .align-center}  
+
+
+### Consumer List
+This is the place where you can get the list of all the consumers for the MicroService  
+![Consumer List]({{ site.url }}{{ site.baseurl }}/assets/images/ConsumerList.PNG){: .align-center}  
+
+
+### Schema List
+This is the place where we can get the list of all the Schema\'s for your MicroService, here you get options of viewing the Schema in Swagger form or Test the Schema on some particular instance. Here you also get an option to Download the Schema file in Html Client form.  
+![Schema List]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaList.PNG){: .align-center}  
+
+For Viewing the Schema in Swagger form you can click on Test Schema button and you can view the complete details of Schema in Swagger form.  
+
+![View Swagger]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaView.PNG){: .align-center}
+
+If you wish to test the Schema on some particular Instance then you can click on Test Schema and select the instance on which you want to test the Schema and then select the endpoints for that instance.  
+![Select Instance]({{ site.url }}{{ site.baseurl }}/assets/images/SelectInstance.PNG){: .align-center}
+
+
+Once you selected the instance then you are ready for testing the Schema, you can input the required parameters for the Schema and hit on 'Try it Out' Button.  
+![Schema Test]({{ site.url }}{{ site.baseurl }}/assets/images/Schematest.PNG){: .align-center}  
+
+
+##### You can have a look at the [Quick Start Guide](https://github.com/ServiceComb/service-center/tree/master/frontend#quickstart-guide) to know about how to bring up the Management Console.

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/26d3b349/_posts/2017-10-28-service-centre-ui.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-28-service-centre-ui.md b/_posts/2017-10-28-service-centre-ui.md
deleted file mode 100644
index 81a1a6e..0000000
--- a/_posts/2017-10-28-service-centre-ui.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: "Service-Center Management UI Console"
-lang: en
-ref: service-center-ui
-permalink: /docs/service-center-ui/
-excerpt: "An introduction Service-Center Management Console"
-last_modified_at: 2017-10-30T09:18:43+08:00
-author: Asif Siddiqui
-tags: [service center]
-redirect_from:
-  - /theme-setup/
----
-
-Service-Center Management UI Console enables user to view the list of MicroServices registered in SC.
-Users can view the detailed information of their MicroServices, Instances and Schemas.
-Service-Center UI also offers a unique feature of testing the Schemas of their MicroServices from UI, Users 
-can also download the html client for their Schemas.
-
-### Preview of Management Console
-![Preview]({{ site.url }}{{ site.baseurl }}/assets/images/Service-Center-UI-Preview.gif){: .align-center}
-
-### Features
-Service-Center Management console offers very useful features which makes users easy to use and manage service-center.
-
-### Dashboard
-This is the place where you can get the overall information about the services which are registered in your service-center like total number of services, providers, consumers and total instances. You can also get a list of Services which based on their current status.  
-![Dashboard]({{ site.url }}{{ site.baseurl }}/assets/images/Dashboard.PNG){: .align-center}  
-
-
-
-### Micro-Service List
-This is the place where you can see the basic details of all the services which are registered in Service-Centre. You can see the details like MicroService Name, Application Name, Status, Version, Creation time and Instance count. You can also un-register the microservice from Operations Tab if there is no running instances for the microservice.  
-![ServiceList]({{ site.url }}{{ site.baseurl }}/assets/images/ServiceList.PNG){: .align-center}  
-
-
-### Instance Details
-This is the place where you can see all the current running instances for the MicroService, you can get the list of endpoints and theri protocols.  
-![InstanceList]({{ site.url }}{{ site.baseurl }}/assets/images/InstanceList.PNG){: .align-center}  
-
-
-### Provider List
-This is the place where you can get the list of all the providers for this MicroService.  
-![Provider List]({{ site.url }}{{ site.baseurl }}/assets/images/ProviderList.PNG){: .align-center}  
-
-
-### Consumer List
-This is the place where you can get the list of all the consumers for this MicroService  
-![Consumer List]({{ site.url }}{{ site.baseurl }}/assets/images/ConsumerList.PNG){: .align-center}  
-
-
-### Schema List
-This is the place where we can get the list of all the Schema's for your MicroService, here you get options of viewing the Schema in Swagger form or Test the Schema on some particular instance. Here you also get an option to Download the Schema file in Html Client form.  
-![Schema List]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaList.PNG){: .align-center}  
-
-For Viewing the Schema in Swagger from you can click on Test Schema button and you can view the completet details of Schema in Swagger form.  
-
-![View Swagger]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaView.PNG){: .align-center}
-
-If you wish to test the Schema on some particular Instance then you can click on Test Schema and select the instance on which you want to test the Schema and then select the endpoints for that instance.  
-![Select Instance]({{ site.url }}{{ site.baseurl }}/assets/images/SelectInstance.PNG){: .align-center}
-
-
-Once you selected the instance then you are ready for testing the Schema, you can input the required parameters for the Schema and hit on 'Try it Out' Button.  
-![Schema Test]({{ site.url }}{{ site.baseurl }}/assets/images/Schematest.PNG){: .align-center}  
-
-
-##### You can have a look at the [Quick Start Guide](https://github.com/ServiceComb/service-center/tree/master/frontend#quickstart-guide) to know about how to bring up the Management Console.


[26/51] incubator-servicecomb-website git commit: updated quick start images

Posted by jb...@apache.org.
updated quick start images

Signed-off-by: Eric Lee <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/576205cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/576205cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/576205cb

Branch: refs/heads/asf-site
Commit: 576205cb61733c975d845aa0fbba182c6f6d2815
Parents: 8b91b1a
Author: Eric Lee <li...@huawei.com>
Authored: Sun Nov 12 22:09:06 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Tue Nov 14 18:31:42 2017 +0800

----------------------------------------------------------------------
 _docs/cn/load-balance.md                    |   6 +++---
 _docs/cn/quick-start-bmi.md                 |   3 +--
 _docs/load-balance.md                       |   6 +++---
 _docs/quick-start-bmi.md                    |   3 +--
 assets/images/bmi-interface.png             | Bin 14711 -> 57307 bytes
 assets/images/flow-control-result.png       | Bin 14515 -> 52518 bytes
 assets/images/load-balance-result.png       | Bin 13402 -> 56794 bytes
 assets/images/service-management-result.png | Bin 17245 -> 47582 bytes
 8 files changed, 8 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/_docs/cn/load-balance.md
----------------------------------------------------------------------
diff --git a/_docs/cn/load-balance.md b/_docs/cn/load-balance.md
index 465a82f..f1c2b9d 100644
--- a/_docs/cn/load-balance.md
+++ b/_docs/cn/load-balance.md
@@ -23,12 +23,12 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 对 *体质指数计算器* 微服务进行水平扩展,使其运行实例数为2,即新增一个运行实例:
 
 ```bash
-mvn spring-boot:run -Drun.profiles=v2 -Drun.jvmArguments="-Dcse.rest.address=0.0.0.0:7778"
+mvn spring-boot:run -Drun.jvmArguments="-Dcse.rest.address=0.0.0.0:7778"
 ```
 
-为了使效果更明显,在此使用了v2版本的 *体质指数计算器* ,即仅计算体质指数的一半。而为了避免端口冲突,新的实例在另一个端口上运行。
+为了便于区分不同的运行实例,在体质指数计算器的实现中新增了返回实例ID和运行时间的接口,详情可查看[体质指数计算器的完整实现代码](https://github.com/ServiceComb/ServiceComb-Java-Chassis/tree/master/samples/bmi/calculator)。而为了避免端口冲突,新的实例在另一个端口上运行。
 
-此时点击 *Submit* 按钮就可以看到如下两个界面交替出现。
+此时点击 *Submit* 按钮就可以看到如下两个界面中的实例ID交替出现。
 
 ![负载均衡效果](/assets/images/load-balance-result.png){: .align-center}
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/_docs/cn/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start-bmi.md b/_docs/cn/quick-start-bmi.md
index 39188f5..1690c62 100644
--- a/_docs/cn/quick-start-bmi.md
+++ b/_docs/cn/quick-start-bmi.md
@@ -150,8 +150,7 @@ ServiceComb从0.4.0-SNAPSHOT版本之后新增了`spring-cloud-zuul`模块使能
 ```yaml
 zuul:
   routes:
-    calculator:
-      serviceId: calculator
+    calculator: /calculator/**
 
 # disable netflix eurkea since it's not used for service discovery
 ribbon:

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/_docs/load-balance.md
----------------------------------------------------------------------
diff --git a/_docs/load-balance.md b/_docs/load-balance.md
index 57f282c..cf3ecec 100644
--- a/_docs/load-balance.md
+++ b/_docs/load-balance.md
@@ -22,12 +22,12 @@ The simple embedded load balancer will be used by default. No extra configuratio
 
 Run one more *BMI calculator service* with the following command: 
 ```bash
-mvn spring-boot:run -Drun.profiles=v2 -Drun.jvmArguments="-Dcse.rest.address=0.0.0.0:7778"
+mvn spring-boot:run -Drun.jvmArguments="-Dcse.rest.address=0.0.0.0:7778"
 ```
 
-To better visualize the result, we use another version of *BMI calculator service* which calculates half of the BMI, namely v2. Besides, a different service port is needed to avoid port conflict.
+To better distinguish different running instances, we added a new interface that returns instance id in the implementation of BMI calculator, details can refer to [the implementation of BMI calculator](https://github.com/ServiceComb/ServiceComb-Java-Chassis/tree/master/samples/bmi/calculator). Besides, a different service port is needed to avoid port conflict.
 
-Now you can see the following figures shows up alternately by clicking the *Submit* button.
+Now you can see the instance id in the following figures shows up alternately by clicking the *Submit* button.
 
 ![Load balance result](/assets/images/load-balance-result.png){: .align-center}
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/_docs/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start-bmi.md b/_docs/quick-start-bmi.md
index c6a1cb7..b46d57e 100644
--- a/_docs/quick-start-bmi.md
+++ b/_docs/quick-start-bmi.md
@@ -150,8 +150,7 @@ Configure routing rules and service endpoint in `application.yaml`.
 ```yaml
 zuul:
   routes:
-    calculator:
-      serviceId: calculator
+    calculator: /calculator/**
 
 # disable netflix eurkea since it's not used for service discovery
 ribbon:

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/assets/images/bmi-interface.png
----------------------------------------------------------------------
diff --git a/assets/images/bmi-interface.png b/assets/images/bmi-interface.png
index b697fe3..88f944e 100644
Binary files a/assets/images/bmi-interface.png and b/assets/images/bmi-interface.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/assets/images/flow-control-result.png
----------------------------------------------------------------------
diff --git a/assets/images/flow-control-result.png b/assets/images/flow-control-result.png
index 4f34894..71f9409 100644
Binary files a/assets/images/flow-control-result.png and b/assets/images/flow-control-result.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/assets/images/load-balance-result.png
----------------------------------------------------------------------
diff --git a/assets/images/load-balance-result.png b/assets/images/load-balance-result.png
index 864f5bc..ca379ae 100644
Binary files a/assets/images/load-balance-result.png and b/assets/images/load-balance-result.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/576205cb/assets/images/service-management-result.png
----------------------------------------------------------------------
diff --git a/assets/images/service-management-result.png b/assets/images/service-management-result.png
index c3ad47e..c01ade8 100644
Binary files a/assets/images/service-management-result.png and b/assets/images/service-management-result.png differ


[06/51] incubator-servicecomb-website git commit: add slide

Posted by jb...@apache.org.
add slide

Signed-off-by: Zen Lin <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/b76908db
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/b76908db
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/b76908db

Branch: refs/heads/asf-site
Commit: b76908db5879155faeabb1979f12bbb5cb0e78c2
Parents: a00c8db
Author: Zen Lin <li...@huawei.com>
Authored: Sun Oct 29 19:59:31 2017 +0800
Committer: Eric Lee <li...@huawei.com>
Committed: Sun Oct 29 21:35:08 2017 +0800

----------------------------------------------------------------------
 .../slides/20171026/ServiceCombIntroduce1026.pdf | Bin 0 -> 1322666 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/b76908db/assets/slides/20171026/ServiceCombIntroduce1026.pdf
----------------------------------------------------------------------
diff --git a/assets/slides/20171026/ServiceCombIntroduce1026.pdf b/assets/slides/20171026/ServiceCombIntroduce1026.pdf
new file mode 100644
index 0000000..d7ef0f3
Binary files /dev/null and b/assets/slides/20171026/ServiceCombIntroduce1026.pdf differ


[09/51] incubator-servicecomb-website git commit: Fixed the version issue of service-center

Posted by jb...@apache.org.
Fixed the version issue of service-center


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/90fc85b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/90fc85b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/90fc85b2

Branch: refs/heads/asf-site
Commit: 90fc85b23d14595e384b9e8d1cad1ac2d1561c53
Parents: b48bc73
Author: Willem Jiang <ji...@huawei.com>
Authored: Wed Nov 1 13:30:46 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Wed Nov 1 13:30:46 2017 +0800

----------------------------------------------------------------------
 _pages/cn/home.md | 2 +-
 _pages/home.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/90fc85b2/_pages/cn/home.md
----------------------------------------------------------------------
diff --git a/_pages/cn/home.md b/_pages/cn/home.md
index 886d95d..4716126 100644
--- a/_pages/cn/home.md
+++ b/_pages/cn/home.md
@@ -12,7 +12,7 @@ excerpt: 'ServiceComb提供了一套包含代码框架生成,服务注册发
 <div class="excerpt-label">最新发布版本:</div>
 <div class="button-group">
 <a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.4.0" class="home-button btn--info">Java开发包 v0.4.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.3.0" class="home-button btn--info">服务中心 v0.3.0</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.0" class="home-button btn--info">服务中心 v0.4.0</a>
 <a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/90fc85b2/_pages/home.md
----------------------------------------------------------------------
diff --git a/_pages/home.md b/_pages/home.md
index 2499817..42b4586 100644
--- a/_pages/home.md
+++ b/_pages/home.md
@@ -11,7 +11,7 @@ excerpt: 'ServiceComb is a microservice framework with full functionality of ser
 <div class="excerpt-label">Latest release:</div>
 <div class="button-group">
 <a href="https://github.com/ServiceComb/java-chassis/releases/tag/0.4.0" class="home-button btn--info">Java SDK v0.4.0</a>
-<a href="https://github.com/ServiceComb/service-center/releases/tag/0.3.0" class="home-button btn--info">Service Center v0.3.0</a>
+<a href="https://github.com/ServiceComb/service-center/releases/tag/0.4.0" class="home-button btn--info">Service Center v0.4.0</a>
 <a href="https://github.com/ServiceComb/ServiceComb-Saga/releases/tag/saga-0.0.2" class="home-button btn--info">Saga v0.0.2</a>
 </div>'
 


[38/51] incubator-servicecomb-website git commit: JAV-529 removed blog

Posted by jb...@apache.org.
JAV-529 removed blog


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/2f96c066
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/2f96c066
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/2f96c066

Branch: refs/heads/asf-site
Commit: 2f96c06602105e175bdd5a74aeeadddb04960687
Parents: 8855a85
Author: seanyinx <se...@huawei.com>
Authored: Wed Nov 29 13:51:00 2017 +0800
Committer: seanyinx <se...@huawei.com>
Committed: Wed Nov 29 13:51:34 2017 +0800

----------------------------------------------------------------------
 _posts/cn/2017-11-27-dubbo-to-servicecomb.md | 319 ----------------------
 1 file changed, 319 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/2f96c066/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
deleted file mode 100644
index 2d93932..0000000
--- a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
+++ /dev/null
@@ -1,319 +0,0 @@
----
-title: "Dubbo to ServiceComb 迁移指南"
-lang: cn
-ref: dubbo_to_servicecomb
-permalink: /cn/docs/dubbo_to_servicecomb/
-excerpt: "Dubbo to ServiceComb 迁移指南"
-last_modified_at: 2017-11-27T11:08:00+08:00
-author: Sean Yin
-redirect_from:
-  - /theme-setup/
----
-
-Dubbo和Java chassis底层都使用了Spring的依赖注入和bean管理系统,所以使用Dubbo的服务迁移到ServiceComb工作量较小,
-主要改动在依赖和配置方面。
-
-本文示例代码可在[Java chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis/tree/master/samples)中获取。
-
-## 服务提供方
-### 替换依赖
-将对dubbo的依赖替换为对Java chassis的依赖
-
-Dubbo
-```xml
-  <dependency>
-    <groupId>com.alibaba</groupId>
-    <artifactId>dubbo</artifactId>
-    <version>${dubbo.version}</version>
-  </dependency>
-```
-
-Java chassis
-```xml
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>io.servicecomb</groupId>
-				<artifactId>java-chassis-dependencies</artifactId>
-				<version>${java.chassis.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-	
-	<dependencies>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>transport-highway</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>transport-rest-vertx</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>provider-pojo</artifactId>
-    </dependency>
-  </dependencies>
-```
-
-### 替换服务接口注释
-以 `@Service` 注释方式暴露的服务接口,用 `@RpcSchema` 替代
-
-Dubbo
-```java
-import com.alibaba.dubbo.config.annotation.Service;
-
-@Service
-public class SomeServiceImpl implements SomeService {
-  // ...
-}
-```
-
-Java chassis
-```java
-@RpcSchema(schemaId = "someServiceEndpoint")
-public class SomeServiceImpl implements SomeService {
-  // ...
-}
-```
-
-### 修改提供方启动入口
-
-Dubbo
-```java
-public class ProviderMain
-{
-
-	public static void main(String[] args) throws Exception
-	{
-		@SuppressWarnings(
-		{ "resource", "unused" })
-		ApplicationContext context = new ClassPathXmlApplicationContext("conf/applicationContext.xml");
-		System.out.println("Dubbo provider started successfully...");
-
-		System.in.read();
-	}
-}
-```
-
-Java chassis
-```java
-public class ProviderMain
-{
-
-	public static void main(String[] args) throws Exception
-	{
-		Log4jUtils.init();
-		BeanUtils.init();
-
-		System.out.println("ServiceComb provider started successfully...");
-	}
-}
-```
-
-### 修改服务提供方配置
-Dubbo服务通过一个XML文件同时配置了服务接口、服务注册中心地址、服务监听端口等所有内容。
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
-	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
-	<dubbo:application name="provider-service" />
-
-	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
-
-	<dubbo:protocol name="dubbo" port="20880" />
-
-	<dubbo:annotation package="io.servicecomb.demo" />
-
-  <!-- 以XML配置方式暴露的服务 -->
-	<dubbo:service interface="io.servicecomb.demo.api.AnotherService" ref="anotherServiceImpl" />
-	<bean id="anotherServiceImpl" class="io.servicecomb.demo.provider.AnotherServiceImpl" />
-
-</beans>
-```
-
-Java chassis也同样提供了以XML文件暴露服务接口的方式,但其他服务配置则通过 `microservice.yaml` 文件提供。 
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
-	xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc"
-	xmlns:context="http://www.springframework.org/schema/context"
-	xsi:schemaLocation="
-		http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
-		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
-		http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
-
-  <!-- 以XML配置方式暴露的服务 -->
-	<cse:rpc-schema schema-id="anotherServiceEndpoint" implementation="io.servicecomb.demo.provider.AnotherServiceImpl"/>
-</beans>
-```
-
-```yaml
-APPLICATION_ID: my-application
-service_description:
-  name: service-provider
-  version: 0.0.1
-cse:
-  service:
-    registry:
-      address: http://127.0.0.1:30100 # 服务注册中心地址
-  rest:
-    address: 0.0.0.0:8080 # 服务REST端口
-```
-
-## 服务消费方
-### 替换依赖
-将对Dubbo的依赖替换为对Java chassis的依赖
-
-Dubbo
-```xml
-  <dependency>
-    <groupId>com.alibaba</groupId>
-    <artifactId>dubbo</artifactId>
-    <version>${dubbo.version}</version>
-  </dependency>
-```
-
-Java chassis
-```xml
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>io.servicecomb</groupId>
-				<artifactId>java-chassis-dependencies</artifactId>
-				<version>${java.chassis.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-	
-	<dependencies>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>transport-highway</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>transport-rest-vertx</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>provider-pojo</artifactId>
-    </dependency>
-  </dependencies>
-```
-
-### 修改消费方启动入口
-Dubbo
-```java
-public class ConsumerMain
-{
-
-	public static void main(String[] args) throws Exception
-	{
-		@SuppressWarnings(
-		{ "resource", "unused" })
-		ApplicationContext context = new ClassPathXmlApplicationContext("conf/applicationContext.xml");
-		System.out.println("Dubbo Consumer started successfully...");
-
-		System.in.read();
-	}
-}
-```
-
-Java chassis
-```java
-public class ConsumerMain
-{
-
-	public static void main(String[] args) throws Exception
-	{
-		Log4jUtils.init();
-		BeanUtils.init();
-
-		System.out.println("ServiceComb Consumer started successfully...");
-	}
-}
-```
-
-### 服务异步调用
-Dubbo
-```java
-  SomeService someService = (SomeService) context.getBean("someServiceRef");
-  String hello = someService.sayHello("world");
-  Future<String> future = RpcContext.getContext().getFuture();
-  return future.get();
-```
-
-Java chassis
-```java
-  ApplicationContext context = BeanUtils.getContext();
-  SomeService someService = (SomeService) context.getBean("someServiceRef");
-  
-  CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> someService.sayHello("world"));
-  return future.get();
-```
-
-### 修改服务提供方配置
-Dubbo服务通过一个XML文件同时配置了远程服务提供方接口、服务注册中心地址、服务监听端口等所有内容。
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
-	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
-	<dubbo:application name="consumer-service" />
-
-	<dubbo:protocol name="dubbo" port="20880"/>
-	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
-
-	<dubbo:reference id="someServiceRef"
-		interface="io.servicecomb.demo.api.SomeService"
-		async="true" timeout="30000" />
-
-	<dubbo:reference id="anotherServiceRef"
-		interface="io.servicecomb.demo.api.AnotherService"
-		async="true" timeout="30000" />
-</beans>
-```
-
-Java chassis也同样提供了以XML文件引用远程服务提供方接口的方式,但其他服务配置则通过 `microservice.yaml` 文件提供。
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
-  xmlns:util="http://www.springframework.org/schema/util" xmlns:cse="http://www.huawei.com/schema/paas/cse/rpc"
-  xmlns:context="http://www.springframework.org/schema/context"
-  xsi:schemaLocation="
-		http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
-		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
-		http://www.huawei.com/schema/paas/cse/rpc classpath:META-INF/spring/spring-paas-cse-rpc.xsd">
-
-
-  <cse:rpc-reference id="someServiceRef" microservice-name="service-provider"
-    schema-id="someServiceEndpoint" interface="io.servicecomb.demo.api.SomeService"/>
-    
-  <cse:rpc-reference id="anotherServiceRef" microservice-name="service-provider"
-    schema-id="anotherServiceEndpoint" interface="io.servicecomb.demo.api.AnotherService"/>
-</beans>
-```
-
-```yaml
-APPLICATION_ID: my-application
-service_description:
-  name: service-consumer
-  version: 0.0.1
-cse:
-  service:
-    registry:
-      address: http://127.0.0.1:30100
-```


[16/51] incubator-servicecomb-website git commit: 添加 allowCrossApp

Posted by jb...@apache.org.
添加 allowCrossApp

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/4df516f7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/4df516f7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/4df516f7

Branch: refs/heads/asf-site
Commit: 4df516f7bdcb1c36db417ba4857899e411064529
Parents: 225047e
Author: LyonJack <56...@qq.com>
Authored: Thu Nov 2 10:46:27 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:10:24 2017 -0700

----------------------------------------------------------------------
 _users/cn/service-definition.md | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4df516f7/_users/cn/service-definition.md
----------------------------------------------------------------------
diff --git a/_users/cn/service-definition.md b/_users/cn/service-definition.md
index 418f53e..8397f00 100644
--- a/_users/cn/service-definition.md
+++ b/_users/cn/service-definition.md
@@ -44,6 +44,7 @@ service_description: #服务描述
   name: helloServer #微服务名称
   version: 0.0.1 #服务版本号
   properties: #元数据
+    allowCrossApp: false
     key1: value1
     key2: value2
   propertyExtentedClass: io.servicecomb.serviceregistry.MicroServicePropertyExtendedStub


[37/51] incubator-servicecomb-website git commit: added metrics documentation

Posted by jb...@apache.org.
added metrics documentation

Signed-off-by: zhengyangyong <ya...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/8855a853
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/8855a853
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/8855a853

Branch: refs/heads/asf-site
Commit: 8855a85358bf53c22bbf82f5fbd3db1db949bcf9
Parents: 62ec59c
Author: zhengyangyong <ya...@huawei.com>
Authored: Wed Nov 29 12:05:26 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Wed Nov 29 12:46:33 2017 +0800

----------------------------------------------------------------------
 _data/navigation.yml             |   6 +++
 _users/Metrics.md                |  73 ++++++++++++++++++++++++++++++++++
 _users/cn/Metrics.md             |  73 ++++++++++++++++++++++++++++++++++
 assets/images/metrics-output.png | Bin 0 -> 69354 bytes
 4 files changed, 152 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8855a853/_data/navigation.yml
----------------------------------------------------------------------
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 97fce9f..67fc741 100755
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -92,6 +92,9 @@ t:
           - title: Zuul
             url: /users/edging-service/zuul/
 
+      - title: Metrics
+        url: /users/metrics/
+
       - title: Deployment
         children:
           - title: Run Mode
@@ -208,6 +211,9 @@ t:
           - title: 使用Zuul做边缘服务
             url: /cn/users/edging-service/zuul/
 
+      - title: 监控
+        url: /cn/users/metrics/
+
       - title: 部署
         children:
           - title: 运行模式

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8855a853/_users/Metrics.md
----------------------------------------------------------------------
diff --git a/_users/Metrics.md b/_users/Metrics.md
new file mode 100644
index 0000000..bd96e71
--- /dev/null
+++ b/_users/Metrics.md
@@ -0,0 +1,73 @@
+---
+title: "Metrics Monitor"
+lang: en
+ref: metrics
+permalink: /users/metrics/
+excerpt: "Metrics Monitor"
+last_modified_at: 2017-11-29T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+微服务框架从0.4.1版本开始支持监控功能Metrics,请注意这个功能还处于开发(Preview)阶段,请不要部署到生产环境,并且我们未来会做较大的调整,更多讨论会持续发布在[Google Group](https://groups.google.com/forum/#!forum/servicecomb-developers)中。
+## 如何配置
+请在microservice.yaml中添加如下配置项:
+```yaml
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    #metrics数据采集时间(同样是写文件间隔),单位秒
+    polltime: 5
+    #如果metric是浮点数,输出结果保留几位小数,默认为1
+    round_places: 1
+    file:
+      #是否启用文件输出
+      enabled: true
+      #输出文件的根目录
+      root_path: D:/Temp
+      #metrics文件的前缀
+      name_prefix: demo.demoService
+      #metrics文件Rolling最大大小,默认10MB,例如10KB,10MB,10GB
+      max_rolling_size: 10MB
+      #metrics文件Rolling文件保存数量,默认10个
+      max_rolling_count: 10
+```
+
+## 注意事项
+* 如果使用ServiceComb Spring Boot Start快速构建项目,需要排除log4j-over-slf4j依赖
+   ```xml
+   <dependency>
+     <groupId>org.springframework.boot</groupId>
+     <artifactId>spring-boot-starter</artifactId>
+     <!--Metric使用log4j输出,屏蔽掉spring-boot-starter中的log4j-over-slf4j-->
+     <exclusions>
+       <exclusion>
+         <groupId>org.slf4j</groupId>
+         <artifactId>log4j-over-slf4j</artifactId>
+       </exclusion>
+     </exclusions>
+   </dependency>
+   ```
+
+* 需要在provider治理链中添加bizkeeper-provider,否则TPS和Latency无数据
+   ```yaml
+   APPLICATION_ID: demo
+   service_description:
+     name: demoService
+     version: 0.0.1
+   cse:
+     handler:
+       chain:
+         Provider:
+           default: bizkeeper-provider
+   ```
+
+## 文件输出
+每一个文件就是一个微服务示例级别的metrics数据输出:
+
+![Metrics图片](/assets/images/metrics-output.png)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8855a853/_users/cn/Metrics.md
----------------------------------------------------------------------
diff --git a/_users/cn/Metrics.md b/_users/cn/Metrics.md
new file mode 100644
index 0000000..d3436e6
--- /dev/null
+++ b/_users/cn/Metrics.md
@@ -0,0 +1,73 @@
+---
+title: "Metrics监控"
+lang: cn
+ref: metrics
+permalink: /cn/users/metrics/
+excerpt: "Metrics监控"
+last_modified_at: 2017-11-29T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+微服务框架从0.4.1版本开始支持监控功能Metrics,请注意这个功能还处于开发(Preview)阶段,请不要部署到生产环境,并且我们未来会做较大的调整,更多讨论会持续发布在[Google Group](https://groups.google.com/forum/#!forum/servicecomb-developers)中。
+## 如何配置
+请在microservice.yaml中添加如下配置项:
+```yaml
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    #metrics数据采集时间(同样是写文件间隔),单位秒
+    polltime: 5
+    #如果metric是浮点数,输出结果保留几位小数,默认为1
+    round_places: 1
+    file:
+      #是否启用文件输出
+      enabled: true
+      #输出文件的根目录
+      root_path: D:/Temp
+      #metrics文件的前缀
+      name_prefix: demo.demoService
+      #metrics文件Rolling最大大小,默认10MB,例如10KB,10MB,10GB
+      max_rolling_size: 10MB
+      #metrics文件Rolling文件保存数量,默认10个
+      max_rolling_count: 10
+```
+
+## 注意事项
+* 如果使用ServiceComb Spring Boot Start快速构建项目,需要排除log4j-over-slf4j依赖
+   ```xml
+   <dependency>
+     <groupId>org.springframework.boot</groupId>
+     <artifactId>spring-boot-starter</artifactId>
+     <!--Metric使用log4j输出,屏蔽掉spring-boot-starter中的log4j-over-slf4j-->
+     <exclusions>
+       <exclusion>
+         <groupId>org.slf4j</groupId>
+         <artifactId>log4j-over-slf4j</artifactId>
+       </exclusion>
+     </exclusions>
+   </dependency>
+   ```
+
+* 需要在provider治理链中添加bizkeeper-provider,否则TPS和Latency无数据
+   ```yaml
+   APPLICATION_ID: demo
+   service_description:
+     name: demoService
+     version: 0.0.1
+   cse:
+     handler:
+       chain:
+         Provider:
+           default: bizkeeper-provider
+   ```
+
+## 文件输出
+每一个文件就是一个微服务示例级别的metrics数据输出:
+
+![Metrics图片](/assets/images/metrics-output.png)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/8855a853/assets/images/metrics-output.png
----------------------------------------------------------------------
diff --git a/assets/images/metrics-output.png b/assets/images/metrics-output.png
new file mode 100644
index 0000000..0f629b2
Binary files /dev/null and b/assets/images/metrics-output.png differ


[49/51] incubator-servicecomb-website git commit: Updated the website information for ServiceComb.

Posted by jb...@apache.org.
Updated the website information for ServiceComb.


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/a95a8d26
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/a95a8d26
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/a95a8d26

Branch: refs/heads/asf-site
Commit: a95a8d263a16dfc6642b2b47541dcc95d8af7116
Parents: 9f0e753
Author: Willem Jiang <ji...@huawei.com>
Authored: Sun Dec 10 21:13:27 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Sun Dec 10 21:13:27 2017 +0800

----------------------------------------------------------------------
 _config.yml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a95a8d26/_config.yml
----------------------------------------------------------------------
diff --git a/_config.yml b/_config.yml
index 6a25b62..b2dfb61 100644
--- a/_config.yml
+++ b/_config.yml
@@ -6,13 +6,14 @@
 # `jekyll serve`. If you change this file, please restart the server process.
 
 # Site Settings
-locale                   : "zh-CN"
-title                    : "ServiceComb"
+locale                   : "en"
+title                    : "Apache incubator ServiceComb"
 title_separator          : "-"
-name                     : "ServiceComb" # &name is a YAML anchor which can be *referenced later
+name                     : "Apache incubator ServiceComb" # &name is a YAML anchor which can be *referenced later
 description              : "The homepage of ServiceComb"
 url                      :
 baseurl                  : # the subpath of your site, e.g. "/blog"
+destination              : content
 repository               : "ServiceComb/servicesomb.github.io"
 teaser                   : # path of fallback teaser image, e.g. "/assets/images/500x300.png"
 # breadcrumbs            : false # true, false (default)


[30/51] incubator-servicecomb-website git commit: 修改所有相关文档8888端口为8889

Posted by jb...@apache.org.
修改所有相关文档8888端口为8889


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/c8e4bedc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/c8e4bedc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/c8e4bedc

Branch: refs/heads/asf-site
Commit: c8e4bedc568da6afa4705cdae69d46b427cd1283
Parents: 4c9c876
Author: arthur <15...@163.com>
Authored: Tue Nov 21 10:48:40 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Tue Nov 21 17:23:17 2017 +0800

----------------------------------------------------------------------
 _docs/cn/distributed-tracing.md | 2 +-
 _docs/cn/flow-control.md        | 2 +-
 _docs/cn/quick-start-bmi.md     | 2 +-
 _docs/cn/quick-start.md         | 2 +-
 _docs/cn/service-management.md  | 2 +-
 _docs/distributed-tracing.md    | 2 +-
 _docs/flow-control.md           | 2 +-
 _docs/quick-start-bmi.md        | 2 +-
 _docs/quick-start.md            | 2 +-
 _docs/service-management.md     | 2 +-
 10 files changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/cn/distributed-tracing.md
----------------------------------------------------------------------
diff --git a/_docs/cn/distributed-tracing.md b/_docs/cn/distributed-tracing.md
index c9db557..efe81b1 100644
--- a/_docs/cn/distributed-tracing.md
+++ b/_docs/cn/distributed-tracing.md
@@ -66,7 +66,7 @@ last_modified_at: 2017-09-03T10:01:43-04:00
 
 ## 验证
 
-1. 访问 <a>http://localhost:8888</a> ,在身高和体重栏处输入正数,并点击 *Submit* 按钮。
+1. 访问 <a>http://localhost:8889</a> ,在身高和体重栏处输入正数,并点击 *Submit* 按钮。
 
 2. 访问 <a>http://localhost:9411</a> ,查看分布式调用追踪情况,可得下方界面。
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/cn/flow-control.md
----------------------------------------------------------------------
diff --git a/_docs/cn/flow-control.md b/_docs/cn/flow-control.md
index f44d7de..5ac5c3c 100644
--- a/_docs/cn/flow-control.md
+++ b/_docs/cn/flow-control.md
@@ -48,7 +48,7 @@ mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=qps
 
 ## 验证 
 
-访问 <a>http://localhost:8888</a>,在身高和体重的输入框中输入正数,尝试在1秒内多次点击 *Submit* 按钮,此时就能看到网页由左侧的正常的界面变成了右侧提示由于流控受限而请求被拒的界面。
+访问 <a>http://localhost:8889</a>,在身高和体重的输入框中输入正数,尝试在1秒内多次点击 *Submit* 按钮,此时就能看到网页由左侧的正常的界面变成了右侧提示由于流控受限而请求被拒的界面。
 
 ![流量控制效果图](/assets/images/flow-control-result.png){: .align-center}
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/cn/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start-bmi.md b/_docs/cn/quick-start-bmi.md
index 1690c62..3a72caa 100644
--- a/_docs/cn/quick-start-bmi.md
+++ b/_docs/cn/quick-start-bmi.md
@@ -158,7 +158,7 @@ ribbon:
     enabled: false
 
 server:
-  port: 8888
+  port: 8889
 ```
 在 `microservice.yaml` 文件中配置网关服务的信息和服务注册中心的地址。
 ```yaml

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/cn/quick-start.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start.md b/_docs/cn/quick-start.md
index 21f90ea..05db93e 100644
--- a/_docs/cn/quick-start.md
+++ b/_docs/cn/quick-start.md
@@ -60,7 +60,7 @@ docker run -d -p 30100:30100 servicecomb/service-center:latest
    cd webapp; mvn spring-boot:run
    ```
 
-3. 验证服务。微服务启动完毕后,即可通过 <a>http://localhost:8888</a> 访问 **体质指数** 应用,届时将能看到如下界面,并可输入您的身高和体重信息验证服务是否正常运行。
+3. 验证服务。微服务启动完毕后,即可通过 <a>http://localhost:8889</a> 访问 **体质指数** 应用,届时将能看到如下界面,并可输入您的身高和体重信息验证服务是否正常运行。
 
    ![体质指数应用运行界面](/assets/images/bmi-interface.png){: .align-center}
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/cn/service-management.md
----------------------------------------------------------------------
diff --git a/_docs/cn/service-management.md b/_docs/cn/service-management.md
index 2a198b1..924bc4d 100644
--- a/_docs/cn/service-management.md
+++ b/_docs/cn/service-management.md
@@ -50,7 +50,7 @@ mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=biz
 
 ## 验证
 
-1. 使服务进入熔断状态。访问 <a>http://localhost:8888</a>,在身高或体重的输入框中输入一个负数,连续点击三次或以上 *Submit* 按钮,此时在网页下方能看到类似左图的界面。
+1. 使服务进入熔断状态。访问 <a>http://localhost:8889</a>,在身高或体重的输入框中输入一个负数,连续点击三次或以上 *Submit* 按钮,此时在网页下方能看到类似左图的界面。
 
 2. 验证服务处于熔断状态。在身高和体重的输入框中输入正数,再次点击 *Submit* 按钮,此时看到的界面依然是类似左图的界面。同时在 *体质指数计算器* 运行日志也能看到调用不再抛出异常,而是出现类似 `fallback called` 的日志。
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/distributed-tracing.md
----------------------------------------------------------------------
diff --git a/_docs/distributed-tracing.md b/_docs/distributed-tracing.md
index 3efe333..91ace81 100644
--- a/_docs/distributed-tracing.md
+++ b/_docs/distributed-tracing.md
@@ -66,7 +66,7 @@ The above configurations have already set up in the code. All you need to do is
 
 ## Verification
 
-1. Visit <a>http://localhost:8888</a> . Input a positive height and weight and then click *Submit* button.
+1. Visit <a>http://localhost:8889</a> . Input a positive height and weight and then click *Submit* button.
 
 2. Visit <a>http://localhost:9411</a> to checkout the status of distributed tracing and get the following figure.
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/flow-control.md
----------------------------------------------------------------------
diff --git a/_docs/flow-control.md b/_docs/flow-control.md
index 61f472c..d3141ec 100644
--- a/_docs/flow-control.md
+++ b/_docs/flow-control.md
@@ -48,7 +48,7 @@ mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=qps
 
 ## Verification
 
-Visit <a>http://localhost:8888</a>. Input a positive height and weight and then click *Submit* button twice or more in less than one second. You will see the web page change from the left one to the right one.
+Visit <a>http://localhost:8889</a>. Input a positive height and weight and then click *Submit* button twice or more in less than one second. You will see the web page change from the left one to the right one.
 
 ![Flow control result](/assets/images/flow-control-result.png){: .align-center}
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/quick-start-bmi.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start-bmi.md b/_docs/quick-start-bmi.md
index b46d57e..e1f4622 100644
--- a/_docs/quick-start-bmi.md
+++ b/_docs/quick-start-bmi.md
@@ -158,7 +158,7 @@ ribbon:
     enabled: false
 
 server:
-  port: 8888
+  port: 8889
 ```
 Enable service discovery with zuul by putting the application information and service center address in `microservice.yaml`.
 ```yaml

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/quick-start.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start.md b/_docs/quick-start.md
index 97e22a2..6591910 100644
--- a/_docs/quick-start.md
+++ b/_docs/quick-start.md
@@ -61,7 +61,7 @@ Note that the dotted lines indicate the process of service registration and disc
    cd webapp; mvn spring-boot:run
    ```
 
-3. Verify the application. Visit <a>http://localhost:8888</a> in browser. Then input your height and weight to verify.
+3. Verify the application. Visit <a>http://localhost:8889</a> in browser. Then input your height and weight to verify.
 
    ![BMI user interface](/assets/images/bmi-interface.png){: .align-center}
 

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/c8e4bedc/_docs/service-management.md
----------------------------------------------------------------------
diff --git a/_docs/service-management.md b/_docs/service-management.md
index 5a8930a..5e3e416 100644
--- a/_docs/service-management.md
+++ b/_docs/service-management.md
@@ -50,7 +50,7 @@ mvn spring-boot:run -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=biz
 
 ## Verification
 
-1. Circuit-break microservices. Visit <a>http://localhost:8888</a>, enter a negative height or weight and click the *Submit* button three times or more continuously. Then the web page should look like the left one in fig-1.
+1. Circuit-break microservices. Visit <a>http://localhost:8889</a>, enter a negative height or weight and click the *Submit* button three times or more continuously. Then the web page should look like the left one in fig-1.
 
 2. Verify serivces are in circuit-break status. Enter a positive height and weight, then click *Submit* button. The web page still looks like the left one in fig-1. In the meanwhile, no exceptions show in the log of *BMI calculator service*. Instead it shows lines contain "fallback called". 
 


[14/51] incubator-servicecomb-website git commit: Add blog for SC UI

Posted by jb...@apache.org.
Add blog for SC UI

Update 2017-10-28-service-centre-ui.md


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/35d1cbe2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/35d1cbe2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/35d1cbe2

Branch: refs/heads/asf-site
Commit: 35d1cbe2f4ebfee81c926710598e004d6e4e5974
Parents: 90fc85b
Author: Mohammad Asif Siddiqui <mo...@huawei.com>
Authored: Fri Oct 27 11:57:57 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:08:14 2017 -0700

----------------------------------------------------------------------
 _posts/2017-10-28-service-centre-ui.md      |  67 +++++++++++++++++++++++
 _posts/cn/2017-10-28-service-centre-ui.md   |  60 ++++++++++++++++++++
 assets/images/ConsumerList.PNG              | Bin 0 -> 79573 bytes
 assets/images/Dashboard.PNG                 | Bin 0 -> 103902 bytes
 assets/images/InstanceList.PNG              | Bin 0 -> 81525 bytes
 assets/images/ProviderList.PNG              | Bin 0 -> 77030 bytes
 assets/images/SchemaList.PNG                | Bin 0 -> 80818 bytes
 assets/images/SchemaView.PNG                | Bin 0 -> 89128 bytes
 assets/images/Schematest.PNG                | Bin 0 -> 104363 bytes
 assets/images/SelectInstance.PNG            | Bin 0 -> 93174 bytes
 assets/images/Service-Center-UI-Preview.gif | Bin 0 -> 616202 bytes
 assets/images/ServiceList.PNG               | Bin 0 -> 108323 bytes
 12 files changed, 127 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/_posts/2017-10-28-service-centre-ui.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-28-service-centre-ui.md b/_posts/2017-10-28-service-centre-ui.md
new file mode 100644
index 0000000..81a1a6e
--- /dev/null
+++ b/_posts/2017-10-28-service-centre-ui.md
@@ -0,0 +1,67 @@
+---
+title: "Service-Center Management UI Console"
+lang: en
+ref: service-center-ui
+permalink: /docs/service-center-ui/
+excerpt: "An introduction Service-Center Management Console"
+last_modified_at: 2017-10-30T09:18:43+08:00
+author: Asif Siddiqui
+tags: [service center]
+redirect_from:
+  - /theme-setup/
+---
+
+Service-Center Management UI Console enables user to view the list of MicroServices registered in SC.
+Users can view the detailed information of their MicroServices, Instances and Schemas.
+Service-Center UI also offers a unique feature of testing the Schemas of their MicroServices from UI, Users 
+can also download the html client for their Schemas.
+
+### Preview of Management Console
+![Preview]({{ site.url }}{{ site.baseurl }}/assets/images/Service-Center-UI-Preview.gif){: .align-center}
+
+### Features
+Service-Center Management console offers very useful features which makes users easy to use and manage service-center.
+
+### Dashboard
+This is the place where you can get the overall information about the services which are registered in your service-center like total number of services, providers, consumers and total instances. You can also get a list of Services which based on their current status.  
+![Dashboard]({{ site.url }}{{ site.baseurl }}/assets/images/Dashboard.PNG){: .align-center}  
+
+
+
+### Micro-Service List
+This is the place where you can see the basic details of all the services which are registered in Service-Centre. You can see the details like MicroService Name, Application Name, Status, Version, Creation time and Instance count. You can also un-register the microservice from Operations Tab if there is no running instances for the microservice.  
+![ServiceList]({{ site.url }}{{ site.baseurl }}/assets/images/ServiceList.PNG){: .align-center}  
+
+
+### Instance Details
+This is the place where you can see all the current running instances for the MicroService, you can get the list of endpoints and theri protocols.  
+![InstanceList]({{ site.url }}{{ site.baseurl }}/assets/images/InstanceList.PNG){: .align-center}  
+
+
+### Provider List
+This is the place where you can get the list of all the providers for this MicroService.  
+![Provider List]({{ site.url }}{{ site.baseurl }}/assets/images/ProviderList.PNG){: .align-center}  
+
+
+### Consumer List
+This is the place where you can get the list of all the consumers for this MicroService  
+![Consumer List]({{ site.url }}{{ site.baseurl }}/assets/images/ConsumerList.PNG){: .align-center}  
+
+
+### Schema List
+This is the place where we can get the list of all the Schema's for your MicroService, here you get options of viewing the Schema in Swagger form or Test the Schema on some particular instance. Here you also get an option to Download the Schema file in Html Client form.  
+![Schema List]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaList.PNG){: .align-center}  
+
+For Viewing the Schema in Swagger from you can click on Test Schema button and you can view the completet details of Schema in Swagger form.  
+
+![View Swagger]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaView.PNG){: .align-center}
+
+If you wish to test the Schema on some particular Instance then you can click on Test Schema and select the instance on which you want to test the Schema and then select the endpoints for that instance.  
+![Select Instance]({{ site.url }}{{ site.baseurl }}/assets/images/SelectInstance.PNG){: .align-center}
+
+
+Once you selected the instance then you are ready for testing the Schema, you can input the required parameters for the Schema and hit on 'Try it Out' Button.  
+![Schema Test]({{ site.url }}{{ site.baseurl }}/assets/images/Schematest.PNG){: .align-center}  
+
+
+##### You can have a look at the [Quick Start Guide](https://github.com/ServiceComb/service-center/tree/master/frontend#quickstart-guide) to know about how to bring up the Management Console.

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/_posts/cn/2017-10-28-service-centre-ui.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-28-service-centre-ui.md b/_posts/cn/2017-10-28-service-centre-ui.md
new file mode 100644
index 0000000..79d8e75
--- /dev/null
+++ b/_posts/cn/2017-10-28-service-centre-ui.md
@@ -0,0 +1,60 @@
+---
+title: "Service-Center Management UI Console"
+lang: cn
+ref: service-center-ui
+permalink: /docs/service-center-ui/
+excerpt: "An introduction Service-Center Management Console"
+last_modified_at: 2017-10-30T09:18:43+08:00
+author: Asif Siddiqui
+tags: [service center]
+redirect_from:
+  - /theme-setup/
+---
+
+Service-Center Management UI Console enables user to view the list of MicroServices registered in SC.
+Users can view the detailed information of their MicroServices, Instances and Schemas.
+Service-Center UI also offers a unique feature of testing the Schemas of their MicroServices from UI, Users 
+can also download the html client for their Schemas.
+
+### Preview of Management Console
+![Preview]({{ site.url }}{{ site.baseurl }}/assets/images/Service-Center-UI-Preview.gif){: .align-center}
+
+### Features
+Service-Center Management console offers very useful features which makes users easy to use and manage service-center.
+
+#### Dashboard
+This is the place where you can get the overall information about the services which are registered in your service-center like total number of services, providers, consumers and total instances. You can also get a list of Services which based on their current status.  
+![Dashboard]({{ site.url }}{{ site.baseurl }}/assets/images/Dashboard.PNG){: .align-center}
+
+
+#### Micro-Service List
+This is the place where you can see the basic details of all the services which are registered in Service-Centre. You can see the details like MicroService Name, Application Name, Status, Version, Creation time and Instance count. You can also un-register the microservice from Operations Tab if there is no running instances for the microservice.  
+![ServiceList]({{ site.url }}{{ site.baseurl }}/assets/images/ServiceList.PNG){: .align-center}
+
+#### Instance Details
+This is the place where you can see all the current running instances for the MicroService, you can get the list of endpoints and theri protocols.  
+![InstanceList]({{ site.url }}{{ site.baseurl }}/assets/images/InstanceList.PNG){: .align-center}
+
+
+#### Provider List
+This is the place where you can get the list of all the providers for this MicroService.  
+![Provider List]({{ site.url }}{{ site.baseurl }}/assets/images/ProviderList.PNG){: .align-center}
+
+#### Consumer List
+This is the place where you can get the list of all the consumers for this MicroService  
+![Consumer List]({{ site.url }}{{ site.baseurl }}/assets/images/ConsumerList.PNG){: .align-center}
+
+#### Schema List
+This is the place where we can get the list of all the Schema's for your MicroService, here you get options of viewing the Schema in Swagger form or Test the Schema on some particular instance. Here you also get an option to Download the Schema file in Html Client form.  
+![Schema List]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaList.PNG){: .align-center}
+
+For Viewing the Schema in Swagger from you can click on Test Schema button and you can view the completet details of Schema in Swagger form.  
+![View Swagger]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaView.PNG){: .align-center}
+
+If you wish to test the Schema on some particular Instance then you can click on Test Schema and select the instance on which you want to test the Schema and then select the endpoints for that instance.  
+![Select Instance]({{ site.url }}{{ site.baseurl }}/assets/images/SelectInstance.PNG){: .align-center}
+
+Once you selected the instance then you are ready for testing the Schema, you can input the required parameters for the Schema and hit on 'Try it Out' Button.  
+![Schema Test]({{ site.url }}{{ site.baseurl }}/assets/images/Schematest.PNG){: .align-center}  
+
+##### You can have a look at the [Quick Start Guide](https://github.com/ServiceComb/service-center/tree/master/frontend#quickstart-guide) to know about how to bring up the Management Console.

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/ConsumerList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/ConsumerList.PNG b/assets/images/ConsumerList.PNG
new file mode 100644
index 0000000..a517995
Binary files /dev/null and b/assets/images/ConsumerList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/Dashboard.PNG
----------------------------------------------------------------------
diff --git a/assets/images/Dashboard.PNG b/assets/images/Dashboard.PNG
new file mode 100644
index 0000000..d33ef37
Binary files /dev/null and b/assets/images/Dashboard.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/InstanceList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/InstanceList.PNG b/assets/images/InstanceList.PNG
new file mode 100644
index 0000000..45b5897
Binary files /dev/null and b/assets/images/InstanceList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/ProviderList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/ProviderList.PNG b/assets/images/ProviderList.PNG
new file mode 100644
index 0000000..8db0fd5
Binary files /dev/null and b/assets/images/ProviderList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/SchemaList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/SchemaList.PNG b/assets/images/SchemaList.PNG
new file mode 100644
index 0000000..70245de
Binary files /dev/null and b/assets/images/SchemaList.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/SchemaView.PNG
----------------------------------------------------------------------
diff --git a/assets/images/SchemaView.PNG b/assets/images/SchemaView.PNG
new file mode 100644
index 0000000..65769b9
Binary files /dev/null and b/assets/images/SchemaView.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/Schematest.PNG
----------------------------------------------------------------------
diff --git a/assets/images/Schematest.PNG b/assets/images/Schematest.PNG
new file mode 100644
index 0000000..a81d470
Binary files /dev/null and b/assets/images/Schematest.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/SelectInstance.PNG
----------------------------------------------------------------------
diff --git a/assets/images/SelectInstance.PNG b/assets/images/SelectInstance.PNG
new file mode 100644
index 0000000..95c8f11
Binary files /dev/null and b/assets/images/SelectInstance.PNG differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/Service-Center-UI-Preview.gif
----------------------------------------------------------------------
diff --git a/assets/images/Service-Center-UI-Preview.gif b/assets/images/Service-Center-UI-Preview.gif
new file mode 100644
index 0000000..8bc6adc
Binary files /dev/null and b/assets/images/Service-Center-UI-Preview.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/35d1cbe2/assets/images/ServiceList.PNG
----------------------------------------------------------------------
diff --git a/assets/images/ServiceList.PNG b/assets/images/ServiceList.PNG
new file mode 100644
index 0000000..7863125
Binary files /dev/null and b/assets/images/ServiceList.PNG differ


[24/51] incubator-servicecomb-website git commit: updated faq

Posted by jb...@apache.org.
updated faq

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/0edcb903
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/0edcb903
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/0edcb903

Branch: refs/heads/asf-site
Commit: 0edcb9033ac215e1c4bd8a2fa08ccb127130790c
Parents: c0f5aa5
Author: eric-lee-ltk <li...@huawei.com>
Authored: Tue Nov 7 16:01:04 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Sun Nov 12 19:19:37 2017 -0800

----------------------------------------------------------------------
 _faqs/cn/faq.md              | 14 ++++++++++++++
 _faqs/cn/huawei-cloud-faq.md |  8 ++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/0edcb903/_faqs/cn/faq.md
----------------------------------------------------------------------
diff --git a/_faqs/cn/faq.md b/_faqs/cn/faq.md
index 92817f4..b33139c 100644
--- a/_faqs/cn/faq.md
+++ b/_faqs/cn/faq.md
@@ -468,7 +468,21 @@ redirect_from:
    A: 契约是属于微服务的,微服务本来就有版本,但语言是不应该带上版本号的。应该契约要求与语言无关。契约“没有版本”,契约的版本体现在微服务上,实例能找到所属的微服务的版本,就能找到一个确定的契约。
 
 * **Q: ServiceRegistry里的设计代码和Eureka很类似?**
+
    A: 我们第一个版本就是在Spring Cloud的基础上做的 后来随着发展发现不够用了才逐渐自己做的一套,所以的确是在充分参考Eureka后设计的。
 
 * **Q: 有些rpc是netty调用redis实现,比直接netty转发优势在哪里?**
+
    A: 可能是想用redis解决订阅发布吧。但这样意义也不大,之前也尝试过这么用,但后来都改成ServiceComb了。
+
+* **Q: 如果同时引入了`transport-rest-servlet`和`transport-rest-vertx`的依赖,那么它怎么决定采用哪一个?**
+
+   A: 如果端口没被占用,就用vertx;如果被占用了,就用servlet。
+   
+* **Q: qps流控设计时是出于什么场景考虑的?**
+
+   A: 限流有两个主要作用,第一通过给不同的消费者限流保证对一些重点服务的服务效果,第二防止雪崩效应。可根据服务的重要性来决定水管的粗细,ServiceComb是支持消费端限流和服务端限流两种限流方式的,消费端限流可以做到比较精细的控制。
+   
+* **Q: 如果服务端是链式调用,即类似a->b->c,那设置了qps 流控会不会造成水管粗细不均的事情?**
+
+   A: 一般采取的模式是先测量再设置。qps设置最终是结合整体业务需求来进行调控的,而不是就单个节点来进行设置。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/0edcb903/_faqs/cn/huawei-cloud-faq.md
----------------------------------------------------------------------
diff --git a/_faqs/cn/huawei-cloud-faq.md b/_faqs/cn/huawei-cloud-faq.md
index e66a69e..e5cb02b 100644
--- a/_faqs/cn/huawei-cloud-faq.md
+++ b/_faqs/cn/huawei-cloud-faq.md
@@ -9,7 +9,7 @@ redirect_from:
   - /theme-setup/
 ---
 
-1. **Q: 在使用华为公有云时,设置镜像的标签只需要和上一次的标签不一样还是要和之前的都不一样?**
+* **Q: 在使用华为公有云时,设置镜像的标签只需要和上一次的标签不一样还是要和之前的都不一样?**
 
    A: 由于Docker本身的机制中并没有实现每次都从远端拉取镜像的功能,因此,只要本地中有一个版本的镜像存在而且每次都通过该版本的标签来访问镜像时,读取的镜像则为最开始上传的镜像,后续对该标签镜像的更新并不会在本地生效。因此现有两种解决方案:
 
@@ -19,7 +19,7 @@ redirect_from:
 
    拓展:如果使用了华为公有云上面的编排功能,则可以通过设置imagePullPolicy为Always避免该问题。
    
-2. **Q: 华为公有云运行时报错:WARN com.huawei.paas.monitor.DataFactory: Upload monitor data error. 使用的配置为:**
+* **Q: 华为公有云运行时报错:WARN com.huawei.paas.monitor.DataFactory: Upload monitor data error. 使用的配置为:**
 
    ```yaml
    cse:
@@ -39,3 +39,7 @@ redirect_from:
          Provider:
            default: bizkeeper-provider
    ```
+
+* **Q: 微服务引擎CSE和ServiceComb有什么关系?**
+
+   A:  CSE(Cloud Service Engine)是ServiceComb的商业版,其中除了ServiceComb还包含了安全增强以及服务管控界面。 CSE的核心模块以及相关的开发框架都是和ServiceComb同源的。 基于ServiceComb开发的应用可以不修改代码,很方便地部署CSE环境中。


[45/51] incubator-servicecomb-website git commit: fixed fake link with underline

Posted by jb...@apache.org.
fixed fake link with underline


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/a1de0686
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/a1de0686
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/a1de0686

Branch: refs/heads/asf-site
Commit: a1de068639836e5055d6c3742ade8ddc02e31d95
Parents: 5a410c7
Author: ljfbleach <lj...@163.com>
Authored: Wed Dec 6 11:13:53 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 14:21:35 2017 +0800

----------------------------------------------------------------------
 _includes/nav_list                      | 4 ++--
 _sass/minimal-mistakes/_navigation.scss | 6 +++++-
 2 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a1de0686/_includes/nav_list
----------------------------------------------------------------------
diff --git a/_includes/nav_list b/_includes/nav_list
index 7c3c061..09b3c6c 100644
--- a/_includes/nav_list
+++ b/_includes/nav_list
@@ -15,7 +15,7 @@
             {% assign domain = site.url | append: site.baseurl %}
           {% endif %}
 
-          <a href="{{ domain }}{{ nav.url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
+          <a href="{{ domain }}{{ nav.url }}"><span class="nav__sub-title nav__sub-title-with-url">{{ nav.title }}</span></a>
         {% else %}
           <span class="nav__sub-title">{{ nav.title }}</span>
         {% endif %}
@@ -44,4 +44,4 @@
       </li>
     {% endfor %}
   </ul>
-</nav>
\ No newline at end of file
+</nav>

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a1de0686/_sass/minimal-mistakes/_navigation.scss
----------------------------------------------------------------------
diff --git a/_sass/minimal-mistakes/_navigation.scss b/_sass/minimal-mistakes/_navigation.scss
index 4ba6ea6..2a4bd6d 100644
--- a/_sass/minimal-mistakes/_navigation.scss
+++ b/_sass/minimal-mistakes/_navigation.scss
@@ -561,13 +561,17 @@
   text-decoration: none;
 
   &:hover {
-    text-decoration: underline;
     height: auto;
     overflow: visible;
     white-space: normal;
   }
 }
 
+.nav__sub-title-with-url {
+  &:hover {
+    text-decoration: underline;
+  }
+}
 
 /*
    Table of contents navigation


[29/51] incubator-servicecomb-website git commit: spelling mistake

Posted by jb...@apache.org.
spelling mistake


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/977ba515
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/977ba515
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/977ba515

Branch: refs/heads/asf-site
Commit: 977ba5150199537a88822fee00b38fd53ed088dc
Parents: 652589e
Author: kang.lin <timaagcl>
Authored: Tue Nov 21 09:58:31 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Tue Nov 21 10:13:33 2017 +0800

----------------------------------------------------------------------
 _developers/submit-codes.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/977ba515/_developers/submit-codes.md
----------------------------------------------------------------------
diff --git a/_developers/submit-codes.md b/_developers/submit-codes.md
index 02eaddf..22b3b99 100644
--- a/_developers/submit-codes.md
+++ b/_developers/submit-codes.md
@@ -51,8 +51,8 @@ last_modified_at: 2017-09-08T20:26:43-20:46
 
 - 检查远程仓库设置:
 
-  ```shell
-  git remote –v
+  ```shell  
+  git remote -v
   origin https://github.com/<your_github_name>/ServiceComb.github.io.git (fetch)
   origin    https://github.com/<your_github_name>/ServiceComb.github.io.git (push)
   upstream  https://github.com/ServiceComb/ServiceComb.github.io.git (fetch)


[05/51] incubator-servicecomb-website git commit: sync blog of legacy system reform

Posted by jb...@apache.org.
sync blog of legacy system reform

Signed-off-by: eric-lee-ltk <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/a00c8db2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/a00c8db2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/a00c8db2

Branch: refs/heads/asf-site
Commit: a00c8db288b562262869be68e3eebc08d5f2badc
Parents: 3141432
Author: eric-lee-ltk <li...@huawei.com>
Authored: Mon Oct 23 16:29:12 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Oct 23 21:43:54 2017 -0500

----------------------------------------------------------------------
 _data/authors.yml                               |   5 +
 .../2017-10-23-how-to-reform-a-legacy-system.md | 330 +++++++++++++++++++
 .../2017-10-23-how-to-reform-a-legacy-system.md | 330 +++++++++++++++++++
 ...best_practices_for_legacy_system_reform.jpeg | Bin 0 -> 24022 bytes
 assets/images/legacy_system_background.jpeg     | Bin 0 -> 19848 bytes
 .../legacy_system_reform_architecture.jpeg      | Bin 0 -> 22413 bytes
 .../images/legacy_system_reform_strategy.jpeg   | Bin 0 -> 12452 bytes
 ...icroservice_definition_by_martin_folwer.jpeg | Bin 0 -> 35559 bytes
 assets/images/microservice_reform_strategy.jpeg | Bin 0 -> 25947 bytes
 ...pid_development_framework_based_on_ruby.jpeg | Bin 0 -> 28266 bytes
 assets/images/why_microservice_show_up.jpeg     | Bin 0 -> 32684 bytes
 11 files changed, 665 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/_data/authors.yml
----------------------------------------------------------------------
diff --git a/_data/authors.yml b/_data/authors.yml
index 1c146e4..463f3da 100644
--- a/_data/authors.yml
+++ b/_data/authors.yml
@@ -30,3 +30,8 @@ Yangyong Zheng:
   uri: "https://zhengyangyong.github.io"
   email: "yangyong.zheng@huawei.com"
   bio: "Fast Action, do not ask"
+Wang Lei:
+  name: "Wang Lei"
+  uri: "https://wldandan.github.io"
+  email: "wanglei177@huawei.com"
+  bio: "Happy Coding, Happy Life"

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/_posts/2017-10-23-how-to-reform-a-legacy-system.md
----------------------------------------------------------------------
diff --git a/_posts/2017-10-23-how-to-reform-a-legacy-system.md b/_posts/2017-10-23-how-to-reform-a-legacy-system.md
new file mode 100644
index 0000000..c2f4d7d
--- /dev/null
+++ b/_posts/2017-10-23-how-to-reform-a-legacy-system.md
@@ -0,0 +1,330 @@
+---
+title: "最头疼的遗留系统该如何改造?"
+lang: en
+ref: how-to-reform-a-legacy-system
+permalink: /docs/how-to-reform-a-legacy-system/
+excerpt: "微服务是否是业界期待已久的企业架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?"
+last_modified_at: 2017-10-23T15:22:00+08:00
+author: Wang Lei
+tags: [Reform legacy system]
+redirect_from:
+  - /theme-setup/
+---
+
+随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务(Microservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?在该分享中,王磊将通过实际的案例,跟大家探讨使用微服务改造遗留系统的实践之路。
+1. 什么是微服务
+2. 微服务的诞生背景
+3. 遗留系统的微服务改造策略
+4. 微服务改造之路
+
+## 背景
+首先,请大家思考什么是系统架构设计?
+
+一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效的构建。大家也一直在探索,寻找更优秀的架构设计方式来构建系统。
+
+那什么是系统的架构设计?对于这个问题,我相信每个朋友都会有不同的定义,实际上,也并没有一个标准的答案来解释什么是架构设计。
+
+基于我过去的经验和工作方式,我认为系统架构设计的本质,是在应用系统内部找到这样一个动态平衡:平衡业务、技术、团队的同时,考虑系统灵活性、可扩展性以及可维护性等因素,并将应用系统划分成不同的部分,使这些部分彼此之间相互分工、相互协作,从而为用户提供某种特定的价值的方式。
+
+随着RESTful、云计算、DevOps、持续交付等概念的深入人心,**微服务架构逐渐成为系统架构的一个代名词**。
+
+## 什么是微服务架构
+2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文章、会议、社区上。这里,我就和大家快速回顾一下,老马(Martin Folwer)对微服务的定义。
+
+![](/assets/images/microservice_definition_by_martin_folwer.jpeg)
+
+如上所示,微服务架构的核心四要素,我用红色标注出来了。如果翻译成中文,大致如下所示:
+
+> 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。 每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。 另外,对具体的服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
+
+总结成一句话就是**微服务是围绕业务构建的细粒度的分布式系统**。
+
+## 微服务的诞生背景
+2015年,微服务突然火了,为什么?
+
+其实微服务架构并不是什么技术创新,而是IT发展到现阶段对技术架构的要求。
+
+这个要求包括**快速和业务对齐(alignbusiness)、快速理解和抽象业务(DDD)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)**。
+
+所以我认为微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,无论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。
+
+当然,任何新事物的诞生,总会有一个推动因素。微服务的诞生也并非偶然。它是互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下所诞生的产物。
+
+基于个人的理解,我将微服务的诞生因素总结为如下几点:
+
+![](/assets/images/why_microservice_show_up.jpeg)
+
+1. **互联网行业的快速发展**
+
+   过去的十年中,互联网对我们的生活产生了翻天覆地的变化,越来越多的传统行业公司也开始依赖互联网技术打造其核心竞争优势。
+
+   在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户量的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。
+   
+2. **单块架构系统面临的挑战**
+
+   随着用户需求个性化、产品生命周期变短、市场需求不稳定等因素的出现,单块架构系统面临着越来越多的挑战。如何找到一种更有效的、更灵活、适应需求的系统架构方式,成为大家关注的焦点。
+   
+3. **敏捷、精益方法、持续交付的深入人心**
+
+   在IT行业发展的过去十年,敏捷、精益、持续交付等价值观、方法论的提出以及实践,让很多组织意识到应变市场变化、提高响应力的重要性,应该构建软件交付周期的闭环(分析、开发、测试、部署、运维、监控、运营),而不仅仅是提高开发阶段的效率。
+   
+   **精益创业(Lean Startup)**帮助组织分析并建立最小可实行产品(MinimumViableProduct),通过迭代持续改进敏捷方法帮助组织消除浪费,通过反馈不断找到正确的方向。
+   
+   **持续交付**则帮助组织构建更快、更可靠、可频繁发布的交付机制并构建产品交付闭环。
+   
+   大部分组织已经基本上形成了一套可实施的交付体系。包括持续集成、自动化测试、数据管理、自动化部署机制等。
+   
+   这时候,大泥球式的单块架构,会逐渐成为影响交付周期进一步优化的瓶颈,因此如何找到灵活性高、扩展性好的架构方式,也成为进一步优化交付周期面临的挑战。
+   
+4. **Docker等容器虚拟化技术的快速发展**
+
+   同传统的虚拟化技术相比,基于容器技术的Docker,不需要复杂的Hypervisor机制支持,具有更高的虚拟化性能和效率。
+   
+   同时容器可以很容易的运行在任意的装有DockerEngine的系统上,使得开发人员能够用更低的成本将应用程序部署在不同平台上。
+   
+5. **DevOps文化**
+
+   DevOps文化的推行打破了传统开发与运维之间的壁垒,帮助组织形成开发、运维紧密配合的、全功能化的高效团队,并尽早降低软件交付最后一公里的风险。
+
+## 遗留系统的微服务改造策略
+聊完什么是微服务架构以及其诞生背景,接下来我们来谈谈如何改造遗留系统。
+
+在过去的10多年间,大部分工作时间我都在和遗留系统打交道。我相信很多朋友也是工作在已经运转多年的遗留系统上。
+
+对于这类系统,当谈论使用微服务对其进行改造时,我认为要谨记一点:
+
+**改造不是重做。**
+
+**在改造的过程中,要始终以保证系统为用户提供的业务价值可用作为首要目标。**从这个点出发,基于我的经验,对微服务改造的策略总结为如下五个步骤:
+
+![](/assets/images/microservice_reform_strategy.jpeg)
+
+1. 范围定义
+
+   对于遗留系统而言,通常业务运转时间较长(譬如5~8年以上,甚至更长),因此涉及的功能繁杂,代码中存在大量无效或者过时的需求,缺陷修复成本较高。
+   
+   另外,系统在演进的过程中,也会持续为用户提供新的功能和价值。因此,划分出清晰的范围非常重要。
+   
+   实际上,范围定义主要包括两部分:
+
+   1. 明确业务改造范围
+
+      所谓改造范围,就是确定我们常说的业务试点。通常,作为初次尝试微服务实践的组织,建议选取业务范围影响较小、非关键功能的试点,这样做也是为了确保在不影响核心业务的情况下快速尝试并获得反馈。
+
+   2. 明确成员责任范围
+
+      明确成员责任范围,确定由谁来改造,确保改造的目标清晰。
+
+      实际上,对于产品而言,遗留系统的维护和更新,包括缺陷定位、缺陷修复、数据更新、功能实现、测试、交付给运维团队等,通常已经让团队的工作处于高负荷状态。因此,需要确定成员,全身心的投入,以微服务改造作为短期目标。
+
+2. 功能剥离
+
+   有了明确的业务范围,成员也有了清晰的责任,接下来就需要将部分功能点进行剥离。
+
+   所谓剥离,就是将选中的功能从原有的系统中拆分出来,并构建成独立的服务。在这个阶段,主要包括两点:
+
+   1. 将功能从原有系统拆分出来,并构建新服务
+
+      一提到拆分,很多朋友会纠结,“系统复杂,如何拆分微服务才好?怎么样的拆分才合理?”。其实,从我个人的观点来看,这时候还不是纠结服务到底怎么划分合理的时候。为什么?
+
+         1. 好的架构是动态演变和迭代出来的,业务在不断改变,技术和工具也在不会的升级换代,没有完美的架构,只有无限逼近完美的动态平衡,所以先小范围、低成本动起来,在运转中找平衡点。
+         
+         2. 微服务的复杂度在于分布式系统本身,以及其生态系统(开发、测试、部署、运维、监控、告警)的搭建。
+         
+         3. 团队文化的形成是一个相对漫长的过程,如果花很大力气关注服务怎么拆,而没有聚焦在生态系统的搭建以及团队文化的形成上,实际上是舍本逐末。即便拆分出了不同的服务,在落地的时候也会遇到诸多问题。所以,找一个功能点先拆,然后搭建持续交付流水线,快速试错,建立好有效的反馈闭环机制,再不断寻找动态平衡,拆分出更细的服务或者将不合理的服务合并。
+
+   2. 在原有的系统前端,使用代理机制,并使用遗留系统和新服务组合为用户提供价值
+
+      这一步,目的是使用组合的系统(遗留系统+新的服务)为用户提供价值。
+
+      对于Web系统,通常可以在前端使用直接请求新的服务。也可以在后端使用转发请求,获取新服务提供的数据。
+
+      如下图所示:
+
+      ![](/assets/images/microservice_reform_strategy.jpeg)
+
+3. 数据解耦
+
+   在以前的遗留系统构建过程中,通常使用数据库作为集成点,不同功能/系统之间通过数据库完成数据交换。对于某些系统,还大量使用存储过程完成业务逻辑,开发的时候看似效率高,但几年下来,DBA成了IT团队最懂业务的人,维护成为瓶颈。
+
+   而实际上,业务的数据是业务固有的组成部分,应当随着业务的变化而变化。业务拆分出来,数据也应该拆分出来。从而保证访问数据只能通过统一的相关业务API完成。便于在将来的业务和架构演进中,有效的对数据维护、管理和升级。
+
+4. 数据同步
+
+   数据同步,是一个价值体现的过渡过程。
+   
+   一方面,遗留系统的改造中存在的各种各样的挑战和我们今天认为的不合理(当时的场景也许是合理的)。另一方面,对于大部分遗留的系统,都会使用数据库作为集成点(开发成本低),导致某业务功能的数据与其他功能有着千丝万缕的联系,数据的变化容易对其他功能造成影响。
+   
+   因此对于大型的遗留系统,很难在短期的时间内(3~6个月)完成全系统的改造。需要一个相对漫长,循序渐进的过程来完成改造。
+   
+   譬如,在电商系统中,商家的后台管理系统中的产品、价格的更新,会发布到面向用户的电商搜索系统中以及其他系统中。如果我们将系统中的产品相关拆分成独立服务,则必须也要拆分数据发布机制,否则的话容易造成数据不一致。但拆分数据发布机制,又需要分析清楚不同数据之间的影响和依赖,需要更大的成本,短期内不易完成。
+   
+   这时候,如果将新服务的数据同步回原有的数据库,采用这样一个折中的的过程,既能保障新的服务和数据被独立,又不影响原有的遗留系统功能。
+   
+   说白了,这其实也是在保证系统为用户提供的业务价值不被破坏。
+   
+   有了之前的尝试,接下来就是通过不断的迭代,完成功能剥离,数据解耦、数据同步,从而将更多的功能拆分成独立的服务。
+
+![](/assets/images/legacy_system_reform_strategy.jpeg)
+
+如上就是我对于遗留系统改造的策略。
+
+## 遗留系统改造实践 
+接下来,我和大家分享一个我所经历的遗留系统改造的案例。首先,让我们看看这个系统的背景和一些数据。
+
+![](/assets/images/legacy_system_background.jpeg)
+
+### 客户背景
+
+澳洲最大的房产门户,业务涉及个人房产、商业房产、土地交易、买卖租赁、业务运行在7个国家。
+
+8年前基于第三方平台二次开发的业务支撑系统,随着企业的高速发展,维护成本增加,新需求交付周期长,系统逐渐成为阻碍企业高速发展的瓶颈。
+
+### 业务痛点
+
+对于每10万元额度的合同,从销售团队准备材料、与客户签单、递交给合同部门,再到合同生效大概需要3.5人天。当时年销售额为4亿,随着业务量的快速增长,签订合同的人力成本在66人年,这还是不考虑管理、沟通等成本,因此成本急剧增加。
+
+### 系统概览
+
+系统为典型的三层单块架构,主从数据库运行在数据中心的虚拟机上。开发和运维团队属于两个独立部门,部署时需要提交文档,记录部署流程、细节以及潜在风险,然后提交审批,获取批准后由运维团队排期并完成部署。
+
+### 相关数据
+
+* 400K行代码
+
+   系统涉及订单、用户、产品、价格、合同、多国业务支撑等
+
+* 11名团队成员
+
+   以开发和测试为主,每2周交付一个版本给运维部门,以修复缺陷为主,也会有新特性需求。
+
+* 30% 单元测试覆盖率
+
+   系统功能繁杂,二次开发封装了很多库,单元测试覆盖率低。
+
+   无效功能的代码长期不清理,核心人员离职或者换岗,因此,大部分功能用集成和功能测试来验证。
+
+* 50分钟持续集成
+
+   持续集成的大部分时间都用来运行集成/功能测试,同时创建很多任务,用于检测不同系统间的数据一致性。
+
+* 3天部署
+
+   交付版本给运维部门后,需要相关人员审批,授权后排期进行部署,从提交到部署生效,通常需要2~3天。
+
+**基于之前定义的改造策略,我们的改造过程大致如下所示:**
+
+范围定义:
+
+   * 将合同相关部分作为改造的业务范围
+
+   * 将团队中3人+外部引入的2人作为微服务改造团队
+
+功能剥离:
+
+   * 首先剥离合同签署部分,提供在线签署合同系统(H5+JS)
+
+   * 提供合同签署后的存储服务,记录用户在线签署的合同
+
+数据解耦
+
+   * 将用户在线签署的合同数据独立存储
+
+数据同步
+
+   * 在夜间负载较低的时候,将签署的合同数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务
+
+   * 实现合同服务,并构建前后端分离的H5+JS应用,为合同部门提供合同管理后台
+
+   * 定义合同pdf生成器,完成pdf的存储和下载
+
+   * 定义合同中相关数据的服务接口,譬如产品服务,用户服务。便于用户挑选产品组合以及获取积分信息
+
+**经过近半年多后,改造的架构如下所示:**
+
+![](/assets/images/legacy_system_reform_architecture.jpeg)
+
+可以看到,合同签署的业务已经被拆分出来,同时合同签署的数据也被独立出来,但由于原有遗留系统的复杂度以及数据相关依赖,我们需要将合同的签署数据同步到遗留系统的数据库中。
+
+当然,这只是我的个案中用到,大家可以在改造的过程中,结合具体的业务场景中,考虑是否需要这样的数据同步机制。
+
+对于当前这个例子,如果不做数据的同步,则需要更长的时间分析并解耦合同数据同原有遗留系统的依赖,因此也可以看出,同步是为了帮助我们尽快的使改造后的服务体现价值。
+
+**理论上,经过不断地迭代,逐渐完成业务功能解耦,新服务构建。那么遗留系统就会被替换掉。**
+
+## 改造要点
+在改造的整个过程中,我认为如下几个实践是非常重要的:
+
+![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
+
+### 基础设施自动化
+
+原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用AWS作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究AWS以及相关的DevOps配套工具。
+
+目前,国内外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。
+
+### 微服务生态系统
+
+微服务的生态系统是指微服务实施过程相关的协作部分,涉及部分较多,譬如测试机制、持续集成、自动化部署、细粒度监控、日志聚合、告警、持续交付,以及大家非常关注的服务注册、服务发现机制等。
+
+这部分的灵活性比较大,因为目前如上说的每一个领域都有很多优秀的工具。譬如日志聚合目前业界的方案通常为ELK、AWS的部署使用CloudFormation更灵活,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工具都具有告警功能,PagerDuty也提供更专业的告警服务。服务注册和发现有Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。
+
+### 开发框架的演进
+
+开发框架是团队在构建微服务的过程中,不断总结,梳理出的快速开发微服务的相关工具和框架。
+
+我们基于Ruby构建了快速开发框架,主要包括四部分,如下图所示:
+
+![](/assets/images/rapid_development_framework_based_on_ruby.jpeg)
+
+1. 开发模板
+
+   使用Grape作为Web框架,HAL作为API通信规约,RSpec作为测试框架。同时,还定义了一组Rake任务,譬如运行测试,查看测试报告,将当前的服务生成RPM/AMI镜像等。
+   
+   除此之外,该模板也提供了一组通用的URL,帮助使用者查看微服务的版本、配置信息以及检测是否健康运行等。譬如/diagnostic/config, /health, /version, /heartbeat
+
+2. 代码生成工具
+
+   通过指定不同参数,代码生成工具能创建具有数据库访问能力,或者是包含异步队列处理的微服务应用。同时,也可以标记该服务是数据消费者还是数据生产者,帮助理解多个微服务之间的联系
+
+3. 持续集成模板
+
+   基于持续集成服务器Bamboo,创建了模板工程,并定义主要的阶段:
+   
+   > 验证:运行单元测试,契约测试
+   >
+   > 构建:构建基于AMI的部署包
+   >
+   > 部署:基于指定版本的AMI,快速部署到验收环境或者产品环境上。
+
+   利用这样的持续集成模板工程,花费很少的时间,就可以针对新建的微服务应用,快速配置其对应的持续集成环境。
+
+4. 基于Asgard的部署工具
+
+   Asgard是由Netflix开发的基于Web的AWS云部署和管理工具。基于Asgard,我们实现了命令行部署工具,部署时通过一条命令,提供服务名称、版本号,就可自动完成资源的创建、部署、流量切换、删除旧的应用等操作。譬如:
+
+   > deploy [ServiceName] [ServiceVersion]
+
+### 团队运维自管理
+
+这一部分是关于团队的文化管理。也是对DevOPS的延伸,我们称为TMI(Team Managed Infrastructure)。
+
+目的是将分析、开发、测试以及资源创建、销毁、自动化部署的权利交给团队,由团队按需完成部署(加上看板的流程管理,而非Scrum的固定迭代,可以做到一天部署多次)。
+
+当然,这个环节非常依赖于成熟的监控以及告警机制,当出现问题时,能够有效的通知到责任人,快速反馈,快速修复。团队内部也会定期轮换Pager(出问题救火的人),培养团队以服务可用作为大家的共同目标,培养产品观念,而非项目观念。
+
+再回顾一下这个图:
+
+![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
+   
+最后,和大家分享一下,我个人在微服务实施过程中总结的4句方针:
+
+由大到小,由粗到细
+
+关注运维,关注监控
+
+快速反馈,快速修复
+
+循序渐进,增量实现
+
+也希望大家能够支持我的书《微服务架构与实践》。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md b/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
new file mode 100644
index 0000000..30680e0
--- /dev/null
+++ b/_posts/cn/2017-10-23-how-to-reform-a-legacy-system.md
@@ -0,0 +1,330 @@
+---
+title: "最头疼的遗留系统该如何改造?"
+lang: cn
+ref: how-to-reform-a-legacy-system
+permalink: /cn/docs/how-to-reform-a-legacy-system/
+excerpt: "微服务是否是业界期待已久的企业架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?"
+last_modified_at: 2017-10-23T15:22:00+08:00
+author: Wang Lei
+tags: [系统改造]
+redirect_from:
+  - /theme-setup/
+---
+
+随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务(Microservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案?在对遗留系统进行微服务的改造过程中存在怎样的困难和挑战,应该注意些什么?在该分享中,王磊将通过实际的案例,跟大家探讨使用微服务改造遗留系统的实践之路。
+1. 什么是微服务
+2. 微服务的诞生背景
+3. 遗留系统的微服务改造策略
+4. 微服务改造之路
+
+## 背景
+首先,请大家思考什么是系统架构设计?
+
+一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效的构建。大家也一直在探索,寻找更优秀的架构设计方式来构建系统。
+
+那什么是系统的架构设计?对于这个问题,我相信每个朋友都会有不同的定义,实际上,也并没有一个标准的答案来解释什么是架构设计。
+
+基于我过去的经验和工作方式,我认为系统架构设计的本质,是在应用系统内部找到这样一个动态平衡:平衡业务、技术、团队的同时,考虑系统灵活性、可扩展性以及可维护性等因素,并将应用系统划分成不同的部分,使这些部分彼此之间相互分工、相互协作,从而为用户提供某种特定的价值的方式。
+
+随着RESTful、云计算、DevOps、持续交付等概念的深入人心,**微服务架构逐渐成为系统架构的一个代名词**。
+
+## 什么是微服务架构
+2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文章、会议、社区上。这里,我就和大家快速回顾一下,老马(Martin Folwer)对微服务的定义。
+
+![](/assets/images/microservice_definition_by_martin_folwer.jpeg)
+
+如上所示,微服务架构的核心四要素,我用红色标注出来了。如果翻译成中文,大致如下所示:
+
+> 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。 每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。 另外,对具体的服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
+
+总结成一句话就是**微服务是围绕业务构建的细粒度的分布式系统**。
+
+## 微服务的诞生背景
+2015年,微服务突然火了,为什么?
+
+其实微服务架构并不是什么技术创新,而是IT发展到现阶段对技术架构的要求。
+
+这个要求包括**快速和业务对齐(alignbusiness)、快速理解和抽象业务(DDD)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)**。
+
+所以我认为微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,无论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。
+
+当然,任何新事物的诞生,总会有一个推动因素。微服务的诞生也并非偶然。它是互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下所诞生的产物。
+
+基于个人的理解,我将微服务的诞生因素总结为如下几点:
+
+![](/assets/images/why_microservice_show_up.jpeg)
+
+1. **互联网行业的快速发展**
+
+   过去的十年中,互联网对我们的生活产生了翻天覆地的变化,越来越多的传统行业公司也开始依赖互联网技术打造其核心竞争优势。
+
+   在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户量的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。
+   
+2. **单块架构系统面临的挑战**
+
+   随着用户需求个性化、产品生命周期变短、市场需求不稳定等因素的出现,单块架构系统面临着越来越多的挑战。如何找到一种更有效的、更灵活、适应需求的系统架构方式,成为大家关注的焦点。
+   
+3. **敏捷、精益方法、持续交付的深入人心**
+
+   在IT行业发展的过去十年,敏捷、精益、持续交付等价值观、方法论的提出以及实践,让很多组织意识到应变市场变化、提高响应力的重要性,应该构建软件交付周期的闭环(分析、开发、测试、部署、运维、监控、运营),而不仅仅是提高开发阶段的效率。
+   
+   **精益创业(Lean Startup)**帮助组织分析并建立最小可实行产品(MinimumViableProduct),通过迭代持续改进敏捷方法帮助组织消除浪费,通过反馈不断找到正确的方向。
+   
+   **持续交付**则帮助组织构建更快、更可靠、可频繁发布的交付机制并构建产品交付闭环。
+   
+   大部分组织已经基本上形成了一套可实施的交付体系。包括持续集成、自动化测试、数据管理、自动化部署机制等。
+   
+   这时候,大泥球式的单块架构,会逐渐成为影响交付周期进一步优化的瓶颈,因此如何找到灵活性高、扩展性好的架构方式,也成为进一步优化交付周期面临的挑战。
+   
+4. **Docker等容器虚拟化技术的快速发展**
+
+   同传统的虚拟化技术相比,基于容器技术的Docker,不需要复杂的Hypervisor机制支持,具有更高的虚拟化性能和效率。
+   
+   同时容器可以很容易的运行在任意的装有DockerEngine的系统上,使得开发人员能够用更低的成本将应用程序部署在不同平台上。
+   
+5. **DevOps文化**
+
+   DevOps文化的推行打破了传统开发与运维之间的壁垒,帮助组织形成开发、运维紧密配合的、全功能化的高效团队,并尽早降低软件交付最后一公里的风险。
+
+## 遗留系统的微服务改造策略
+聊完什么是微服务架构以及其诞生背景,接下来我们来谈谈如何改造遗留系统。
+
+在过去的10多年间,大部分工作时间我都在和遗留系统打交道。我相信很多朋友也是工作在已经运转多年的遗留系统上。
+
+对于这类系统,当谈论使用微服务对其进行改造时,我认为要谨记一点:
+
+**改造不是重做。**
+
+**在改造的过程中,要始终以保证系统为用户提供的业务价值可用作为首要目标。**从这个点出发,基于我的经验,对微服务改造的策略总结为如下五个步骤:
+
+![](/assets/images/microservice_reform_strategy.jpeg)
+
+1. 范围定义
+
+   对于遗留系统而言,通常业务运转时间较长(譬如5~8年以上,甚至更长),因此涉及的功能繁杂,代码中存在大量无效或者过时的需求,缺陷修复成本较高。
+   
+   另外,系统在演进的过程中,也会持续为用户提供新的功能和价值。因此,划分出清晰的范围非常重要。
+   
+   实际上,范围定义主要包括两部分:
+
+   1. 明确业务改造范围
+
+      所谓改造范围,就是确定我们常说的业务试点。通常,作为初次尝试微服务实践的组织,建议选取业务范围影响较小、非关键功能的试点,这样做也是为了确保在不影响核心业务的情况下快速尝试并获得反馈。
+
+   2. 明确成员责任范围
+
+      明确成员责任范围,确定由谁来改造,确保改造的目标清晰。
+
+      实际上,对于产品而言,遗留系统的维护和更新,包括缺陷定位、缺陷修复、数据更新、功能实现、测试、交付给运维团队等,通常已经让团队的工作处于高负荷状态。因此,需要确定成员,全身心的投入,以微服务改造作为短期目标。
+
+2. 功能剥离
+
+   有了明确的业务范围,成员也有了清晰的责任,接下来就需要将部分功能点进行剥离。
+
+   所谓剥离,就是将选中的功能从原有的系统中拆分出来,并构建成独立的服务。在这个阶段,主要包括两点:
+
+   1. 将功能从原有系统拆分出来,并构建新服务
+
+      一提到拆分,很多朋友会纠结,“系统复杂,如何拆分微服务才好?怎么样的拆分才合理?”。其实,从我个人的观点来看,这时候还不是纠结服务到底怎么划分合理的时候。为什么?
+
+         1. 好的架构是动态演变和迭代出来的,业务在不断改变,技术和工具也在不会的升级换代,没有完美的架构,只有无限逼近完美的动态平衡,所以先小范围、低成本动起来,在运转中找平衡点。
+         
+         2. 微服务的复杂度在于分布式系统本身,以及其生态系统(开发、测试、部署、运维、监控、告警)的搭建。
+         
+         3. 团队文化的形成是一个相对漫长的过程,如果花很大力气关注服务怎么拆,而没有聚焦在生态系统的搭建以及团队文化的形成上,实际上是舍本逐末。即便拆分出了不同的服务,在落地的时候也会遇到诸多问题。所以,找一个功能点先拆,然后搭建持续交付流水线,快速试错,建立好有效的反馈闭环机制,再不断寻找动态平衡,拆分出更细的服务或者将不合理的服务合并。
+
+   2. 在原有的系统前端,使用代理机制,并使用遗留系统和新服务组合为用户提供价值
+
+      这一步,目的是使用组合的系统(遗留系统+新的服务)为用户提供价值。
+
+      对于Web系统,通常可以在前端使用直接请求新的服务。也可以在后端使用转发请求,获取新服务提供的数据。
+
+      如下图所示:
+
+      ![](/assets/images/microservice_reform_strategy.jpeg)
+
+3. 数据解耦
+
+   在以前的遗留系统构建过程中,通常使用数据库作为集成点,不同功能/系统之间通过数据库完成数据交换。对于某些系统,还大量使用存储过程完成业务逻辑,开发的时候看似效率高,但几年下来,DBA成了IT团队最懂业务的人,维护成为瓶颈。
+
+   而实际上,业务的数据是业务固有的组成部分,应当随着业务的变化而变化。业务拆分出来,数据也应该拆分出来。从而保证访问数据只能通过统一的相关业务API完成。便于在将来的业务和架构演进中,有效的对数据维护、管理和升级。
+
+4. 数据同步
+
+   数据同步,是一个价值体现的过渡过程。
+   
+   一方面,遗留系统的改造中存在的各种各样的挑战和我们今天认为的不合理(当时的场景也许是合理的)。另一方面,对于大部分遗留的系统,都会使用数据库作为集成点(开发成本低),导致某业务功能的数据与其他功能有着千丝万缕的联系,数据的变化容易对其他功能造成影响。
+   
+   因此对于大型的遗留系统,很难在短期的时间内(3~6个月)完成全系统的改造。需要一个相对漫长,循序渐进的过程来完成改造。
+   
+   譬如,在电商系统中,商家的后台管理系统中的产品、价格的更新,会发布到面向用户的电商搜索系统中以及其他系统中。如果我们将系统中的产品相关拆分成独立服务,则必须也要拆分数据发布机制,否则的话容易造成数据不一致。但拆分数据发布机制,又需要分析清楚不同数据之间的影响和依赖,需要更大的成本,短期内不易完成。
+   
+   这时候,如果将新服务的数据同步回原有的数据库,采用这样一个折中的的过程,既能保障新的服务和数据被独立,又不影响原有的遗留系统功能。
+   
+   说白了,这其实也是在保证系统为用户提供的业务价值不被破坏。
+   
+   有了之前的尝试,接下来就是通过不断的迭代,完成功能剥离,数据解耦、数据同步,从而将更多的功能拆分成独立的服务。
+
+![](/assets/images/legacy_system_reform_strategy.jpeg)
+
+如上就是我对于遗留系统改造的策略。
+
+## 遗留系统改造实践 
+接下来,我和大家分享一个我所经历的遗留系统改造的案例。首先,让我们看看这个系统的背景和一些数据。
+
+![](/assets/images/legacy_system_background.jpeg)
+
+### 客户背景
+
+澳洲最大的房产门户,业务涉及个人房产、商业房产、土地交易、买卖租赁、业务运行在7个国家。
+
+8年前基于第三方平台二次开发的业务支撑系统,随着企业的高速发展,维护成本增加,新需求交付周期长,系统逐渐成为阻碍企业高速发展的瓶颈。
+
+### 业务痛点
+
+对于每10万元额度的合同,从销售团队准备材料、与客户签单、递交给合同部门,再到合同生效大概需要3.5人天。当时年销售额为4亿,随着业务量的快速增长,签订合同的人力成本在66人年,这还是不考虑管理、沟通等成本,因此成本急剧增加。
+
+### 系统概览
+
+系统为典型的三层单块架构,主从数据库运行在数据中心的虚拟机上。开发和运维团队属于两个独立部门,部署时需要提交文档,记录部署流程、细节以及潜在风险,然后提交审批,获取批准后由运维团队排期并完成部署。
+
+### 相关数据
+
+* 400K行代码
+
+   系统涉及订单、用户、产品、价格、合同、多国业务支撑等
+
+* 11名团队成员
+
+   以开发和测试为主,每2周交付一个版本给运维部门,以修复缺陷为主,也会有新特性需求。
+
+* 30% 单元测试覆盖率
+
+   系统功能繁杂,二次开发封装了很多库,单元测试覆盖率低。
+
+   无效功能的代码长期不清理,核心人员离职或者换岗,因此,大部分功能用集成和功能测试来验证。
+
+* 50分钟持续集成
+
+   持续集成的大部分时间都用来运行集成/功能测试,同时创建很多任务,用于检测不同系统间的数据一致性。
+
+* 3天部署
+
+   交付版本给运维部门后,需要相关人员审批,授权后排期进行部署,从提交到部署生效,通常需要2~3天。
+
+**基于之前定义的改造策略,我们的改造过程大致如下所示:**
+
+范围定义:
+
+   * 将合同相关部分作为改造的业务范围
+
+   * 将团队中3人+外部引入的2人作为微服务改造团队
+
+功能剥离:
+
+   * 首先剥离合同签署部分,提供在线签署合同系统(H5+JS)
+
+   * 提供合同签署后的存储服务,记录用户在线签署的合同
+
+数据解耦
+
+   * 将用户在线签署的合同数据独立存储
+
+数据同步
+
+   * 在夜间负载较低的时候,将签署的合同数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务
+
+   * 实现合同服务,并构建前后端分离的H5+JS应用,为合同部门提供合同管理后台
+
+   * 定义合同pdf生成器,完成pdf的存储和下载
+
+   * 定义合同中相关数据的服务接口,譬如产品服务,用户服务。便于用户挑选产品组合以及获取积分信息
+
+**经过近半年多后,改造的架构如下所示:**
+
+![](/assets/images/legacy_system_reform_architecture.jpeg)
+
+可以看到,合同签署的业务已经被拆分出来,同时合同签署的数据也被独立出来,但由于原有遗留系统的复杂度以及数据相关依赖,我们需要将合同的签署数据同步到遗留系统的数据库中。
+
+当然,这只是我的个案中用到,大家可以在改造的过程中,结合具体的业务场景中,考虑是否需要这样的数据同步机制。
+
+对于当前这个例子,如果不做数据的同步,则需要更长的时间分析并解耦合同数据同原有遗留系统的依赖,因此也可以看出,同步是为了帮助我们尽快的使改造后的服务体现价值。
+
+**理论上,经过不断地迭代,逐渐完成业务功能解耦,新服务构建。那么遗留系统就会被替换掉。**
+
+## 改造要点
+在改造的整个过程中,我认为如下几个实践是非常重要的:
+
+![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
+
+### 基础设施自动化
+
+原有的部署发生在数据中心,因此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改造后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用AWS作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组研究AWS以及相关的DevOps配套工具。
+
+目前,国内外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。
+
+### 微服务生态系统
+
+微服务的生态系统是指微服务实施过程相关的协作部分,涉及部分较多,譬如测试机制、持续集成、自动化部署、细粒度监控、日志聚合、告警、持续交付,以及大家非常关注的服务注册、服务发现机制等。
+
+这部分的灵活性比较大,因为目前如上说的每一个领域都有很多优秀的工具。譬如日志聚合目前业界的方案通常为ELK、AWS的部署使用CloudFormation更灵活,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工具都具有告警功能,PagerDuty也提供更专业的告警服务。服务注册和发现有Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。
+
+### 开发框架的演进
+
+开发框架是团队在构建微服务的过程中,不断总结,梳理出的快速开发微服务的相关工具和框架。
+
+我们基于Ruby构建了快速开发框架,主要包括四部分,如下图所示:
+
+![](/assets/images/rapid_development_framework_based_on_ruby.jpeg)
+
+1. 开发模板
+
+   使用Grape作为Web框架,HAL作为API通信规约,RSpec作为测试框架。同时,还定义了一组Rake任务,譬如运行测试,查看测试报告,将当前的服务生成RPM/AMI镜像等。
+   
+   除此之外,该模板也提供了一组通用的URL,帮助使用者查看微服务的版本、配置信息以及检测是否健康运行等。譬如/diagnostic/config, /health, /version, /heartbeat
+
+2. 代码生成工具
+
+   通过指定不同参数,代码生成工具能创建具有数据库访问能力,或者是包含异步队列处理的微服务应用。同时,也可以标记该服务是数据消费者还是数据生产者,帮助理解多个微服务之间的联系
+
+3. 持续集成模板
+
+   基于持续集成服务器Bamboo,创建了模板工程,并定义主要的阶段:
+   
+   > 验证:运行单元测试,契约测试
+   >
+   > 构建:构建基于AMI的部署包
+   >
+   > 部署:基于指定版本的AMI,快速部署到验收环境或者产品环境上。
+
+   利用这样的持续集成模板工程,花费很少的时间,就可以针对新建的微服务应用,快速配置其对应的持续集成环境。
+
+4. 基于Asgard的部署工具
+
+   Asgard是由Netflix开发的基于Web的AWS云部署和管理工具。基于Asgard,我们实现了命令行部署工具,部署时通过一条命令,提供服务名称、版本号,就可自动完成资源的创建、部署、流量切换、删除旧的应用等操作。譬如:
+
+   > deploy [ServiceName] [ServiceVersion]
+
+### 团队运维自管理
+
+这一部分是关于团队的文化管理。也是对DevOPS的延伸,我们称为TMI(Team Managed Infrastructure)。
+
+目的是将分析、开发、测试以及资源创建、销毁、自动化部署的权利交给团队,由团队按需完成部署(加上看板的流程管理,而非Scrum的固定迭代,可以做到一天部署多次)。
+
+当然,这个环节非常依赖于成熟的监控以及告警机制,当出现问题时,能够有效的通知到责任人,快速反馈,快速修复。团队内部也会定期轮换Pager(出问题救火的人),培养团队以服务可用作为大家的共同目标,培养产品观念,而非项目观念。
+
+再回顾一下这个图:
+
+![](/assets/images/best_practices_for_legacy_system_reform.jpeg)
+   
+最后,和大家分享一下,我个人在微服务实施过程中总结的4句方针:
+
+由大到小,由粗到细
+
+关注运维,关注监控
+
+快速反馈,快速修复
+
+循序渐进,增量实现
+
+也希望大家能够支持我的书《微服务架构与实践》。

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/best_practices_for_legacy_system_reform.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/best_practices_for_legacy_system_reform.jpeg b/assets/images/best_practices_for_legacy_system_reform.jpeg
new file mode 100644
index 0000000..614efe9
Binary files /dev/null and b/assets/images/best_practices_for_legacy_system_reform.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/legacy_system_background.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/legacy_system_background.jpeg b/assets/images/legacy_system_background.jpeg
new file mode 100644
index 0000000..528710d
Binary files /dev/null and b/assets/images/legacy_system_background.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/legacy_system_reform_architecture.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/legacy_system_reform_architecture.jpeg b/assets/images/legacy_system_reform_architecture.jpeg
new file mode 100644
index 0000000..66c6597
Binary files /dev/null and b/assets/images/legacy_system_reform_architecture.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/legacy_system_reform_strategy.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/legacy_system_reform_strategy.jpeg b/assets/images/legacy_system_reform_strategy.jpeg
new file mode 100644
index 0000000..5994a03
Binary files /dev/null and b/assets/images/legacy_system_reform_strategy.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/microservice_definition_by_martin_folwer.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/microservice_definition_by_martin_folwer.jpeg b/assets/images/microservice_definition_by_martin_folwer.jpeg
new file mode 100644
index 0000000..abb74da
Binary files /dev/null and b/assets/images/microservice_definition_by_martin_folwer.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/microservice_reform_strategy.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/microservice_reform_strategy.jpeg b/assets/images/microservice_reform_strategy.jpeg
new file mode 100644
index 0000000..327116e
Binary files /dev/null and b/assets/images/microservice_reform_strategy.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/rapid_development_framework_based_on_ruby.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/rapid_development_framework_based_on_ruby.jpeg b/assets/images/rapid_development_framework_based_on_ruby.jpeg
new file mode 100644
index 0000000..942b913
Binary files /dev/null and b/assets/images/rapid_development_framework_based_on_ruby.jpeg differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a00c8db2/assets/images/why_microservice_show_up.jpeg
----------------------------------------------------------------------
diff --git a/assets/images/why_microservice_show_up.jpeg b/assets/images/why_microservice_show_up.jpeg
new file mode 100644
index 0000000..2daa4d8
Binary files /dev/null and b/assets/images/why_microservice_show_up.jpeg differ


[07/51] incubator-servicecomb-website git commit: Devide FAQ to independent module, and add faqs

Posted by jb...@apache.org.
Devide FAQ to independent module, and add faqs

Signed-off-by: Zen Lin <li...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/455450a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/455450a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/455450a0

Branch: refs/heads/asf-site
Commit: 455450a0ff08dedc8ee5b6f69b05233171265053
Parents: b76908d
Author: Zen Lin <li...@huawei.com>
Authored: Sun Oct 29 19:40:03 2017 +0800
Committer: Eric Lee <li...@huawei.com>
Committed: Sun Oct 29 21:42:32 2017 +0800

----------------------------------------------------------------------
 _config.yml                   |  13 ++
 _data/navigation.yml          |  30 +--
 _data/ui-text.yml             |   2 +
 _faqs/cn/faq.md               | 424 +++++++++++++++++++++++++++++++++++++
 _faqs/cn/huawei-cloud-faq.md  |  41 ++++
 _faqs/faq.md                  |  59 ++++++
 _faqs/huawei-cloud-faq.md     |  41 ++++
 _users/cn/faq.md              | 415 ------------------------------------
 _users/cn/huawei-cloud-faq.md |  41 ----
 9 files changed, 596 insertions(+), 470 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_config.yml
----------------------------------------------------------------------
diff --git a/_config.yml b/_config.yml
index 4a8c4e3..6a25b62 100644
--- a/_config.yml
+++ b/_config.yml
@@ -117,6 +117,7 @@ include:
   - _developers
   - _docs
   - _users
+  - _faqs
 exclude:
   - "*.sublime-project"
   - "*.sublime-workspace"
@@ -237,6 +238,18 @@ defaults:
       comments: false
       sidebar:
         nav: "docs"
+  # _faqs
+  - scope:
+      path: "_faqs"
+      type: pages
+    values:
+      layout: single
+      read_time: false
+      author_profile: false
+      share: false
+      comments: false
+      sidebar:
+        nav: "faqs"
 
 # Sass/SCSS
 sass:

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_data/navigation.yml
----------------------------------------------------------------------
diff --git a/_data/navigation.yml b/_data/navigation.yml
index 54d7fd1..97fce9f 100755
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -10,6 +10,8 @@ t:
         url: /developers/
       - title: "Blogs"
         url: /year-archive/
+      - title: "FAQ"
+        url: /faqs/
 
     docs:
       - title: "Quick Start"
@@ -37,8 +39,6 @@ t:
             url: /users/
           - title: Setup Environment
             url: /users/setup-environment/
-          - title: FAQ
-            url: /users/faq/
 
       - title: Develop Service Provider
         children:
@@ -102,11 +102,6 @@ t:
           - title: Use TLS
             url: /users/use-tls/
 
-      - title: Huawei Public Cloud
-        children:
-          - title: FAQ
-            url: /users/huawei-cloud-faq/
-
     developers:
       - title: "Developer Guide"
         url: /developers/
@@ -115,6 +110,12 @@ t:
       - title: "Code Submit Guide"
         url: /developers/submit-codes/
 
+    faqs:
+      - title: "FAQ"
+        url: /faqs/
+      - title: "FAQ of Huawei Cloud"
+        url: /faqs/faqs-huawei-cloud/
+
   cn:
     main:
       - title: "快速入门"
@@ -125,6 +126,8 @@ t:
         url: /cn/developers/
       - title: "博文"
         url: /cn/year-archive/
+      - title: "常见问题"
+        url: /cn/faqs/
 
     docs:
       - title: "快速入门"
@@ -152,8 +155,6 @@ t:
             url: /cn/users/
           - title: 环境配置
             url: /cn/users/setup-environment/
-          - title: 常见问题
-            url: /cn/users/faq/
 
       - title: 开发服务提供者
         children:
@@ -217,11 +218,6 @@ t:
           - title: 使用TLS通信
             url: /cn/users/use-tls/
 
-      - title: 华为公有云
-        children:
-          - title: 常见问题
-            url: /cn/users/huawei-cloud-faq/
-
     developers:
       - title: "开发者指南"
         url: /cn/developers/
@@ -229,3 +225,9 @@ t:
         url: /cn/developers/setup-develop-environment/
       - title: "代码提交指南"
         url: /cn/developers/submit-codes/
+    
+    faqs:
+      - title: "常见问题"
+        url: /cn/faqs/
+      - title: "华为公有云常见问题"
+        url: /cn/faqs/faqs-huawei-cloud/

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_data/ui-text.yml
----------------------------------------------------------------------
diff --git a/_data/ui-text.yml b/_data/ui-text.yml
index f8b7018..64af9bb 100644
--- a/_data/ui-text.yml
+++ b/_data/ui-text.yml
@@ -7,6 +7,7 @@ en: &DEFAULT_EN
   quick_start		     : "Quick Start"
   user_guide		     : "User Guide"
   blogs                      : "Blogs"
+  faqs                       : "FAQ"
   faq			     : "Common Questions"
   contribute		     : "Contribute"
   report_issue		     : "Report a Doc Issue"
@@ -367,6 +368,7 @@ zh: &DEFAULT_ZH
   quick_start		     : "快速入门"
   user_guide		     : "用户指南"
   blogs                      : "博客"
+  faqs                       : "常见问题"
   faq			     : "常见问题"
   contribute		     : "贡献"
   report_issue		     : "报告本网页问题"

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_faqs/cn/faq.md
----------------------------------------------------------------------
diff --git a/_faqs/cn/faq.md b/_faqs/cn/faq.md
new file mode 100644
index 0000000..fc50549
--- /dev/null
+++ b/_faqs/cn/faq.md
@@ -0,0 +1,424 @@
+---
+title: "常见问题"
+lang: cn
+ref: faq
+permalink: /cn/faqs/
+excerpt: "常见问题"
+last_modified_at: 2017-10-29T15:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+* **Q: ServiceComb和SpringCloud是什么关系,具体的应用场景是什么?**
+   
+   A: ServiceComb是华为基于内部多个大型IT系统实践提炼出来的一套微服务开发框架,在开发态基于最佳实践封装了一套微服务运行模型,这些能力对用户完全透明,可以通过配置引入功能和对其进行调整。在运维阶段充分考虑了微服务运维,提供了丰富的监控指标和动态治理能力。      
+   B: ServiceComb的这套能力可以作为一个单独的开发框架,在需要轻量级微服务解决方案的的场景中单独使用,也可以建立在SpringCloud上,与SpringCloud提供的其他组件一起工作,在重量级场景中和SpringCloud一起产生 “1+1大于2”的效果。
+
+* **Q: 用IntelliJ的免费版开发,有什么问题?**   
+    
+   A: 没有问题,使用IntelliJ 开发,可参考 [Setup Developer Environment](/cn/developers/setup-develop-environment/) 进行相应的环境配置。    
+   
+* **Q: 使用Java-Chassis这个框架时有什么需要注意的地方?**
+
+   A: 使用Java-Chassis有以下这些限制:
+   (1) 0.3.0-SNAPSHOT之前的版本不支持类似`@GetMapping`这样的标注。
+   (2) 所用到的HTTP请求方法一样时,如GET,则方法名不能重载。这是由于生成契约时方法名会作为其Operation ID,所以要保证其唯一性。
+   (3) 方法和类必须是public的。
+
+* **Q: 使用*spring-boot-starter-provider*这个依赖时,在*application.yml*文件中声明的`spring.main.web-application`属性并没有生效?**
+
+   A: 使用*starter-provider*这个依赖时,如果用到了servlet这种方式时,需要在*application.properties*这个文件引入`spring.main.web-application=true`这样的属性或者在*application.yml*文件中声明,但是此时需要新建一个*application.properties*的文件,其内容可以为空。
+
+* **Q: 网关依赖的jar和其他微服务的一样吗?**
+
+   ```xml
+   <groupId>io.servicecomb</groupId>
+   <artifactId>spring-boot-starter-provider</artifactId>
+   ```
+
+   A: 网关除了要依赖`spring-boot-starter-provider`之外还要依赖`spring-boot-starter-discovery`,可以参考[LinuxCon-Beijing-Workshop](https://github.com/ServiceComb/LinuxCon-Beijing-WorkShop)中manager的实现。
+
+* **Q: 网关需要像其他微服务一样配置assembly吗?其中的/maven/gateway这个路径是docker maven plugin默认的吗?**
+
+   A: 需要,由于项目现在使用的是spring-boot的打包方式,docker maven plugin也是依赖打包生成的文件来生成docker镜像的。/maven这个路径是docker maven plugin指定的,而gateway这个路径是在assembly中指定的。
+
+* **Q: 服务接口的返回类型可以是任意类型吗?还是必须是responseEntity?**
+
+   A: 可以,具体可以参考java-chassis的[integration-test的实现](https://github.com/ServiceComb/java-chassis/blob/master/integration-tests/springmvc-tests/src/test/java/io/servicecomb/demo/springmvc/tests/SpringMvcIntegrationTestBase.java#L145)。
+
+* **Q: 微服务启动后,无法正确调用接口,使用的代码为:**
+
+   ```java
+   @RestController
+   @RestSchema(schemaId = "worker")
+   public class WorkerController {
+     @RequestMapping(value="/count", method=RequestMethod.GET)
+     public int getWorkerNumbers() {
+       ...
+     }
+   }
+   ```
+
+   A: 在没有指明根路径的情况下,默认会使用类名作为其根路径,即上述代码中可访问的路径应为`/WorkerController/count`。如果想要实现`/count`这样的访问,则要指明根路径:
+
+   ```java
+   @RequestMapping(value = "/")
+   public class WorkerController {}
+   ```
+
+* **Q: 如果没有指定RequestMapping这个标注的value时,默认的基本路径是什么?**
+
+   A: 假设你的Controller类名为*HelloController*,那么基本路径就是/HelloController。
+
+* **Q: 在eclipse下修改了microservice.yaml配置文件下的端口号,启动程序后,端口号没生效?**
+
+   A: 需要单独导入sample项目,如果导入整个ServiceComb-Java-Chassis项目,由于sample目录不在ServiceComb-Java-Chassis模块中,IDE不会对sample进行编译,eclipse下并没有提示错误信息,IDEA下会有提示信息。因此eclipse启动sample的demo会发现修改了端口没有生效。
+
+* **Q: 如何自定义某个Java方法对应的REST接口里的HTTP Status Code?**
+
+   A: 对于正常的返回值,可以通过SwaggerAnnotation实现,例如:
+
+   ```java
+   @ApiResponse(code = 300, response = String.class, message = "")
+   public int test(int x) {
+     return 100;
+   }
+   ```
+   
+   对于异常的返回值,可以通过抛出自定义的InvocationException实现,例如:、
+   
+   ```java
+   public String testException(int code) {
+     String strCode = String.valueOf(code);
+       switch (code) {
+         case 200:
+           return strCode;
+         case 456:
+           throw new InvocationException(code, strCode, strCode + " error");
+         case 556:
+           throw new InvocationException(code, strCode, Arrays.asList(strCode + " error"));
+         case 557:
+           throw new InvocationException(code, strCode, Arrays.asList(Arrays.asList(strCode + " error")));
+         default:
+           break;
+       }
+   
+     return "not expected";
+   }
+   ```
+
+
+* **Q: 如何定制自己微服务的日志配置?**
+
+   A: ServiceComb不绑定日志器,只是使用了slf4j,用户可以自由选择log4j/log4j2/logback等等。ServiceComb提供了一个log4j的扩展,在标准log4j的基础上,支持log4j的properties文件的增量配置。
+   * 默认以规则:"classpath\*:config/log4j.properties"加载配置文件
+   * 实际会搜索出classpath中所有的```config/log4j.properties和config/log4j.*.properties```, 从搜索出的文件中切出```\*```的部分,进行alpha排序,然后按顺序加载,最后合成的文件作为log4j的配置文件。
+   * 如果要使用ServiceComb的log4j扩展,则需要调用Log4jUtils.init,否则完全按标准的日志器的规则使用。
+
+* **Q: 当服务配置了多个transport的时候,在运行时是怎么选择使用哪个transport的?**
+
+   A: 
+   * ServiceComb的consumer、transport、handler、producer之间是解耦的,各功能之间通过契约定义联合在一起工作的,即:
+      consumer使用透明rpc,还是springmvc开发与使用highway,还是RESTful在网络上传输没有关系与producer是使用透明rpc,还是jaxrs,或者是springmvc开发,也没有关系handler也不感知,业务开发方式以及传输方式
+   
+   * consumer访问producer,在运行时的transport选择上,总规则为:
+      consumer的transport与producer的endpoint取交集,如果交集后,还有多个transport可选择,则轮流使用
+   
+      分解开来,存在以下场景:
+   
+   * 当一个微服务producer同时开放了highway以及RESTful的endpoint
+      * consumer进程中只部署了highway transport jar,则只会访问producer的highway endpoint
+      * consumer进程中只部署了RESTful transport jar,则只会访问producer的RESTful endpoint
+      * consumer进程中,同时部署了highway和RESTful transport jar,则会轮流访问producer的highway、RESTful endpoint
+   
+      如果,此时consumer想固定使用某个transport访问producer,可以在consumer进程的microservice.yaml中配置,指定transport的名称:
+
+      ```yaml
+      servicecomb:
+        references:
+          <service_name>:
+            transport: highway
+      ```
+   
+   * 当一个微服务producer只开放了highway的endpoint
+      * consumer进程只部署了highway transport jar,则正常使用highway访问
+      * consumer进程只部署了RESTful transport jar,则无法访问
+      * consumer进程同时部署了highway和RESTful transport jar,则正常使用highway访问
+   
+   * 当一个微服务producer只开放了RESTful的endpoint
+      * consumer进程只部署了highway transport jar,则无法访问
+      * consumer进程只部署了RESTful transport jar,则正常使用RESTful访问
+      * consumer进程同时部署了highway和RESTful transport jar,则正常使用RESTful访问
+
+* **Q: swagger body参数类型定义错误,导致服务中心注册的内容没有类型信息**
+
+   **现象描述:**
+   
+   定义如下接口,将参数放到body传递
+   
+   ```yaml
+   /testInherate:
+       post:
+         operationId: "testInherate"
+         parameters:
+         - in: "body"
+           name: "xxxxx"
+           required: false
+           type: string
+         responses:
+           200:
+             description: "response of 200"
+             schema:
+               $ref: "#/definitions/ReponseImpl"
+   ```
+   
+   采用上面方式定义接口。在服务注册以后,从服务中心查询下来的接口type: string 丢失,变成了:
+   
+   ```yaml
+   /testInherate:
+       post:
+         operationId: "testInherate"
+         parameters:
+         - in: "body"
+           name: "xxxxx"
+           required: false
+         responses:
+           200:
+             description: "response of 200"
+             schema:
+               $ref: "#/definitions/ReponseImpl"
+   ```
+   
+   如果客户端没有放置swagger,还会报告如下异常:
+   
+   ```text
+      Caused by: java.lang.ClassFormatError: Method "testInherate" in class ? has illegal signature "
+   ```
+   
+   A:定义body参数的类型的时候,需要使用schema,不能直接使用type。
+   
+   ```yaml
+   /testInherate:
+       post:
+         operationId: "testInherate"
+         parameters:
+         - in: "body"
+           name: "request"
+           required: false
+           schema:
+             type: string
+         responses:
+           200:
+             description: "response of 200"
+             schema:
+               $ref: "#/definitions/ReponseImpl"
+   ```
+
+* **Q: ServiceComb微服务框架服务调用是否使用长连接?**
+
+   A: http使用的是长连接(有超时时间),highway方式使用的是长连接(一直保持)。
+   
+* **Q: 服务断连服务中心注册信息是否自动删除**
+
+   A: 服务中心心跳检测到服务实例不可用,只会移除服务实例信息,服务的静态数据不会移除。
+
+* **Q: 如果使用tomcat方式集成ServiceComb微服务框架,如何实现服务注册**
+
+   A: 如果使用cse sdk servlet方式(使用transport-rest-servlet依赖)制作为war包部署到tomcat,需要保证,服务描述文件(microservice.yaml)中rest端口配置和外置容器一致才能实现该服务的正确注册。否则无法感知tomcat开放端口。
+
+* **Q: 如果使用tomcat方式集成CSE微服务框架,服务注册的时候如何将war包部署的上下文注册到服务中心**
+
+   A: 发布服务接口的时候需要将war包部署的上下文(context)放在baseurl最前面,这样才能保证注册到服务中心的路径是完整的路径(包含了上下文)。实例:
+
+   ```java
+   @path(/{context}/xxx)
+   class ServiceA
+   ```
+   
+* **Q: ServiceComb微服务框架如何实现数据多个微服务间透传**
+
+   A:
+   透传数据塞入:
+   
+   ```java
+   CseHttpEntity<xxxx.class> httpEntity = new CseHttpEntity<>(xxx);
+   //透传内容
+   httpEntity.addContext("contextKey","contextValue");
+   ResponseEntity<String> responseEntity = RestTemplateBuilder.create().exchange("cse://springmvc/springmvchello/sayhello",HttpMethod.POST,httpEntity,String.class);
+   ```
+   
+   透传数据获取:
+   
+   ```java
+   @Override
+   @RequestMapping(path="/sayhello",method = RequestMethod.POST)
+   public String sayHello(@RequestBody Person person,InvocationContext context){
+     //透传数据获取
+     context.getContext();
+     return "Hello person " + person.getName();
+   }
+   ```
+
+* **Q: ServiceComb微服务框架服务如何自定义返回状态码?**
+
+   A:
+   ```java
+   @Override
+   @RequestMapping(path = "/sayhello",method = RequestMethod.POST)
+   public String sayHello(@RequestBody Person person){
+     InvocationContext context = ContextUtils.getInvocationContext();
+     //自定义状态码
+     context.setStatus(Status.CREATED);
+     return "Hello person "+person.getName();
+   }
+   ```
+   
+* **Q: ServiceComb body Model部分暴露**
+
+   A: 一个接口对应的body对象中,可能有一些属性是内部的,不想开放出去,生成schema的时候不要带出去,使用:
+   
+   ```java
+   @ApiModelProperty(hidden = true)
+   ```
+   
+* **Q: ServiceComb框架获取远端consumer的地址**
+
+   A: 如果使用http rest方式(使用transport-rest-vertx依赖)可以用下面这种方式获取:
+
+   ```java
+   AbstractProducerContextArgMapper httpRequestCreator = (AbstractProducerContextArgMapper)invocation.getHandlerContext().get(RestConst.HTTP_REQUEST_CREATOR);
+   if(httpRequestCreator != null){
+     HttpServletRequest req = (HttpServletRequest)httpRequestCreator.createContextArg(invocation);
+     System.out.println(req.getRemoteHost());
+   }
+   ```
+   
+   实际场景是拿最外层的地址,所以应该是LB传入到edgeservice,edgeService再放到context外下传递。
+   
+* **Q: ServiceComb不支持泛型**
+
+   A: 明确不支持,需要修改接口,接口修改后需要修改版本号,以免consumer还是使用旧的版本。
+
+* **Q: ServiceComb对handler描述**
+
+   A: consumer默认的handler是simpleLB,没有配置的时候handler链会使用这个,如果配置了handler,里面一定要包含lb的handler,否则调用报错,需要在文档里面进行说明。
+
+* **Q: ServiceComb日志替换**
+
+   A: CSE java-chassis日志推荐方式是在启动的时候使用Log4jUtils.init\(\),直接使用推荐的Log4j来做日志管理,但是有些场景不想用log4j,比如想使用log4j2或者logback,下面以log4j2为例简单介绍下步骤:
+
+   1. 在代码里面不要使用Log4jUtils.init\(\);
+   2. 去掉log4j的配置文件(不删掉也没关系,因为不会使用);
+   3. exclude掉CSE框架引入的log4j,例如:
+      ```xml
+      <dependency>
+          <groupId>io.servicecomb</groupId>
+          <artifactId>provider-springmvc</artifactId>
+          <exclusions>
+              <exclusion>
+                  <groupId>log4j</groupId>
+                  <artifactId>log4j</artifactId>
+              </exclusion>
+          </exclusions>
+      </dependency>
+      ```
+   4. 引入log4j2的依赖
+   
+      ```xml
+      <dependency>    
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-slf4j-impl</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-api</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>org.apache.logging.log4j</groupId>
+          <artifactId>log4j-core</artifactId>
+      </dependency>
+      ```
+   
+      如果没有版本依赖管理,还需要填写上版本号。
+   
+   5. 加入log4j2的配置文件log4j2.xml,关于这个请查看官方说明,例如:
+   
+      ```xml
+       <?xml version="1.0" encoding="UTF-8"?>
+       <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+       <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
+       <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
+       <configuration status="WARN" monitorInterval="30">
+           <!--先定义所有的appender-->
+           <appenders>
+           <!--这个输出控制台的配置-->
+               <console name="Console" target="SYSTEM_OUT">
+               <!--输出日志的格式-->
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+               </console>
+               <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
+               <File name="log" fileName="log/test.log" append="false">
+                  <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
+               </File>
+               <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
+               <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
+                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
+                   <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
+                   <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+                   <Policies>
+                       <TimeBasedTriggeringPolicy/>
+                       <SizeBasedTriggeringPolicy size="100 MB"/>
+                   </Policies>
+               </RollingFile>
+               <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
+                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
+                   <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+                   <Policies>
+                       <TimeBasedTriggeringPolicy/>
+                       <SizeBasedTriggeringPolicy size="100 MB"/>
+                   </Policies>
+                   <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
+                   <DefaultRolloverStrategy max="20"/>
+               </RollingFile>
+               <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
+                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
+                   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
+                   <Policies>
+                       <TimeBasedTriggeringPolicy/>
+                       <SizeBasedTriggeringPolicy size="100 MB"/>
+                   </Policies>
+               </RollingFile>
+           </appenders>
+           <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
+           <loggers>
+               <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
+               <logger name="org.springframework" level="INFO"></logger>
+               <logger name="org.mybatis" level="INFO"></logger>
+               <root level="all">
+                   <appender-ref ref="Console"/>
+                   <appender-ref ref="RollingFileInfo"/>
+                   <appender-ref ref="RollingFileWarn"/>
+                   <appender-ref ref="RollingFileError"/>
+               </root>
+           </loggers>
+       </configuration>
+      ```
+   
+   6. 启动服务进行验证
+
+* **Q: netty版本问题**
+
+   A: netty3和netty4是完全不同的三方件,因为坐标跟package都不相同,所以可以共存,但是要注意小版本问题,小版本必须使用CSE的版本。
+
+* **Q: 服务超时设置**
+
+   A: 在微服务描述文件(microservice.yaml)中添加如下配置:
+
+   ```yaml
+   cse:
+     request:
+       timeout: 30000
+   ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_faqs/cn/huawei-cloud-faq.md
----------------------------------------------------------------------
diff --git a/_faqs/cn/huawei-cloud-faq.md b/_faqs/cn/huawei-cloud-faq.md
new file mode 100644
index 0000000..e66a69e
--- /dev/null
+++ b/_faqs/cn/huawei-cloud-faq.md
@@ -0,0 +1,41 @@
+---
+title: "华为公有云常见问题"
+lang: cn
+ref: huawei-cloud-faq
+permalink: /cn/faqs/faqs-huawei-cloud/
+excerpt: "华为公有云常见问题"
+last_modified_at: 2017-10-29T15:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+1. **Q: 在使用华为公有云时,设置镜像的标签只需要和上一次的标签不一样还是要和之前的都不一样?**
+
+   A: 由于Docker本身的机制中并没有实现每次都从远端拉取镜像的功能,因此,只要本地中有一个版本的镜像存在而且每次都通过该版本的标签来访问镜像时,读取的镜像则为最开始上传的镜像,后续对该标签镜像的更新并不会在本地生效。因此现有两种解决方案:
+
+   (1) 新上传的镜像的标签和之前的都不一样。
+
+   (2) 登录到后台去将原版本标签的镜像删除。
+
+   拓展:如果使用了华为公有云上面的编排功能,则可以通过设置imagePullPolicy为Always避免该问题。
+   
+2. **Q: 华为公有云运行时报错:WARN com.huawei.paas.monitor.DataFactory: Upload monitor data error. 使用的配置为:**
+
+   ```yaml
+   cse:
+     monitor:
+       handler:
+         chain:
+           Provider:
+             default: bizkeeper-provider
+   ```
+
+   A: 这个是配置文件的错误,handler应该是在cse的下一级而不是monitor的下一级,正确的配置是:
+
+   ```yaml
+   cse:
+     handler:
+       chain:
+         Provider:
+           default: bizkeeper-provider
+   ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_faqs/faq.md
----------------------------------------------------------------------
diff --git a/_faqs/faq.md b/_faqs/faq.md
new file mode 100644
index 0000000..9738dab
--- /dev/null
+++ b/_faqs/faq.md
@@ -0,0 +1,59 @@
+---
+title: "FAQ"
+lang: en
+ref: common-faq
+permalink: /faqs/ 
+excerpt: "FAQ"
+last_modified_at: 2017-10-29T10:01:43-04:00
+---
+
+1. **Q: What need to be cautious when using Java-Chassis?**
+
+   A: There are a few restrictions when using Java-Chassis:
+   * Before version 0.3.0-SNAPSHOT, it does not support annotations like `@GetMapping`.
+   * When using the same HTTP request method, e.g. GET, the method name need to be unique as it will become operation ID when swagger generates contracts.
+   * Class and method name need to be public.
+
+2. **Q: When using the *spring-boot-starter-provider* dependency, property like `spring.main.web-environment` not working in *application.yml* file.**
+
+   A: When you need both the starter provider dependency and the servlet, you need to declare `spring.main.web-environment` in *application.properties* file or declare it in *application.yml* file and create an empty *application.properties* file.
+
+3. **Q: What's the dependency differences between gateway and other microservices?**
+
+   ```xml
+   <groupId>io.servicecomb</groupId>
+   <artifactId>spring-boot-starter-provider</artifactId>
+   ```
+
+   A: Gateway depends on not only the `spring-boot-starter-provider`, but also the `spring-boot-starter-discovery`. This can refer to the *manger* implementation of [LinuxCon-Beijing-Workshop](https://github.com/ServiceComb/LinuxCon-Beijing-WorkShop).
+
+4. **Q: Do gateway need to configure assembly like the other microservices? Is */maven/gateway* the default path of the docker maven plugin?**
+
+   A: Yes. Docker maven plugin relies on the assembly files to generate docker image. */maven* is the default path of docker maven plugin and */gateway* is the path defined in the assembly file.
+
+5. **Q: Are there any restrictions of the return type of our API? Should it be the type of ResponseEntity?**
+
+   A: No, examples can refer to [the implementation of integration-test](https://github.com/ServiceComb/java-chassis/blob/master/integration-tests/springmvc-tests/src/test/java/io/servicecomb/demo/springmvc/tests/SpringMvcIntegrationTestBase.java#L145) in java-chassis.
+
+6. **Q: Our API can not be accessed after microservices are up. It just returns *404 Not Found*. The codes we use is as follows:**
+
+   ```java
+   @RestController
+   @RestSchema(schemaId = "worker")
+   public class WorkerController {
+     @RequestMapping(value="/count", method=RequestMethod.GET)
+     public int getWorkerNumbers() {
+       ...
+     }
+   }
+   ```
+
+   A: Without specifying the base path, ServiceComb will use the classname as the base path. Hence, the path should be `/WorkerController/count` in the previous code. If you want to access path like `/count`, you need to specify base path as `/` as follows:
+   ```java
+   @RequestMapping(value = "/")
+   public class WorkerController {}
+   ```
+
+7. **Q: What\'s the default base path if I have not declared the value of RequestMapping annotation?**
+
+   A: Supposed the class name of your controller is *HelloController*, the base path is /HelloController.

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_faqs/huawei-cloud-faq.md
----------------------------------------------------------------------
diff --git a/_faqs/huawei-cloud-faq.md b/_faqs/huawei-cloud-faq.md
new file mode 100644
index 0000000..d93d971
--- /dev/null
+++ b/_faqs/huawei-cloud-faq.md
@@ -0,0 +1,41 @@
+---
+title: "Huawei Cloud FAQ"
+lang: en
+ref: huawei-cloud-faq
+permalink: /faqs/faqs-huawei-cloud/
+excerpt: "Huawei Cloud FAQ"
+last_modified_at: 2017-10-29T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+1. **Q: When we push images to Huawei Public Cloud, what needs to be careful about the image tag?**
+
+   A:  It needs to be different with all uploaded images. As Docker does not pull image from remote every time it starts up a container. Hence, the Docker does not know whether the image updated or not. There are two solutions for this:
+
+   (1) Use different image tag every time you upload a image.
+
+   (2) Delete the image in the backend manually.
+
+   P.S. If you use the Huawei Cloud's orchestration, you can avoid this by setting *imagePullPolicy* to *Always*.
+
+2. **Q: We encountered this error when using Huawei Public Cloud: *WARN com.huaewi.paas.monitor.DataFactory: Upload monitor data error.* The configuration we use is as follows:**
+
+   ```yaml
+   cse:
+     monitor:
+       handler:
+         chain:
+           Provider:
+             default: bizkeeper-provider
+   ```
+
+   A: There are mistakes in your configuration files. `handler` should be the child of `cse` instead of `monitor`. The right configuration should be as follows:
+
+   ```yaml
+   cse:
+     handler:
+       chain:
+         Provider:
+           default: bizkeeper-provider
+   ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_users/cn/faq.md
----------------------------------------------------------------------
diff --git a/_users/cn/faq.md b/_users/cn/faq.md
deleted file mode 100644
index bc00ef6..0000000
--- a/_users/cn/faq.md
+++ /dev/null
@@ -1,415 +0,0 @@
----
-title: "常见问题"
-lang: cn
-ref: faq
-permalink: /cn/users/faq/
-excerpt: "常见问题"
-last_modified_at: 2017-08-15T15:01:43-04:00
-redirect_from:
-  - /theme-setup/
----
-
-* **Q: 使用Java-Chassis这个框架时有什么需要注意的地方?**
-
-   A: 使用Java-Chassis有以下这些限制:
-   (1) 0.3.0-SNAPSHOT之前的版本不支持类似`@GetMapping`这样的标注。
-   (2) 所用到的HTTP请求方法一样时,如GET,则方法名不能重载。这是由于生成契约时方法名会作为其Operation ID,所以要保证其唯一性。
-   (3) 方法和类必须是public的。
-
-* **Q: 使用*spring-boot-starter-provider*这个依赖时,在*application.yml*文件中声明的`spring.main.web-application`属性并没有生效?**
-
-   A: 使用*starter-provider*这个依赖时,如果用到了servlet这种方式时,需要在*application.properties*这个文件引入`spring.main.web-application=true`这样的属性或者在*application.yml*文件中声明,但是此时需要新建一个*application.properties*的文件,其内容可以为空。
-
-* **Q: 网关依赖的jar和其他微服务的一样吗?**
-
-   ```xml
-   <groupId>io.servicecomb</groupId>
-   <artifactId>spring-boot-starter-provider</artifactId>
-   ```
-
-   A: 网关除了要依赖`spring-boot-starter-provider`之外还要依赖`spring-boot-starter-discovery`,可以参考[LinuxCon-Beijing-Workshop](https://github.com/ServiceComb/LinuxCon-Beijing-WorkShop)中manager的实现。
-
-* **Q: 网关需要像其他微服务一样配置assembly吗?其中的/maven/gateway这个路径是docker maven plugin默认的吗?**
-
-   A: 需要,由于项目现在使用的是spring-boot的打包方式,docker maven plugin也是依赖打包生成的文件来生成docker镜像的。/maven这个路径是docker maven plugin指定的,而gateway这个路径是在assembly中指定的。
-
-* **Q: 服务接口的返回类型可以是任意类型吗?还是必须是responseEntity?**
-
-   A: 可以,具体可以参考java-chassis的[integration-test的实现](https://github.com/ServiceComb/java-chassis/blob/master/integration-tests/springmvc-tests/src/test/java/io/servicecomb/demo/springmvc/tests/SpringMvcIntegrationTestBase.java#L145)。
-
-* **Q: 微服务启动后,无法正确调用接口,使用的代码为:**
-
-   ```java
-   @RestController
-   @RestSchema(schemaId = "worker")
-   public class WorkerController {
-     @RequestMapping(value="/count", method=RequestMethod.GET)
-     public int getWorkerNumbers() {
-       ...
-     }
-   }
-   ```
-
-   A: 在没有指明根路径的情况下,默认会使用类名作为其根路径,即上述代码中可访问的路径应为`/WorkerController/count`。如果想要实现`/count`这样的访问,则要指明根路径:
-
-   ```java
-   @RequestMapping(value = "/")
-   public class WorkerController {}
-   ```
-
-* **Q: 如果没有指定RequestMapping这个标注的value时,默认的基本路径是什么?**
-
-   A: 假设你的Controller类名为*HelloController*,那么基本路径就是/HelloController。
-
-* **Q: 在eclipse下修改了microservice.yaml配置文件下的端口号,启动程序后,端口号没生效?**
-
-   A: 需要单独导入sample项目,如果导入整个ServiceComb-Java-Chassis项目,由于sample目录不在ServiceComb-Java-Chassis模块中,IDE不会对sample进行编译,eclipse下并没有提示错误信息,IDEA下会有提示信息。因此eclipse启动sample的demo会发现修改了端口没有生效。
-
-* **Q: 如何自定义某个Java方法对应的REST接口里的HTTP Status Code?**
-
-   A: 对于正常的返回值,可以通过SwaggerAnnotation实现,例如:
-
-   ```java
-   @ApiResponse(code = 300, response = String.class, message = "")
-   public int test(int x) {
-     return 100;
-   }
-   ```
-   
-   对于异常的返回值,可以通过抛出自定义的InvocationException实现,例如:、
-   
-   ```java
-   public String testException(int code) {
-     String strCode = String.valueOf(code);
-       switch (code) {
-         case 200:
-           return strCode;
-         case 456:
-           throw new InvocationException(code, strCode, strCode + " error");
-         case 556:
-           throw new InvocationException(code, strCode, Arrays.asList(strCode + " error"));
-         case 557:
-           throw new InvocationException(code, strCode, Arrays.asList(Arrays.asList(strCode + " error")));
-         default:
-           break;
-       }
-   
-     return "not expected";
-   }
-   ```
-
-
-* **Q: 如何定制自己微服务的日志配置?**
-
-   A: ServiceComb不绑定日志器,只是使用了slf4j,用户可以自由选择log4j/log4j2/logback等等。ServiceComb提供了一个log4j的扩展,在标准log4j的基础上,支持log4j的properties文件的增量配置。
-   * 默认以规则:"classpath\*:config/log4j.properties"加载配置文件
-   * 实际会搜索出classpath中所有的```config/log4j.properties和config/log4j.*.properties```, 从搜索出的文件中切出```\*```的部分,进行alpha排序,然后按顺序加载,最后合成的文件作为log4j的配置文件。
-   * 如果要使用ServiceComb的log4j扩展,则需要调用Log4jUtils.init,否则完全按标准的日志器的规则使用。
-
-* **Q: 当服务配置了多个transport的时候,在运行时是怎么选择使用哪个transport的?**
-
-   A: 
-   * ServiceComb的consumer、transport、handler、producer之间是解耦的,各功能之间通过契约定义联合在一起工作的,即:
-      consumer使用透明rpc,还是springmvc开发与使用highway,还是RESTful在网络上传输没有关系与producer是使用透明rpc,还是jaxrs,或者是springmvc开发,也没有关系handler也不感知,业务开发方式以及传输方式
-   
-   * consumer访问producer,在运行时的transport选择上,总规则为:
-      consumer的transport与producer的endpoint取交集,如果交集后,还有多个transport可选择,则轮流使用
-   
-      分解开来,存在以下场景:
-   
-   * 当一个微服务producer同时开放了highway以及RESTful的endpoint
-      * consumer进程中只部署了highway transport jar,则只会访问producer的highway endpoint
-      * consumer进程中只部署了RESTful transport jar,则只会访问producer的RESTful endpoint
-      * consumer进程中,同时部署了highway和RESTful transport jar,则会轮流访问producer的highway、RESTful endpoint
-   
-      如果,此时consumer想固定使用某个transport访问producer,可以在consumer进程的microservice.yaml中配置,指定transport的名称:
-
-      ```yaml
-      servicecomb:
-        references:
-          <service_name>:
-            transport: highway
-      ```
-   
-   * 当一个微服务producer只开放了highway的endpoint
-      * consumer进程只部署了highway transport jar,则正常使用highway访问
-      * consumer进程只部署了RESTful transport jar,则无法访问
-      * consumer进程同时部署了highway和RESTful transport jar,则正常使用highway访问
-   
-   * 当一个微服务producer只开放了RESTful的endpoint
-      * consumer进程只部署了highway transport jar,则无法访问
-      * consumer进程只部署了RESTful transport jar,则正常使用RESTful访问
-      * consumer进程同时部署了highway和RESTful transport jar,则正常使用RESTful访问
-
-* **Q: swagger body参数类型定义错误,导致服务中心注册的内容没有类型信息**
-
-   **现象描述:**
-   
-   定义如下接口,将参数放到body传递
-   
-   ```yaml
-   /testInherate:
-       post:
-         operationId: "testInherate"
-         parameters:
-         - in: "body"
-           name: "xxxxx"
-           required: false
-           type: string
-         responses:
-           200:
-             description: "response of 200"
-             schema:
-               $ref: "#/definitions/ReponseImpl"
-   ```
-   
-   采用上面方式定义接口。在服务注册以后,从服务中心查询下来的接口type: string 丢失,变成了:
-   
-   ```yaml
-   /testInherate:
-       post:
-         operationId: "testInherate"
-         parameters:
-         - in: "body"
-           name: "xxxxx"
-           required: false
-         responses:
-           200:
-             description: "response of 200"
-             schema:
-               $ref: "#/definitions/ReponseImpl"
-   ```
-   
-   如果客户端没有放置swagger,还会报告如下异常:
-   
-   ```text
-      Caused by: java.lang.ClassFormatError: Method "testInherate" in class ? has illegal signature "
-   ```
-   
-   A:定义body参数的类型的时候,需要使用schema,不能直接使用type。
-   
-   ```yaml
-   /testInherate:
-       post:
-         operationId: "testInherate"
-         parameters:
-         - in: "body"
-           name: "request"
-           required: false
-           schema:
-             type: string
-         responses:
-           200:
-             description: "response of 200"
-             schema:
-               $ref: "#/definitions/ReponseImpl"
-   ```
-
-* **Q: ServiceComb微服务框架服务调用是否使用长连接?**
-
-   A: http使用的是长连接(有超时时间),highway方式使用的是长连接(一直保持)。
-   
-* **Q: 服务断连服务中心注册信息是否自动删除**
-
-   A: 服务中心心跳检测到服务实例不可用,只会移除服务实例信息,服务的静态数据不会移除。
-
-* **Q: 如果使用tomcat方式集成ServiceComb微服务框架,如何实现服务注册**
-
-   A: 如果使用cse sdk servlet方式(使用transport-rest-servlet依赖)制作为war包部署到tomcat,需要保证,服务描述文件(microservice.yaml)中rest端口配置和外置容器一致才能实现该服务的正确注册。否则无法感知tomcat开放端口。
-
-* **Q: 如果使用tomcat方式集成CSE微服务框架,服务注册的时候如何将war包部署的上下文注册到服务中心**
-
-   A: 发布服务接口的时候需要将war包部署的上下文(context)放在baseurl最前面,这样才能保证注册到服务中心的路径是完整的路径(包含了上下文)。实例:
-
-   ```java
-   @path(/{context}/xxx)
-   class ServiceA
-   ```
-   
-* **Q: ServiceComb微服务框架如何实现数据多个微服务间透传**
-
-   A:
-   透传数据塞入:
-   
-   ```java
-   CseHttpEntity<xxxx.class> httpEntity = new CseHttpEntity<>(xxx);
-   //透传内容
-   httpEntity.addContext("contextKey","contextValue");
-   ResponseEntity<String> responseEntity = RestTemplateBuilder.create().exchange("cse://springmvc/springmvchello/sayhello",HttpMethod.POST,httpEntity,String.class);
-   ```
-   
-   透传数据获取:
-   
-   ```java
-   @Override
-   @RequestMapping(path="/sayhello",method = RequestMethod.POST)
-   public String sayHello(@RequestBody Person person,InvocationContext context){
-     //透传数据获取
-     context.getContext();
-     return "Hello person " + person.getName();
-   }
-   ```
-
-* **Q: ServiceComb微服务框架服务如何自定义返回状态码?**
-
-   A:
-   ```java
-   @Override
-   @RequestMapping(path = "/sayhello",method = RequestMethod.POST)
-   public String sayHello(@RequestBody Person person){
-     InvocationContext context = ContextUtils.getInvocationContext();
-     //自定义状态码
-     context.setStatus(Status.CREATED);
-     return "Hello person "+person.getName();
-   }
-   ```
-   
-* **Q: ServiceComb body Model部分暴露**
-
-   A: 一个接口对应的body对象中,可能有一些属性是内部的,不想开放出去,生成schema的时候不要带出去,使用:
-   
-   ```java
-   @ApiModelProperty(hidden = true)
-   ```
-   
-* **Q: ServiceComb框架获取远端consumer的地址**
-
-   A: 如果使用http rest方式(使用transport-rest-vertx依赖)可以用下面这种方式获取:
-
-   ```java
-   AbstractProducerContextArgMapper httpRequestCreator = (AbstractProducerContextArgMapper)invocation.getHandlerContext().get(RestConst.HTTP_REQUEST_CREATOR);
-   if(httpRequestCreator != null){
-     HttpServletRequest req = (HttpServletRequest)httpRequestCreator.createContextArg(invocation);
-     System.out.println(req.getRemoteHost());
-   }
-   ```
-   
-   实际场景是拿最外层的地址,所以应该是LB传入到edgeservice,edgeService再放到context外下传递。
-   
-* **Q: ServiceComb不支持泛型**
-
-   A: 明确不支持,需要修改接口,接口修改后需要修改版本号,以免consumer还是使用旧的版本。
-
-* **Q: ServiceComb对handler描述**
-
-   A: consumer默认的handler是simpleLB,没有配置的时候handler链会使用这个,如果配置了handler,里面一定要包含lb的handler,否则调用报错,需要在文档里面进行说明。
-
-* **Q: ServiceComb日志替换**
-
-   A: CSE java-chassis日志推荐方式是在启动的时候使用Log4jUtils.init\(\),直接使用推荐的Log4j来做日志管理,但是有些场景不想用log4j,比如想使用log4j2或者logback,下面以log4j2为例简单介绍下步骤:
-
-   1. 在代码里面不要使用Log4jUtils.init\(\);
-   2. 去掉log4j的配置文件(不删掉也没关系,因为不会使用);
-   3. exclude掉CSE框架引入的log4j,例如:
-      ```xml
-      <dependency>
-          <groupId>io.servicecomb</groupId>
-          <artifactId>provider-springmvc</artifactId>
-          <exclusions>
-              <exclusion>
-                  <groupId>log4j</groupId>
-                  <artifactId>log4j</artifactId>
-              </exclusion>
-          </exclusions>
-      </dependency>
-      ```
-   4. 引入log4j2的依赖
-   
-      ```xml
-      <dependency>    
-          <groupId>org.apache.logging.log4j</groupId>
-          <artifactId>log4j-slf4j-impl</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.logging.log4j</groupId>
-          <artifactId>log4j-api</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.logging.log4j</groupId>
-          <artifactId>log4j-core</artifactId>
-      </dependency>
-      ```
-   
-      如果没有版本依赖管理,还需要填写上版本号。
-   
-   5. 加入log4j2的配置文件log4j2.xml,关于这个请查看官方说明,例如:
-   
-      ```xml
-       <?xml version="1.0" encoding="UTF-8"?>
-       <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
-       <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
-       <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
-       <configuration status="WARN" monitorInterval="30">
-           <!--先定义所有的appender-->
-           <appenders>
-           <!--这个输出控制台的配置-->
-               <console name="Console" target="SYSTEM_OUT">
-               <!--输出日志的格式-->
-                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
-               </console>
-               <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
-               <File name="log" fileName="log/test.log" append="false">
-                  <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
-               </File>
-               <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
-               <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
-                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
-                   <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
-                   <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
-                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
-                   <Policies>
-                       <TimeBasedTriggeringPolicy/>
-                       <SizeBasedTriggeringPolicy size="100 MB"/>
-                   </Policies>
-               </RollingFile>
-               <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
-                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
-                   <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
-                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
-                   <Policies>
-                       <TimeBasedTriggeringPolicy/>
-                       <SizeBasedTriggeringPolicy size="100 MB"/>
-                   </Policies>
-                   <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
-                   <DefaultRolloverStrategy max="20"/>
-               </RollingFile>
-               <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
-                            filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
-                   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
-                   <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
-                   <Policies>
-                       <TimeBasedTriggeringPolicy/>
-                       <SizeBasedTriggeringPolicy size="100 MB"/>
-                   </Policies>
-               </RollingFile>
-           </appenders>
-           <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
-           <loggers>
-               <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
-               <logger name="org.springframework" level="INFO"></logger>
-               <logger name="org.mybatis" level="INFO"></logger>
-               <root level="all">
-                   <appender-ref ref="Console"/>
-                   <appender-ref ref="RollingFileInfo"/>
-                   <appender-ref ref="RollingFileWarn"/>
-                   <appender-ref ref="RollingFileError"/>
-               </root>
-           </loggers>
-       </configuration>
-      ```
-   
-   6. 启动服务进行验证
-
-* **Q: netty版本问题**
-
-   A: netty3和netty4是完全不同的三方件,因为坐标跟package都不相同,所以可以共存,但是要注意小版本问题,小版本必须使用CSE的版本。
-
-* **Q: 服务超时设置**
-
-   A: 在微服务描述文件(microservice.yaml)中添加如下配置:
-
-   ```yaml
-   cse:
-     request:
-       timeout: 30000
-   ```

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/455450a0/_users/cn/huawei-cloud-faq.md
----------------------------------------------------------------------
diff --git a/_users/cn/huawei-cloud-faq.md b/_users/cn/huawei-cloud-faq.md
deleted file mode 100644
index 42cba46..0000000
--- a/_users/cn/huawei-cloud-faq.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: "华为公有云常见问题"
-lang: cn
-ref: huawei-cloud-faq
-permalink: /cn/users/huawei-cloud-faq/
-excerpt: "华为公有云常见问题"
-last_modified_at: 2017-08-15T15:01:43-04:00
-redirect_from:
-  - /theme-setup/
----
-
-1. **Q: 在使用华为公有云时,设置镜像的标签只需要和上一次的标签不一样还是要和之前的都不一样?**
-
-   A: 由于Docker本身的机制中并没有实现每次都从远端拉取镜像的功能,因此,只要本地中有一个版本的镜像存在而且每次都通过该版本的标签来访问镜像时,读取的镜像则为最开始上传的镜像,后续对该标签镜像的更新并不会在本地生效。因此现有两种解决方案:
-
-   (1) 新上传的镜像的标签和之前的都不一样。
-
-   (2) 登录到后台去将原版本标签的镜像删除。
-
-   拓展:如果使用了华为公有云上面的编排功能,则可以通过设置imagePullPolicy为Always避免该问题。
-   
-2. **Q: 华为公有云运行时报错:WARN com.huawei.paas.monitor.DataFactory: Upload monitor data error. 使用的配置为:**
-
-   ```yaml
-   cse:
-     monitor:
-       handler:
-         chain:
-           Provider:
-             default: bizkeeper-provider
-   ```
-
-   A: 这个是配置文件的错误,handler应该是在cse的下一级而不是monitor的下一级,正确的配置是:
-
-   ```yaml
-   cse:
-     handler:
-       chain:
-         Provider:
-           default: bizkeeper-provider
-   ```


[19/51] incubator-servicecomb-website git commit: 添加 allowCrossApp: false

Posted by jb...@apache.org.
添加  allowCrossApp: false

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/a2db963d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/a2db963d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/a2db963d

Branch: refs/heads/asf-site
Commit: a2db963d9cfbeaf8f0592c883032596c47954d86
Parents: d635975
Author: LyonJack <56...@qq.com>
Authored: Thu Nov 2 10:34:19 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:10:24 2017 -0700

----------------------------------------------------------------------
 _users/service-definition.md | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/a2db963d/_users/service-definition.md
----------------------------------------------------------------------
diff --git a/_users/service-definition.md b/_users/service-definition.md
index 68e4ad5..dd40945 100644
--- a/_users/service-definition.md
+++ b/_users/service-definition.md
@@ -44,6 +44,7 @@ service_description: #服务描述
   name: helloServer #微服务名称
   version: 0.0.1 #服务版本号
   properties: #元数据
+  allowCrossApp: false
     key1: value1
     key2: value2
   propertyExtentedClass: io.servicecomb.serviceregistry.MicroServicePropertyExtendedStub


[43/51] incubator-servicecomb-website git commit: remove config center configuration while chassis do not support for now

Posted by jb...@apache.org.
remove config center configuration while chassis do not support for now


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/57b55f17
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/57b55f17
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/57b55f17

Branch: refs/heads/asf-site
Commit: 57b55f17f7562dfab8dfb9dff8b024c4b9eecc75
Parents: bea4205
Author: guoygang <he...@gmail.com>
Authored: Wed Dec 6 10:54:18 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 14:18:45 2017 +0800

----------------------------------------------------------------------
 _users/cn/use-tls.md | 3 ---
 _users/use-tls.md    | 3 ---
 2 files changed, 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/57b55f17/_users/cn/use-tls.md
----------------------------------------------------------------------
diff --git a/_users/cn/use-tls.md b/_users/cn/use-tls.md
index d691a38..bad36e6 100644
--- a/_users/cn/use-tls.md
+++ b/_users/cn/use-tls.md
@@ -120,9 +120,6 @@ cse:
   service:
     registry:
       address: https://127.0.0.1:30100
-  config:
-    client:
-      serverUri: https://127.0.0.1:30103
   rest:
     address: 0.0.0.0:8080?sslEnabled=true
   highway:

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/57b55f17/_users/use-tls.md
----------------------------------------------------------------------
diff --git a/_users/use-tls.md b/_users/use-tls.md
index 9a635c4..61c01a9 100644
--- a/_users/use-tls.md
+++ b/_users/use-tls.md
@@ -120,9 +120,6 @@ cse:
   service:
     registry:
       address: https://127.0.0.1:30100
-  config:
-    client:
-      serverUri: https://127.0.0.1:30103
   rest:
     address: 0.0.0.0:8080?sslEnabled=true
   highway:


[36/51] incubator-servicecomb-website git commit: JAV-529 added github link with minor adjustment

Posted by jb...@apache.org.
JAV-529 added github link with minor adjustment


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/62ec59c3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/62ec59c3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/62ec59c3

Branch: refs/heads/asf-site
Commit: 62ec59c32a1415ff7f30220156b09410fb9bee0d
Parents: 3e97a88
Author: seanyinx <se...@huawei.com>
Authored: Mon Nov 27 17:09:32 2017 +0800
Committer: seanyinx <yi...@hotmail.com>
Committed: Tue Nov 28 16:12:05 2017 +0800

----------------------------------------------------------------------
 _posts/cn/2017-11-27-dubbo-to-servicecomb.md | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/62ec59c3/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
index 108d2d2..2d93932 100644
--- a/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
+++ b/_posts/cn/2017-11-27-dubbo-to-servicecomb.md
@@ -13,6 +13,8 @@ redirect_from:
 Dubbo和Java chassis底层都使用了Spring的依赖注入和bean管理系统,所以使用Dubbo的服务迁移到ServiceComb工作量较小,
 主要改动在依赖和配置方面。
 
+本文示例代码可在[Java chassis](https://github.com/ServiceComb/ServiceComb-Java-Chassis/tree/master/samples)中获取。
+
 ## 服务提供方
 ### 替换依赖
 将对dubbo的依赖替换为对Java chassis的依赖
@@ -169,6 +171,8 @@ cse:
 ## 服务消费方
 ### 替换依赖
 将对Dubbo的依赖替换为对Java chassis的依赖
+
+Dubbo
 ```xml
   <dependency>
     <groupId>com.alibaba</groupId>
@@ -177,6 +181,7 @@ cse:
   </dependency>
 ```
 
+Java chassis
 ```xml
 	<dependencyManagement>
 		<dependencies>
@@ -207,6 +212,7 @@ cse:
 ```
 
 ### 修改消费方启动入口
+Dubbo
 ```java
 public class ConsumerMain
 {
@@ -223,6 +229,7 @@ public class ConsumerMain
 }
 ```
 
+Java chassis
 ```java
 public class ConsumerMain
 {


[33/51] incubator-servicecomb-website git commit: fix typos for git rebase command

Posted by jb...@apache.org.
fix typos for git rebase command

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/4e37fb83
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/4e37fb83
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/4e37fb83

Branch: refs/heads/asf-site
Commit: 4e37fb8308e7e3828a8e07120029cf4f6995071b
Parents: e77aae5
Author: eshaoliu <li...@gmail.com>
Authored: Mon Nov 27 19:03:39 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Nov 27 19:12:53 2017 +0800

----------------------------------------------------------------------
 _developers/submit-codes.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/4e37fb83/_developers/submit-codes.md
----------------------------------------------------------------------
diff --git a/_developers/submit-codes.md b/_developers/submit-codes.md
index 22b3b99..ee703dc 100644
--- a/_developers/submit-codes.md
+++ b/_developers/submit-codes.md
@@ -115,7 +115,7 @@ fig-2 Create pull request
    此时会弹出修改记录的文件,一般直接保存即可。然后会提示哪些文件出现了冲突,此时可打开冲突文件对冲突部分进行修改,将提示的所有冲突文件的冲突都解决后,执行
    ```bash
    git add .
-   git reabse --continue
+   git rebase --continue
    ```
    依此往复,直至屏幕出现类似 *rebase successful* 字样即可,此时您可以进行往提交PR的分支进行更新:
    ```bash


[31/51] incubator-servicecomb-website git commit: added 4th livestreaming materials

Posted by jb...@apache.org.
added 4th livestreaming materials

Signed-off-by: Eric Lee <da...@huawei.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/ca1f809b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/ca1f809b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/ca1f809b

Branch: refs/heads/asf-site
Commit: ca1f809b289e2bd846ab61ce723366f87bcabe3a
Parents: c8e4bed
Author: Eric Lee <da...@huawei.com>
Authored: Fri Nov 24 09:57:44 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 24 14:10:43 2017 +0800

----------------------------------------------------------------------
 _pages/about-slides.md                            |   2 ++
 _pages/cn/about-slides.md                         |   3 +++
 .../20171124/LiveCodingServiceCombQuickStart.zip  | Bin 0 -> 191093 bytes
 3 files changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/ca1f809b/_pages/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/about-slides.md b/_pages/about-slides.md
index abae0d4..60738a7 100644
--- a/_pages/about-slides.md
+++ b/_pages/about-slides.md
@@ -20,3 +20,5 @@ date: 2017-06-20T11:02:20+08:00
 ## [ServiceComb live streaming phase III](http://www.itdks.com/liveevent/detail/6621), 20171109
  * [Micrservice practice of Huawei consumer cloud based on ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf)
 
+## [ServiceComb live streaming phase IV](http://www.itdks.com/liveevent/detail/6622), 20171124
+ * [Live coding the quick start example of ServiceComb]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/ca1f809b/_pages/cn/about-slides.md
----------------------------------------------------------------------
diff --git a/_pages/cn/about-slides.md b/_pages/cn/about-slides.md
index 81a8f2d..96a57da 100644
--- a/_pages/cn/about-slides.md
+++ b/_pages/cn/about-slides.md
@@ -19,3 +19,6 @@ date: 2017-06-20T11:02:20+08:00
 
 ## [ServiceComb直播第三期](http://www.itdks.com/liveevent/detail/6621), 20171109
  * [消费者云ServiceComb微服务实践]({{ site.url }}{{ site.baseurl }}/assets/slides/20171109/MicroservicePracticeOfHuaweiConsumerCloudBasedOnServiceComb.pdf)
+
+## [ServiceComb 直播第四期](http://www.itdks.com/liveevent/detail/6622), 20171124
+ * [ServiceComb快速入门&&在线Coding]({{ site.url }}{{ site.baseurl }}/assets/slides/20171124/LiveCodingServiceCombQuickStart.pdf)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/ca1f809b/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip
----------------------------------------------------------------------
diff --git a/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip b/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip
new file mode 100644
index 0000000..4d1f098
Binary files /dev/null and b/assets/slides/20171124/LiveCodingServiceCombQuickStart.zip differ


[34/51] incubator-servicecomb-website git commit: fix typos for git rebase command

Posted by jb...@apache.org.
fix typos for git rebase command

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/e77aae5c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/e77aae5c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/e77aae5c

Branch: refs/heads/asf-site
Commit: e77aae5cc99d9fc68ffc8942ef19242e2af4b0a5
Parents: aeb85a0
Author: eshaoliu <li...@gmail.com>
Authored: Mon Nov 27 19:02:50 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Mon Nov 27 19:12:53 2017 +0800

----------------------------------------------------------------------
 _developers/cn/submit-codes.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/e77aae5c/_developers/cn/submit-codes.md
----------------------------------------------------------------------
diff --git a/_developers/cn/submit-codes.md b/_developers/cn/submit-codes.md
index 3a260be..4db1a99 100644
--- a/_developers/cn/submit-codes.md
+++ b/_developers/cn/submit-codes.md
@@ -115,7 +115,7 @@ fig-2 Create pull request
    此时会弹出修改记录的文件,一般直接保存即可。然后会提示哪些文件出现了冲突,此时可打开冲突文件对冲突部分进行修改,将提示的所有冲突文件的冲突都解决后,执行
    ```bash
    git add .
-   git reabse --continue
+   git rebase --continue
    ```
    依此往复,直至屏幕出现类似 *rebase successful* 字样即可,此时您可以进行往提交PR的分支进行更新:
    ```bash


[12/51] incubator-servicecomb-website git commit: Update and rename 2017-10-28-service-centre-ui.md to 2017-10-28-service-center-ui.md

Posted by jb...@apache.org.
Update and rename 2017-10-28-service-centre-ui.md to 2017-10-28-service-center-ui.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/5d68166c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/5d68166c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/5d68166c

Branch: refs/heads/asf-site
Commit: 5d68166c9386e7979943065734c07833a44b278a
Parents: 26d3b34
Author: Mohammad Asif Siddiqui <mo...@huawei.com>
Authored: Wed Nov 1 18:45:31 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:08:14 2017 -0700

----------------------------------------------------------------------
 _posts/cn/2017-10-28-service-center-ui.md | 67 ++++++++++++++++++++++++++
 _posts/cn/2017-10-28-service-centre-ui.md | 60 -----------------------
 2 files changed, 67 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/5d68166c/_posts/cn/2017-10-28-service-center-ui.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-28-service-center-ui.md b/_posts/cn/2017-10-28-service-center-ui.md
new file mode 100644
index 0000000..0e90ee7
--- /dev/null
+++ b/_posts/cn/2017-10-28-service-center-ui.md
@@ -0,0 +1,67 @@
+---
+title: "Service-Center Management UI Console"
+lang: cn
+ref: service-center-ui
+permalink: /docs/service-centre-ui/
+excerpt: "An introduction Service-Center Management Console"
+last_modified_at: 2017-10-30T09:18:43+08:00
+author: Asif Siddiqui
+tags: [service center]
+redirect_from:
+  - /theme-setup/
+---
+
+Service-Center Management UI Console enables user to view the list of MicroServices registered in SC.
+Users can view the detailed information of their MicroServices, Instances and Schemas.
+Service-Center UI also offers a unique feature of testing the Schemas of their MicroServices from UI, Users 
+can also download the html client for their Schemas.
+
+### Preview of Management Console
+![Preview]({{ site.url }}{{ site.baseurl }}/assets/images/Service-Center-UI-Preview.gif){: .align-center}
+
+### Features
+Service-Center Management console offers very useful features which makes users easy to use and manage service-center.
+
+### Dashboard
+This is the place where you can get the overall information about the services which are registered in your service-center like total number of services, providers, consumers and total instances. You can also get a list of Services which based on their current status.  
+![Dashboard]({{ site.url }}{{ site.baseurl }}/assets/images/Dashboard.PNG){: .align-center}  
+
+
+
+### Micro-Service List
+This is the place where you can see the basic details of all the services which are registered in Service-Center. You can see the details like MicroService Name, Application Name, Status, Version, Creation time and Instance count. You can also un-register the microservice from Operations Tab if there is no running instances for the microservice.  
+![ServiceList]({{ site.url }}{{ site.baseurl }}/assets/images/ServiceList.PNG){: .align-center}  
+
+
+### Instance Details
+This is the place where you can see all the current running instances for the MicroService, you can get the list of endpoints and their protocols.  
+![InstanceList]({{ site.url }}{{ site.baseurl }}/assets/images/InstanceList.PNG){: .align-center}  
+
+
+### Provider List
+This is the place where you can get the list of all the providers for the MicroService.  
+![Provider List]({{ site.url }}{{ site.baseurl }}/assets/images/ProviderList.PNG){: .align-center}  
+
+
+### Consumer List
+This is the place where you can get the list of all the consumers for the MicroService  
+![Consumer List]({{ site.url }}{{ site.baseurl }}/assets/images/ConsumerList.PNG){: .align-center}  
+
+
+### Schema List
+This is the place where we can get the list of all the Schema\'s for your MicroService, here you get options of viewing the Schema in Swagger form or Test the Schema on some particular instance. Here you also get an option to Download the Schema file in Html Client form.  
+![Schema List]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaList.PNG){: .align-center}  
+
+For Viewing the Schema in Swagger form you can click on Test Schema button and you can view the complete details of Schema in Swagger form.  
+
+![View Swagger]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaView.PNG){: .align-center}
+
+If you wish to test the Schema on some particular Instance then you can click on Test Schema and select the instance on which you want to test the Schema and then select the endpoints for that instance.  
+![Select Instance]({{ site.url }}{{ site.baseurl }}/assets/images/SelectInstance.PNG){: .align-center}
+
+
+Once you selected the instance then you are ready for testing the Schema, you can input the required parameters for the Schema and hit on 'Try it Out' Button.  
+![Schema Test]({{ site.url }}{{ site.baseurl }}/assets/images/Schematest.PNG){: .align-center}  
+
+
+##### You can have a look at the [Quick Start Guide](https://github.com/ServiceComb/service-center/tree/master/frontend#quickstart-guide) to know about how to bring up the Management Console.

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/5d68166c/_posts/cn/2017-10-28-service-centre-ui.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-10-28-service-centre-ui.md b/_posts/cn/2017-10-28-service-centre-ui.md
deleted file mode 100644
index 79d8e75..0000000
--- a/_posts/cn/2017-10-28-service-centre-ui.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: "Service-Center Management UI Console"
-lang: cn
-ref: service-center-ui
-permalink: /docs/service-center-ui/
-excerpt: "An introduction Service-Center Management Console"
-last_modified_at: 2017-10-30T09:18:43+08:00
-author: Asif Siddiqui
-tags: [service center]
-redirect_from:
-  - /theme-setup/
----
-
-Service-Center Management UI Console enables user to view the list of MicroServices registered in SC.
-Users can view the detailed information of their MicroServices, Instances and Schemas.
-Service-Center UI also offers a unique feature of testing the Schemas of their MicroServices from UI, Users 
-can also download the html client for their Schemas.
-
-### Preview of Management Console
-![Preview]({{ site.url }}{{ site.baseurl }}/assets/images/Service-Center-UI-Preview.gif){: .align-center}
-
-### Features
-Service-Center Management console offers very useful features which makes users easy to use and manage service-center.
-
-#### Dashboard
-This is the place where you can get the overall information about the services which are registered in your service-center like total number of services, providers, consumers and total instances. You can also get a list of Services which based on their current status.  
-![Dashboard]({{ site.url }}{{ site.baseurl }}/assets/images/Dashboard.PNG){: .align-center}
-
-
-#### Micro-Service List
-This is the place where you can see the basic details of all the services which are registered in Service-Centre. You can see the details like MicroService Name, Application Name, Status, Version, Creation time and Instance count. You can also un-register the microservice from Operations Tab if there is no running instances for the microservice.  
-![ServiceList]({{ site.url }}{{ site.baseurl }}/assets/images/ServiceList.PNG){: .align-center}
-
-#### Instance Details
-This is the place where you can see all the current running instances for the MicroService, you can get the list of endpoints and theri protocols.  
-![InstanceList]({{ site.url }}{{ site.baseurl }}/assets/images/InstanceList.PNG){: .align-center}
-
-
-#### Provider List
-This is the place where you can get the list of all the providers for this MicroService.  
-![Provider List]({{ site.url }}{{ site.baseurl }}/assets/images/ProviderList.PNG){: .align-center}
-
-#### Consumer List
-This is the place where you can get the list of all the consumers for this MicroService  
-![Consumer List]({{ site.url }}{{ site.baseurl }}/assets/images/ConsumerList.PNG){: .align-center}
-
-#### Schema List
-This is the place where we can get the list of all the Schema's for your MicroService, here you get options of viewing the Schema in Swagger form or Test the Schema on some particular instance. Here you also get an option to Download the Schema file in Html Client form.  
-![Schema List]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaList.PNG){: .align-center}
-
-For Viewing the Schema in Swagger from you can click on Test Schema button and you can view the completet details of Schema in Swagger form.  
-![View Swagger]({{ site.url }}{{ site.baseurl }}/assets/images/SchemaView.PNG){: .align-center}
-
-If you wish to test the Schema on some particular Instance then you can click on Test Schema and select the instance on which you want to test the Schema and then select the endpoints for that instance.  
-![Select Instance]({{ site.url }}{{ site.baseurl }}/assets/images/SelectInstance.PNG){: .align-center}
-
-Once you selected the instance then you are ready for testing the Schema, you can input the required parameters for the Schema and hit on 'Try it Out' Button.  
-![Schema Test]({{ site.url }}{{ site.baseurl }}/assets/images/Schematest.PNG){: .align-center}  
-
-##### You can have a look at the [Quick Start Guide](https://github.com/ServiceComb/service-center/tree/master/frontend#quickstart-guide) to know about how to bring up the Management Console.


[27/51] incubator-servicecomb-website git commit: JAV-500 added jira beginner guide

Posted by jb...@apache.org.
JAV-500 added jira beginner guide


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/652589ef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/652589ef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/652589ef

Branch: refs/heads/asf-site
Commit: 652589ef92da7e13318dc88aa649ad86ed884d31
Parents: 576205c
Author: seanyinx <se...@huawei.com>
Authored: Thu Nov 16 16:53:08 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Nov 16 17:40:03 2017 +0800

----------------------------------------------------------------------
 _posts/cn/2017-11-16-jira-beginner-guide.md  |  69 ++++++++++++++++++++++
 assets/images/jira/jira.board.png            | Bin 0 -> 79408 bytes
 assets/images/jira/jira.board.profile.png    | Bin 0 -> 13452 bytes
 assets/images/jira/jira.board.selection.png  | Bin 0 -> 20183 bytes
 assets/images/jira/jira.epic.png             | Bin 0 -> 43065 bytes
 assets/images/jira/jira.fix.version.png      | Bin 0 -> 60784 bytes
 assets/images/jira/jira.good.first.issue.png | Bin 0 -> 13552 bytes
 assets/images/jira/jira.profile.png          | Bin 0 -> 14124 bytes
 assets/images/jira/jira.signup.png           | Bin 0 -> 47809 bytes
 assets/images/jira/jira.status.update.png    | Bin 0 -> 97155 bytes
 assets/images/jira/jira.story.assignment.png | Bin 0 -> 55894 bytes
 assets/images/jira/jira.story.png            | Bin 0 -> 73380 bytes
 12 files changed, 69 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/_posts/cn/2017-11-16-jira-beginner-guide.md
----------------------------------------------------------------------
diff --git a/_posts/cn/2017-11-16-jira-beginner-guide.md b/_posts/cn/2017-11-16-jira-beginner-guide.md
new file mode 100644
index 0000000..7300917
--- /dev/null
+++ b/_posts/cn/2017-11-16-jira-beginner-guide.md
@@ -0,0 +1,69 @@
+---
+title: "老司机带你刷任务 - ServiceComb JIRA入门指南"
+lang: cn
+ref: jira_beginner_guide
+permalink: /cn/docs/jira_beginner_guide/
+excerpt: "ServiceComb JIRA入门指南"
+last_modified_at: 2017-11-16T11:43:00+08:00
+author: Sean Yin
+redirect_from:
+  - /theme-setup/
+---
+
+想参与社区贡献,却感觉老虎咬天,无从下口?不用担心,老司机带你一起刷新手任务!
+
+ServiceComb的所有任务托管在[ServiceComb JIRA](https://servicecomb.atlassian.net)上,
+首先你需要[注册](https://id.atlassian.com/signup?continue=https%3A%2F%2Fservicecomb.atlassian.net%2Flogin%3FredirectCount%3D1)一个免费JIRA账户。
+
+![jira sign up]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.signup.png){: .align-center}
+
+
+登陆后请首先花几分钟上传自己的个性头像,让大家可以一眼看出哪些任务在你的掌控之下。
+
+![jira profile]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.board.profile.png){: .align-center}
+
+
+接下来在菜单栏点击Boards,选择ServiceComb转到如下Kanban board。
+
+![jira board selection]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.board.selection.png){: .align-center}
+
+
+ServiceComb Kanban board页面分为三列:
+* To Do:还未开始的任务
+* In Progress:进行中的任务
+* Done:已完成的任务
+
+
+![jira board]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.board.png){: .align-center}
+
+
+To Do列的任务卡上如果没有头像,代表这个任务无人领取,但作为新手,我怎么知道哪个任务容易上手呢?
+我们很细心的为新手任务加上了绿色竖线标记,这个标记对应所有打了 `good-first-issue` 标签的任务,
+以便大家一眼识别,立即上手。
+
+![jira good first issue]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.good.first.issue.png){: .align-center}
+
+![jira story]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.story.png){: .align-center}
+
+
+另外,任务还按照功能模块划分了epic,这样大家可以在自己擅长的领域大显身手,或者在全新的模块挑战自己。
+
+![jira epic]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.epic.png){: .align-center}
+
+
+选到心仪的任务后,记得讲任务分配给自己,以免被别人抢走。
+
+![jira story assignment]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.story.assignment.png){: .align-center}
+
+
+另外别忘了根据自己的进度,更新对应任务的状态,你可以直接拖动任务卡到对应状态列。
+
+![jira status update]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.status.update.png){: .align-center}
+
+
+最后,在完成任务后,咨询项目带队老司机,将自己的贡献添加到对应的发布版本中。
+
+![jira fix.version]({{ site.url }}{{ site.baseurl }}/assets/images/jira/jira.fix.version.png){: .align-center}
+
+
+看到现在相信你已经跃跃欲试,赶紧加入我们一起刷任务升级吧!

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.board.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.board.png b/assets/images/jira/jira.board.png
new file mode 100644
index 0000000..415c633
Binary files /dev/null and b/assets/images/jira/jira.board.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.board.profile.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.board.profile.png b/assets/images/jira/jira.board.profile.png
new file mode 100644
index 0000000..5c64352
Binary files /dev/null and b/assets/images/jira/jira.board.profile.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.board.selection.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.board.selection.png b/assets/images/jira/jira.board.selection.png
new file mode 100644
index 0000000..48d5db4
Binary files /dev/null and b/assets/images/jira/jira.board.selection.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.epic.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.epic.png b/assets/images/jira/jira.epic.png
new file mode 100644
index 0000000..203da0d
Binary files /dev/null and b/assets/images/jira/jira.epic.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.fix.version.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.fix.version.png b/assets/images/jira/jira.fix.version.png
new file mode 100644
index 0000000..dad120a
Binary files /dev/null and b/assets/images/jira/jira.fix.version.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.good.first.issue.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.good.first.issue.png b/assets/images/jira/jira.good.first.issue.png
new file mode 100644
index 0000000..fd0d201
Binary files /dev/null and b/assets/images/jira/jira.good.first.issue.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.profile.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.profile.png b/assets/images/jira/jira.profile.png
new file mode 100644
index 0000000..9fbba44
Binary files /dev/null and b/assets/images/jira/jira.profile.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.signup.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.signup.png b/assets/images/jira/jira.signup.png
new file mode 100644
index 0000000..087511c
Binary files /dev/null and b/assets/images/jira/jira.signup.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.status.update.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.status.update.png b/assets/images/jira/jira.status.update.png
new file mode 100644
index 0000000..4e75459
Binary files /dev/null and b/assets/images/jira/jira.status.update.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.story.assignment.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.story.assignment.png b/assets/images/jira/jira.story.assignment.png
new file mode 100644
index 0000000..f491ed8
Binary files /dev/null and b/assets/images/jira/jira.story.assignment.png differ

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/652589ef/assets/images/jira/jira.story.png
----------------------------------------------------------------------
diff --git a/assets/images/jira/jira.story.png b/assets/images/jira/jira.story.png
new file mode 100644
index 0000000..a2d3696
Binary files /dev/null and b/assets/images/jira/jira.story.png differ


[18/51] incubator-servicecomb-website git commit: 修改板式

Posted by jb...@apache.org.
修改板式

Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/7b74e855
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/7b74e855
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/7b74e855

Branch: refs/heads/asf-site
Commit: 7b74e855c263c9013d034deef7a206d6cb361195
Parents: a2db963
Author: LyonJack <56...@qq.com>
Authored: Thu Nov 2 10:43:08 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Fri Nov 3 08:10:24 2017 -0700

----------------------------------------------------------------------
 _users/service-definition.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/7b74e855/_users/service-definition.md
----------------------------------------------------------------------
diff --git a/_users/service-definition.md b/_users/service-definition.md
index dd40945..c0111cd 100644
--- a/_users/service-definition.md
+++ b/_users/service-definition.md
@@ -44,7 +44,7 @@ service_description: #服务描述
   name: helloServer #微服务名称
   version: 0.0.1 #服务版本号
   properties: #元数据
-  allowCrossApp: false
+    allowCrossApp: true
     key1: value1
     key2: value2
   propertyExtentedClass: io.servicecomb.serviceregistry.MicroServicePropertyExtendedStub


[40/51] incubator-servicecomb-website git commit: chassis do not support 1.9 that well for now, modify 1.8+ to 1.8

Posted by jb...@apache.org.
chassis do not support 1.9 that well for now, modify 1.8+ to 1.8


Project: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/commit/76b0ca32
Tree: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/tree/76b0ca32
Diff: http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/diff/76b0ca32

Branch: refs/heads/asf-site
Commit: 76b0ca32d9973786b1e1263a9ae9fe3db4654d71
Parents: 37e286c
Author: sxr3640 <so...@gmail.com>
Authored: Wed Dec 6 11:24:33 2017 +0800
Committer: Willem Jiang <ji...@huawei.com>
Committed: Thu Dec 7 14:16:00 2017 +0800

----------------------------------------------------------------------
 _developers/cn/setup-develop-environment.md | 2 +-
 _developers/setup-develop-environment.md    | 2 +-
 _docs/cn/quick-start-dataconsistency.md     | 2 +-
 _docs/quick-start-dataconsistency.md        | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/76b0ca32/_developers/cn/setup-develop-environment.md
----------------------------------------------------------------------
diff --git a/_developers/cn/setup-develop-environment.md b/_developers/cn/setup-develop-environment.md
index d82e7bf..5ca7028 100644
--- a/_developers/cn/setup-develop-environment.md
+++ b/_developers/cn/setup-develop-environment.md
@@ -10,7 +10,7 @@ last_modified_at: 2017-06-24T18:48:43+08:00
 ## 基本环境准备
 在您开始前,请确保以下应用已安装:
 * **Git**,安装详情可参考[Git安装教程](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git){:target="_blank"}
-* **JDK 1.8+**,安装详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}
+* **JDK 1.8**,安装详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}
 * **Maven 3.x**,安装详情可参考[Maven安装教程](https://maven.apache.org/install.html){:target="_blank"}
 * **Docker**,安装详情可参考[Docker 安装教程](https://docs.docker.com/engine/installation/){:target="_blank"}
 * **Service Center**, 安装详情可参考[Service Center安装教程](/cn/users/setup-environment/#运行service-center)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/76b0ca32/_developers/setup-develop-environment.md
----------------------------------------------------------------------
diff --git a/_developers/setup-develop-environment.md b/_developers/setup-develop-environment.md
index 9e5667e..f5c741e 100644
--- a/_developers/setup-develop-environment.md
+++ b/_developers/setup-develop-environment.md
@@ -10,7 +10,7 @@ last_modified_at: 2017-06-24T18:48:43+08:00
 ## 基本环境准备
 在您开始前,请确保以下应用已安装:
 * **Git**,安装详情可参考[Git安装教程](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git){:target="_blank"}
-* **JDK 1.8+**,安装详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}
+* **JDK 1.8**,安装详情可参考[JDK安装教程](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html){:target="_blank"}
 * **Maven 3.x**,安装详情可参考[Maven安装教程](https://maven.apache.org/install.html){:target="_blank"}
 * **Docker**,安装详情可参考[Docker 安装教程](https://docs.docker.com/engine/installation/){:target="_blank"}
 * **Service Center**, 安装详情可参考[Service Center安装教程](/users/setup-environment/#运行service-center)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/76b0ca32/_docs/cn/quick-start-dataconsistency.md
----------------------------------------------------------------------
diff --git a/_docs/cn/quick-start-dataconsistency.md b/_docs/cn/quick-start-dataconsistency.md
index b26cf01..2d1e64f 100644
--- a/_docs/cn/quick-start-dataconsistency.md
+++ b/_docs/cn/quick-start-dataconsistency.md
@@ -26,7 +26,7 @@ last_modified_at: 2017-09-19T11:50:10-04:00
 注:Demo 集成在 [ServiceComb-Saga](https://github.com/ServiceComb/ServiceComb-Saga) 项目中。
 
 1. 准备环境
-- [Oracle JDK 1.8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
+- [Oracle JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
 - [Maven 3.x](https://maven.apache.org/install.html)
 - [Docker](https://www.docker.com/get-docker)
 - [MySQL](https://dev.mysql.com/downloads/)

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/76b0ca32/_docs/quick-start-dataconsistency.md
----------------------------------------------------------------------
diff --git a/_docs/quick-start-dataconsistency.md b/_docs/quick-start-dataconsistency.md
index ccf8ce4..9d4b32e 100644
--- a/_docs/quick-start-dataconsistency.md
+++ b/_docs/quick-start-dataconsistency.md
@@ -25,7 +25,7 @@ Travel application demo including four services
 Note, demo is in the [ServiceComb-Saga](https://github.com/ServiceComb/ServiceComb-Saga) project.
 
 1. Prerequisites
-- [Oracle JDK 1.8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
+- [Oracle JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
 - [Maven 3.x](https://maven.apache.org/install.html)
 - [Docker](https://www.docker.com/get-docker)
 - [MySQL](https://dev.mysql.com/downloads/)