You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by je...@apache.org on 2018/09/05 00:57:52 UTC

[incubator-dubbo-website] branch asf-site updated: add English blog title

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new ccdd1e8  add English blog title
ccdd1e8 is described below

commit ccdd1e8f8ecee3fd9c9ff08bd3444a6513d99096
Author: zhuyong <yo...@alibaba-inc.com>
AuthorDate: Wed Sep 5 08:57:35 2018 +0800

    add English blog title
---
 en-us/blog/dubbo-101.html                          |  6 +--
 en-us/blog/dubbo-101.json                          |  5 ++-
 en-us/blog/dubbo-annotation.html                   |  6 +--
 en-us/blog/dubbo-annotation.json                   |  5 ++-
 ...o-basic-usage-dubbo-provider-configuration.html |  8 ++--
 ...o-basic-usage-dubbo-provider-configuration.json |  5 ++-
 en-us/blog/dubbo-generic-invoke.html               |  6 +--
 en-us/blog/dubbo-generic-invoke.json               |  5 ++-
 en-us/blog/dubbo-invoke.html                       |  6 +--
 en-us/blog/dubbo-invoke.json                       |  5 ++-
 en-us/blog/dubbo-k8s.html                          | 38 +++++++++---------
 en-us/blog/dubbo-k8s.json                          |  5 ++-
 en-us/blog/dubbo-loadbalance.html                  |  6 +--
 en-us/blog/dubbo-loadbalance.json                  |  5 ++-
 en-us/blog/dubbo-meetup-beijing-may-12th-2018.html |  6 +--
 en-us/blog/dubbo-meetup-beijing-may-12th-2018.json |  5 ++-
 .../blog/dubbo-meetup-shanghai-jun-23rd-2018.html  |  6 +--
 .../blog/dubbo-meetup-shanghai-jun-23rd-2018.json  |  5 ++-
 en-us/blog/dubbo-new-async.html                    |  8 ++--
 en-us/blog/dubbo-new-async.json                    |  5 ++-
 en-us/blog/dubbo-zk.html                           |  6 +--
 en-us/blog/dubbo-zk.json                           |  5 ++-
 en-us/blog/dubbo2-js.html                          |  8 ++--
 en-us/blog/dubbo2-js.json                          |  5 ++-
 en-us/blog/introduction-to-dubbo-qos.html          |  6 +--
 en-us/blog/introduction-to-dubbo-qos.json          |  5 ++-
 en-us/blog/introduction-to-dubbo-spi-2.html        |  6 +--
 en-us/blog/introduction-to-dubbo-spi-2.json        |  5 ++-
 en-us/blog/introduction-to-dubbo-spi.html          |  8 ++--
 en-us/blog/introduction-to-dubbo-spi.json          |  5 ++-
 en-us/blog/pinpoint.html                           |  6 +--
 en-us/blog/pinpoint.json                           |  5 ++-
 en-us/blog/prepare-an-apache-release.html          |  4 +-
 en-us/blog/prepare-an-apache-release.json          |  4 +-
 en-us/blog/sentinel-introduction-for-dubbo.html    |  6 +--
 en-us/blog/sentinel-introduction-for-dubbo.json    |  5 ++-
 .../spring-boot-dubbo-start-stop-analysis.html     |  6 +--
 .../spring-boot-dubbo-start-stop-analysis.json     |  5 ++-
 en-us/blog/tracing-with-skywalking.html            |  6 +--
 en-us/blog/tracing-with-skywalking.json            |  5 ++-
 zh-cn/blog/dubbo-k8s.html                          | 46 +++++++++++-----------
 zh-cn/blog/dubbo-k8s.json                          |  4 +-
 .../blog/dubbo-meetup-shanghai-jun-23rd-2018.html  |  6 +--
 .../blog/dubbo-meetup-shanghai-jun-23rd-2018.json  |  5 ++-
 zh-cn/blog/dubbo-meetup-shenzhen.html              |  6 +--
 zh-cn/blog/dubbo-meetup-shenzhen.json              |  5 ++-
 zh-cn/blog/introduction-to-dubbo-spi-2.html        |  2 +-
 zh-cn/blog/introduction-to-dubbo-spi-2.json        |  3 +-
 .../spring-boot-dubbo-start-stop-analysis.html     |  2 +-
 .../spring-boot-dubbo-start-stop-analysis.json     |  3 +-
 zh-cn/blog/tracing-with-skywalking.html            |  2 +-
 zh-cn/blog/tracing-with-skywalking.json            |  3 +-
 zh-cn/docs/user/demos/explicit-target.html         |  4 +-
 zh-cn/docs/user/demos/explicit-target.json         |  2 +-
 zh-cn/docs/user/maturity.html                      |  4 +-
 zh-cn/docs/user/maturity.json                      |  2 +-
 56 files changed, 212 insertions(+), 144 deletions(-)

diff --git a/en-us/blog/dubbo-101.html b/en-us/blog/dubbo-101.html
index 54cffa6..d8d167e 100644
--- a/en-us/blog/dubbo-101.html
+++ b/en-us/blog/dubbo-101.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-101" />
-	<meta name="description" content="dubbo-101" />
+	<meta name="keywords" content="Dubbo, RPC, RMI" />
+	<meta name="description" content="Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry and discovery by a registry center, and Shield communication details by a proxy." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-101</title>
+	<title>Your First Dubbo Demo</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-101.json b/en-us/blog/dubbo-101.json
index 11284ad..99bbcf8 100644
--- a/en-us/blog/dubbo-101.json
+++ b/en-us/blog/dubbo-101.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-101.md",
-  "__html": "<h1>Your First Dubbo Demo</h1>\n<h2>Java RMI Introduction</h2>\n<p>Java RMI (Remote Method Invocation) is a mechanism that allows users to access or invocate an object and a method running on another JVM (Java Virtual Machine). RMI is an implementation of RPC (Remote Procedure Call) in java with support of OOP (Object Oriented Paradigms). Instead of bothering IDL (Interface Define Language), users can build distributed applications by depending on interfaces in an easy and n [...]
+  "__html": "<h1>Your First Dubbo Demo</h1>\n<h2>Java RMI Introduction</h2>\n<p>Java RMI (Remote Method Invocation) is a mechanism that allows users to access or invocate an object and a method running on another JVM (Java Virtual Machine). RMI is an implementation of RPC (Remote Procedure Call) in java with support of OOP (Object Oriented Paradigms). Instead of bothering IDL (Interface Define Language), users can build distributed applications by depending on interfaces in an easy and n [...]
+  "title": "Your First Dubbo Demo",
+  "keywords": "Dubbo, RPC, RMI",
+  "description": "Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry and discovery by a registry center, and Shield communication details by a proxy."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-annotation.html b/en-us/blog/dubbo-annotation.html
index 83f79ad..c80736d 100644
--- a/en-us/blog/dubbo-annotation.html
+++ b/en-us/blog/dubbo-annotation.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-annotation" />
-	<meta name="description" content="dubbo-annotation" />
+	<meta name="keywords" content="Dubbo, Annotation, Spring" />
+	<meta name="description" content="This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-annotation</title>
+	<title>Use Annotations In Dubbo</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-annotation.json b/en-us/blog/dubbo-annotation.json
index 9ce65f8..832d9c3 100644
--- a/en-us/blog/dubbo-annotation.json
+++ b/en-us/blog/dubbo-annotation.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-annotation.md",
-  "__html": "<h1>Use Annotations In Dubbo</h1>\n<p>With the widely promotion and implementation of Microservices Architecture, the Microservices Architecture represented by Spring Boot and Spring Cloud, in Java ecosystem, introduced some brand new programming model, like:</p>\n<ul>\n<li>Annotation-Driven</li>\n<li>External Configuration</li>\n<li>Auto-Configure</li>\n</ul>\n<p>New programming model have some advantages, for example, it does not require <code>XML</code> configuration, it  [...]
+  "__html": "<h1>Use Annotations In Dubbo</h1>\n<p>With the widely promotion and implementation of Microservices Architecture, the Microservices Architecture represented by Spring Boot and Spring Cloud, in Java ecosystem, introduced some brand new programming model, like:</p>\n<ul>\n<li>Annotation-Driven</li>\n<li>External Configuration</li>\n<li>Auto-Configure</li>\n</ul>\n<p>New programming model have some advantages, for example, it does not require <code>XML</code> configuration, it  [...]
+  "title": "Use Annotations In Dubbo",
+  "keywords": "Dubbo, Annotation, Spring",
+  "description": "This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html b/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html
index cb32b41..8a40e53 100644
--- a/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html
+++ b/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html
@@ -4,15 +4,15 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-basic-usage-dubbo-provider-configuration" />
-	<meta name="description" content="dubbo-basic-usage-dubbo-provider-configuration" />
+	<meta name="keywords" content="Dubbo, Provider, Configuration" />
+	<meta name="description" content="This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-basic-usage-dubbo-provider-configuration</title>
+	<title>Dubbo Basic Usage -- Dubbo Provider Configuration</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-2107254238"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-to [...]
+	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="1554307727"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-tog [...]
 <h1>Dubbo Basic Usage</h1>
 <p>This chapter mainly talking about how to configure dubbo. According to the configuration mode, it can be divided into the following mode: XML Configuration, Properties Configuration, Annotation Configuration, API Invocation Mode Configuration. And according to the function, we can divide them into Dubbo Provider and Dubbo Consumer. In the following sections, we would explain Dubbo Provider and Dubbo Consumer respectively.</p>
 <h2>Dubbo Provider Configuration</h2>
diff --git a/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.json b/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.json
index f6423f0..5f96b79 100644
--- a/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.json
+++ b/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-basic-usage-dubbo-provider-configuration.md",
-  "__html": "<h2>Dubbo Basic Usage-Dubbo Provider Configuration</h2>\n<h1>Dubbo Basic Usage</h1>\n<p>This chapter mainly talking about how to configure dubbo. According to the configuration mode, it can be divided into the following mode: XML Configuration, Properties Configuration, Annotation Configuration, API Invocation Mode Configuration. And according to the function, we can divide them into Dubbo Provider and Dubbo Consumer. In the following sections, we would explain Dubbo Provide [...]
+  "__html": "<h2>Dubbo Basic Usage -- Dubbo Provider Configuration</h2>\n<h1>Dubbo Basic Usage</h1>\n<p>This chapter mainly talking about how to configure dubbo. According to the configuration mode, it can be divided into the following mode: XML Configuration, Properties Configuration, Annotation Configuration, API Invocation Mode Configuration. And according to the function, we can divide them into Dubbo Provider and Dubbo Consumer. In the following sections, we would explain Dubbo Prov [...]
+  "title": "Dubbo Basic Usage -- Dubbo Provider Configuration",
+  "keywords": "Dubbo, Provider, Configuration",
+  "description": "This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-generic-invoke.html b/en-us/blog/dubbo-generic-invoke.html
index d4819e3..abf4f12 100644
--- a/en-us/blog/dubbo-generic-invoke.html
+++ b/en-us/blog/dubbo-generic-invoke.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-generic-invoke" />
-	<meta name="description" content="dubbo-generic-invoke" />
+	<meta name="keywords" content="Dubbo, Generic invoke" />
+	<meta name="description" content="This article introduces you when and how to use generic invoke of Dubbo." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-generic-invoke</title>
+	<title>Generic invoke of Dubbo</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-generic-invoke.json b/en-us/blog/dubbo-generic-invoke.json
index ee76abd..2b7140c 100644
--- a/en-us/blog/dubbo-generic-invoke.json
+++ b/en-us/blog/dubbo-generic-invoke.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-generic-invoke.md",
-  "__html": "<h1>Generic invoke of Dubbo</h1>\n<p>The generic invoke could be considered to be used in the following cases:</p>\n<ul>\n<li>Service test platform</li>\n<li>API service gateway</li>\n</ul>\n<p>The generic invoke is mainly used when the consumer does not have an API interface;\ninstead of depending the interface jar package, the service call is initiated directly through the GenericService interface, and all POJOs in the parameters and return values are represented by a <cod [...]
+  "__html": "<h1>Generic invoke of Dubbo</h1>\n<p>The generic invoke could be considered to be used in the following cases:</p>\n<ul>\n<li>Service test platform</li>\n<li>API service gateway</li>\n</ul>\n<p>The generic invoke is mainly used when the consumer does not have an API interface;\ninstead of depending the interface jar package, the service call is initiated directly through the GenericService interface, and all POJOs in the parameters and return values are represented by a <cod [...]
+  "title": "Generic invoke of Dubbo",
+  "keywords": "Dubbo, Generic invoke",
+  "description": "This article introduces you when and how to use generic invoke of Dubbo."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-invoke.html b/en-us/blog/dubbo-invoke.html
index cdc96a9..43f2483 100644
--- a/en-us/blog/dubbo-invoke.html
+++ b/en-us/blog/dubbo-invoke.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-invoke" />
-	<meta name="description" content="dubbo-invoke" />
+	<meta name="keywords" content="Dubbo, Invoke, Async" />
+	<meta name="description" content="This article introduces you how to use Dubbo synchronously or asynchronously." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-invoke</title>
+	<title>Dubbo: Several ways about synchronous/asynchronous invoke</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-invoke.json b/en-us/blog/dubbo-invoke.json
index bd06a3c..0fdf6a3 100644
--- a/en-us/blog/dubbo-invoke.json
+++ b/en-us/blog/dubbo-invoke.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-invoke.md",
-  "__html": "<h1>Dubbo: Several ways about synchronous/asynchronous invoke</h1>\n<p>As we all know,Dubbo adopts a single large join protocol by default and takes the NIO asynchronous communication mechanism of Netty as the low-level implementation. Based on this mechanism, Dubbo implements several invocation modes as follows:</p>\n<ul>\n<li>synchronous invoke</li>\n<li>asynchronous invoke</li>\n<li>parameters callback</li>\n<li>event notification</li>\n</ul>\n<h3>Synchronous invoke</h3>\ [...]
+  "__html": "<h1>Dubbo: Several ways about synchronous/asynchronous invoke</h1>\n<p>As we all know,Dubbo adopts a single large join protocol by default and takes the NIO asynchronous communication mechanism of Netty as the low-level implementation. Based on this mechanism, Dubbo implements several invocation modes as follows:</p>\n<ul>\n<li>synchronous invoke</li>\n<li>asynchronous invoke</li>\n<li>parameters callback</li>\n<li>event notification</li>\n</ul>\n<h3>Synchronous invoke</h3>\ [...]
+  "title": "Dubbo: Several ways about synchronous/asynchronous invoke",
+  "keywords": "Dubbo, Invoke, Async",
+  "description": "This article introduces you how to use Dubbo synchronously or asynchronously."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-k8s.html b/en-us/blog/dubbo-k8s.html
index 2afed84..eba6326 100644
--- a/en-us/blog/dubbo-k8s.html
+++ b/en-us/blog/dubbo-k8s.html
@@ -4,17 +4,17 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-k8s" />
-	<meta name="description" content="dubbo-k8s" />
+	<meta name="keywords" content="Dubbo, Kubernetes, K8S" />
+	<meta name="description" content="This article will try to register Dubbo service to Kubernetes and integrate with Kubernetes&#39;s multi-tenancy security system." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-k8s</title>
+	<title>Integrate Dubbo with Kubernetes</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-1794022383"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-to [...]
-<p>Dubbo's provider don't care about service registration.Open its Dubbo service port,the declaration and publishment of the service will be executed by kubernetes.
-Dubbo's consumer directly discovers the corresponding service endpoints of kubernetes during service discovery procedure, thereby reusing Dubbo's existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be seamlessly integrated into the multi-tenant security system of kubernetes. Reference demo : <a href="https://github.com/dubbo/dubbo-kubernetes">https://github.com/dubbo/dubbo-kubernetes</a></p>
+	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-1662254296"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-to [...]
+<p>Dubbo's provider don't care about service registration.Open its Dubbo service port,the declaration and publishment of the service will be executed by Kubernetes.
+Dubbo's consumer directly discovers the corresponding service endpoints of Kubernetes during service discovery procedure, thereby reusing Dubbo's existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be seamlessly integrated into the multi-tenant security system of Kubernetes. Reference demo : <a href="https://github.com/dubbo/dubbo-Kubernetes">https://github.com/dubbo/dubbo-ubernetes</a></p>
 <h1>Introduction</h1>
 <p>Kubernates is a hierarchical system with rich secondary development function based on the expansibility.</p>
 <ul>
@@ -102,33 +102,33 @@ Dubbo's consumer directly discovers the corresponding service endpoints of kuber
 </blockquote>
 <p>We will know the existing solution, Dubbo integrates the Clould Native Equipment - Kubernetes's basic abilities to solve the microservices's core problems, can be regarded as a Service Mesh solution in a narrow sense, but it can only be used in the Java field. You can understand the above words as a joke, haha.</p>
 <h1>T<span data-type="color" style="color:rgb(51, 51, 51)"><span data-type="background" style="background-color:rgb(255, 255, 255)">hought</span></span>/Plan</h1>
-<p>Kubernetes is a natural address registration center for microservices, similar to zookeeper, VIPserver and Configserver used internally by Alibaba. Specifically, the Pod in kubernetes is a running instance of the application. The scheduled deployment/start/stop of the Pod will call the API-Server service to maintain its state to ETCD. The service in kubernetes is coresponded to the concept of the microservices defined as follows.</p>
+<p>Kubernetes is a natural address registration center for microservices, similar to zookeeper, VIPserver and Configserver used internally by Alibaba. Specifically, the Pod in Kubernetes is a running instance of the application. The scheduled deployment/start/stop of the Pod will call the API-Server service to maintain its state to ETCD. The service in Kubernetes is coresponded to the concept of the microservices defined as follows.</p>
 <blockquote>
 <p>A Kubernetes Service is an abstraction layer which defines a logical set of Pods and enables external traffic exposure, load balancing and service discovery for those Pods.</p>
 </blockquote>
-<p>In conclusion, the kubernetes service has the following characteristics:</p>
+<p>In conclusion, the Kubernetes service has the following characteristics:</p>
 <ul>
-<li>Each Service has a unique name and corresponding IP. IP is automatically assigned by kubernetes and the name is defined by the developer.</li>
+<li>Each Service has a unique name and corresponding IP. IP is automatically assigned by Kubernetes and the name is defined by the developer.</li>
 <li>Service IP has several manifestations: ClusterIP, NodePort, LoadBalance and Ingress. ClusterIP is mainly used for intra-cluster communication; NodePort, Ingress and LoadBalance, which are used to expose services to access portals outside the cluster.</li>
 </ul>
-<p>At first sight, the service of kubernetes has its own IP, while under the original fixed mindset: Dubbo/HSF service is aggregated by the IP of the entire service cluster, that means, kubernetes and Dubbo/HSF look like something different in natural, but when carefully thinking, the difference becomes insignificant. Because the only IP under kubernetes is just a Virtural IP--VIP, behind the vip are multiple endpoints, which is the factual processing node.</p>
-<p>Here we only discuss the situation that the Dubbo service in the cluster is accessed in the same kubernetes cluster, As for the provider outside kubernetes to access the provider in kubernetes, since it involves the problem of network address space, and it usually requires GateWay/loadbalance for mapping conversion, which there not detail discussion for this case. Besides, there are two options available for kubernetes:</p>
+<p>At first sight, the service of Kubernetes has its own IP, while under the original fixed mindset: Dubbo/HSF service is aggregated by the IP of the entire service cluster, that means, Kubernetes and Dubbo/HSF look like something different in natural, but when carefully thinking, the difference becomes insignificant. Because the only IP under Kubernetes is just a Virtural IP--VIP, behind the vip are multiple endpoints, which is the factual processing node.</p>
+<p>Here we only discuss the situation that the Dubbo service in the cluster is accessed in the same Kubernetes cluster, As for the provider outside Kubernetes to access the provider in Kubernetes, since it involves the problem of network address space, and it usually requires GateWay/loadbalance for mapping conversion, which there not detail discussion for this case. Besides, there are two options available for Kubernetes:</p>
 <ol>
 <li>
-<p>DNS: The default kubernetes service is based on the DNS plugin (The latest version of the recommendation is coreDNS), one proposal on Dubbo is about this.  since HSF/Dubbo has always highlighted its soft-load address discovery capability, it ignores Static's strategy insteadily, my understanding is that as a service discovery mechanism, the static resolution mechanism is one of the simplest and most needed to support mechanism, you can also refer to Envoy's point of views. While at th [...]
+<p>DNS: The default Kubernetes service is based on the DNS plugin (The latest version of the recommendation is coreDNS), one proposal on Dubbo is about this.  since HSF/Dubbo has always highlighted its soft-load address discovery capability, it ignores Static's strategy insteadily, my understanding is that as a service discovery mechanism, the static resolution mechanism is one of the simplest and most needed to support mechanism, you can also refer to Envoy's point of views. While at th [...]
 <p><img src="https://img.alicdn.com/tfs/TB1Kj1ktpkoBKNjSZFEXXbrEVXa-985-213.png" alt="img"></p>
 </li>
 <li>
-<p>API:DNS relies on the DNS plugin, which will generate additional operation, so consider directly obtaining the endpoint through the client of kubernetes. In fact, by accessing the API server interface of kubernetes, you can directly obtain the list of endpoints behind a certain servie, and can also monitor the changes in its address list. Thereby implementing the soft load discovery strategy recommended by Dubbo/HSF. Refer to the code for details:</p>
+<p>API:DNS relies on the DNS plugin, which will generate additional operation, so consider directly obtaining the endpoint through the client of Kubernetes. In fact, by accessing the API server interface of Kubernetes, you can directly obtain the list of endpoints behind a certain servie, and can also monitor the changes in its address list. Thereby implementing the soft load discovery strategy recommended by Dubbo/HSF. Refer to the code for details:</p>
 </li>
 </ol>
 <p>The above two thoughts need to consider the following two points:</p>
 <ol>
-<li>Kubernetes and Dubbo are consistent with the mapping name of service. Dubbo's service is determined by serviename, group, version to determine its uniqueness, and servicename generally has a longer package name for its service interface. Need to map the servie name of kubernetes and the service name of dubbo. Either add a property like SOFA to define it. This is a big change, but it is most reasonable. Or it is a fixed rule to reference the deployed environment variables, which can b [...]
+<li>Kubernetes and Dubbo are consistent with the mapping name of service. Dubbo's service is determined by serviename, group, version to determine its uniqueness, and servicename generally has a longer package name for its service interface. Need to map the servie name of Kubernetes and the service name of dubbo. Either add a property like SOFA to define it. This is a big change, but it is most reasonable. Or it is a fixed rule to reference the deployed environment variables, which can b [...]
 <li>Port problem:The default Pod and Pod network interoperability is solved, need to be validated.</li>
 </ol>
 <h2>Demo Verification</h2>
-<p>The following is a demo deployment through kubernetes service in Alibaba Cloud's Container Registry and   EDAS. Visit Alibaba Cloud -》Container Registry.</p>
+<p>The following is a demo deployment through Kubernetes service in Alibaba Cloud's Container Registry and   EDAS. Visit Alibaba Cloud -》Container Registry.</p>
 <ol>
 <li>Create repo and bind the github codebase. As shown below.</li>
 </ol>
@@ -139,11 +139,11 @@ Dubbo's consumer directly discovers the corresponding service endpoints of kuber
 <p><img src="https://img.alicdn.com/tfs/TB1oYqvtcIrBKNjSZK9XXagoVXa-1872-888.png" alt="img"></p>
 </li>
 <li>
-<p>Switch to Enterprise Distributed Application Services (EDAS) products panel, visit Resource Management -》Clusters. Create kubernetes cluster and bind ECS. As shown below.</p>
+<p>Switch to Enterprise Distributed Application Services (EDAS) products panel, visit Resource Management -&gt; Clusters. Create Kubernetes cluster and bind ECS. As shown below.</p>
 <p><img src="https://img.alicdn.com/tfs/TB1b1p2trZnBKNjSZFKXXcGOVXa-1858-833.png" alt="img"></p>
 </li>
 <li>
-<p>Application Management - 》Create  application, type kubernetes application and specify the image in the container registry . As shown below.</p>
+<p>Application Management -&gt; Create  application, type Kubernetes application and specify the image in the container registry . As shown below.</p>
 <p><img src="https://img.alicdn.com/tfs/TB1_YywtDCWBKNjSZFtXXaC3FXa-1737-588.png" alt="img"></p>
 <p><img src="https://img.alicdn.com/tfs/TB18uzTtdcnBKNjSZR0XXcFqFXa-1820-861.png" alt=""></p>
 </li>
@@ -160,13 +160,13 @@ Dubbo's consumer directly discovers the corresponding service endpoints of kuber
 <p>When creating an app, after selecting the image, the next button cannot be clicked and you need to click Choose to continue.</p>
 </li>
 <li>
-<p>EDAS has two independent kubernetes services, one based on Alibaba Cloud's container service, and one set by Lark. I experience the latter.</p>
+<p>EDAS has two independent Kubernetes services, one based on Alibaba Cloud's container service, and one set by Lark. I experience the latter.</p>
 </li>
 <li>
 <p>The development joint of Docker and IDE integration, you need to consider the relevant plug-ins for integrating IDEA.</p>
 </li>
 <li>
-<p>There is always an error in deployment, maybe there is a problem with the kubernetes service. Need further investigation.</p>
+<p>There is always an error in deployment, maybe there is a problem with the Kubernetes service. Need further investigation.</p>
 </li>
 </ul>
 <p>{&quot;kind&quot;:&quot;Pod&quot;,&quot;namespace&quot;:&quot;lzumwsrddf831iwarhehd14zh2-default&quot;,&quot;name&quot;:&quot;dubbo-k8s-demo-610694273-jq238&quot;,&quot;uid&quot;:&quot;12892e67-8bc8-11e8-b96a-00163e02c37b&quot;,&quot;apiVersion&quot;:&quot;v1&quot;,&quot;resourceVersion&quot;:&quot;850282769&quot;},&quot;reason&quot;:&quot;FailedSync&quot;,&quot;message&quot;:&quot;Error syncing pod&quot;,&quot;</p>
diff --git a/en-us/blog/dubbo-k8s.json b/en-us/blog/dubbo-k8s.json
index 41bf4f6..0ab00d0 100644
--- a/en-us/blog/dubbo-k8s.json
+++ b/en-us/blog/dubbo-k8s.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-k8s.md",
-  "__html": "<h1>General goal</h1>\n<p>Dubbo's provider don't care about service registration.Open its Dubbo service port,the declaration and publishment of the service will be executed by kubernetes.\nDubbo's consumer directly discovers the corresponding service endpoints of kubernetes during service discovery procedure, thereby reusing Dubbo's existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be se [...]
+  "__html": "<h1>General goal</h1>\n<p>Dubbo's provider don't care about service registration.Open its Dubbo service port,the declaration and publishment of the service will be executed by Kubernetes.\nDubbo's consumer directly discovers the corresponding service endpoints of Kubernetes during service discovery procedure, thereby reusing Dubbo's existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be se [...]
+  "title": "Integrate Dubbo with Kubernetes",
+  "keywords": "Dubbo, Kubernetes, K8S",
+  "description": "This article will try to register Dubbo service to Kubernetes and integrate with Kubernetes's multi-tenancy security system."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-loadbalance.html b/en-us/blog/dubbo-loadbalance.html
index cd3a35e..0cf0a7d 100644
--- a/en-us/blog/dubbo-loadbalance.html
+++ b/en-us/blog/dubbo-loadbalance.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-loadbalance" />
-	<meta name="description" content="dubbo-loadbalance" />
+	<meta name="keywords" content="Dubbo, LoadBalance" />
+	<meta name="description" content="This article introduces you what is load balance and how load balance strategy is implemented in Dubbo." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-loadbalance</title>
+	<title>Dubbo&#39;s Load Balance</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-loadbalance.json b/en-us/blog/dubbo-loadbalance.json
index 4a99efa..841613e 100644
--- a/en-us/blog/dubbo-loadbalance.json
+++ b/en-us/blog/dubbo-loadbalance.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-loadbalance.md",
-  "__html": "<h1>Dubbo's Load Balance</h1>\n<h2>Background</h2>\n<p>Dubbo is a distributed service framework that avoids single point of failure and horizontal expansion of support services. A service typically deploys multiple instances. How to select a call from a cluster of multiple service providers involves a load balancing strategy.</p>\n<h2>Concepts</h2>\n<p>Before discussing load balancing, I will explain these three concepts first.</p>\n<ol>\n<li>Load Balancing</li>\n<li>Fault-t [...]
+  "__html": "<h1>Dubbo's Load Balance</h1>\n<h2>Background</h2>\n<p>Dubbo is a distributed service framework that avoids single point of failure and horizontal expansion of support services. A service typically deploys multiple instances. How to select a call from a cluster of multiple service providers involves a load balancing strategy.</p>\n<h2>Concepts</h2>\n<p>Before discussing load balancing, I will explain these three concepts first.</p>\n<ol>\n<li>Load Balancing</li>\n<li>Fault-t [...]
+  "title": "Dubbo's Load Balance",
+  "keywords": "Dubbo, LoadBalance",
+  "description": "This article introduces you what is load balance and how load balance strategy is implemented in Dubbo."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html b/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html
index f3bd4cc..9e17739 100644
--- a/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html
+++ b/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-meetup-beijing-may-12th-2018" />
-	<meta name="description" content="dubbo-meetup-beijing-may-12th-2018" />
+	<meta name="keywords" content="Dubbo, Beijing, meetup" />
+	<meta name="description" content="The first Dubbo meetup has been held in Beijing" />
 	<!-- 网页标签标题 -->
-	<title>dubbo-meetup-beijing-may-12th-2018</title>
+	<title>The first Dubbo meetup has been held in Beijing</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-meetup-beijing-may-12th-2018.json b/en-us/blog/dubbo-meetup-beijing-may-12th-2018.json
index 36607e0..cef8c5b 100644
--- a/en-us/blog/dubbo-meetup-beijing-may-12th-2018.json
+++ b/en-us/blog/dubbo-meetup-beijing-may-12th-2018.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-meetup-beijing-may-12th-2018.md",
-  "__html": "<h2>The first Dubbo meetup has been held in Beijing</h2>\n<p>The first Dubbo meetup has successfully been held in Beijing, over 400+ people were present. What a great event!</p>\n<p>Please enjoy the slides of the topics:</p>\n<ul>\n<li>Ian Luo: Dubbo's present and future (Chinese) <a href=\"https://github.com/dubbo/awesome-dubbo/raw/master/slides/meetup/201805%40Beijing/dubbo-present-and-future.pdf\">slides</a></li>\n<li>Jun Liu: Introduction to the 4th Aliware Performance C [...]
+  "__html": "<h2>The first Dubbo meetup has been held in Beijing</h2>\n<p>The first Dubbo meetup has successfully been held in Beijing, over 400+ people were present. What a great event!</p>\n<p>Please enjoy the slides of the topics:</p>\n<ul>\n<li>Ian Luo: Dubbo's present and future (Chinese) <a href=\"https://github.com/dubbo/awesome-dubbo/raw/master/slides/meetup/201805%40Beijing/dubbo-present-and-future.pdf\">slides</a></li>\n<li>Jun Liu: Introduction to the 4th Aliware Performance C [...]
+  "title": "The first Dubbo meetup has been held in Beijing",
+  "keywords": "Dubbo, Beijing, meetup",
+  "description": "The first Dubbo meetup has been held in Beijing"
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html b/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
index 139e5ef..e86846c 100644
--- a/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
+++ b/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-meetup-shanghai-jun-23rd-2018" />
-	<meta name="description" content="dubbo-meetup-shanghai-jun-23rd-2018" />
+	<meta name="keywords" content="Dubbo, Shanghai, meetup" />
+	<meta name="description" content="Dubbo Shanghai meetup has been held successfully" />
 	<!-- 网页标签标题 -->
-	<title>dubbo-meetup-shanghai-jun-23rd-2018</title>
+	<title>Dubbo Shanghai meetup has been held successfully</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.json b/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.json
index 38395c4..3bdba09 100644
--- a/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.json
+++ b/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-meetup-shanghai-jun-23rd-2018.md",
-  "__html": "<h2>Dubbo Shanghai meetup has been held successfully</h2>\n<p>The sencond Dubbo meetup has successfully been held in Shanghai, over 700 people submitted registration, and over 300 were present, more than 10,000 watched the live online. A great event again!</p>\n<p>Please enjoy the slides of the topics:</p>\n<ul>\n<li>Jerrick Zhu: Dubbo Status and Roadmap (Chinese) <a href=\"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-status-and-ro [...]
+  "__html": "<h2>Dubbo Shanghai meetup has been held successfully</h2>\n<p>The sencond Dubbo meetup has successfully been held in Shanghai, over 700 people submitted registration, and over 300 were present, more than 10,000 watched the live online. A great event again!</p>\n<p>Please enjoy the slides of the topics:</p>\n<ul>\n<li>Jerrick Zhu: Dubbo Status and Roadmap (Chinese) <a href=\"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-status-and-ro [...]
+  "title": "Dubbo Shanghai meetup has been held successfully",
+  "keywords": "Dubbo, Shanghai, meetup",
+  "description": "Dubbo Shanghai meetup has been held successfully"
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-new-async.html b/en-us/blog/dubbo-new-async.html
index f4b28d6..6e5d89c 100644
--- a/en-us/blog/dubbo-new-async.html
+++ b/en-us/blog/dubbo-new-async.html
@@ -4,15 +4,15 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-new-async" />
-	<meta name="description" content="dubbo-new-async" />
+	<meta name="keywords" content="Dubbo, asynchronous, async chain" />
+	<meta name="description" content="This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based on CompletableFuture in 2.7.0." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-new-async</title>
+	<title>How to implement a fully asynchronous calls chain based on Dubbo</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="773733418"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-togg [...]
+	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="223165436"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-togg [...]
 <p>Implementing the full asynchronous programming based on Dubbo, which is a new feature introduced in version 2.7.0 after the enhancement of the existing asynchronous mode.This article first reviews the supported functions and existing problems of asynchronization in 2.6.x and earlier versions, and introduces the targeted enhancements based on CompletableFuture in version 2.7.0. Then, the use of enhanced asynchronous programming is elaborated through several examples. Finally, it summar [...]
 <h2>Asynchronous mode before version 2.6.x</h2>
 <p>Dubbo Provides some asynchronous programming capabilities in 2.6.x and earlier versions, including <a href="http://dubbo.apache.org/books/dubbo-user-book/demos/async-call.html">Asynchronous Call</a>, <a href="http://dubbo.apache.org/books/dubbo-user-book/demos/callback-parameter.html">Parameter Callback</a> and <a href="http://dubbo.apache.org/books/dubbo-user-book/demos/events-notify.html">Event Notification</a> on Consumer side. There are some brief introductions to the usage and De [...]
diff --git a/en-us/blog/dubbo-new-async.json b/en-us/blog/dubbo-new-async.json
index afced92..b723d82 100644
--- a/en-us/blog/dubbo-new-async.json
+++ b/en-us/blog/dubbo-new-async.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-new-async.md",
-  "__html": "<h1>How to implement a fully asynchronous calls chain based on Dubbo.</h1>\n<p>Implementing the full asynchronous programming based on Dubbo, which is a new feature introduced in version 2.7.0 after the enhancement of the existing asynchronous mode.This article first reviews the supported functions and existing problems of asynchronization in 2.6.x and earlier versions, and introduces the targeted enhancements based on CompletableFuture in version 2.7.0. Then, the use of enh [...]
+  "__html": "<h1>How to implement a fully asynchronous calls chain based on Dubbo</h1>\n<p>Implementing the full asynchronous programming based on Dubbo, which is a new feature introduced in version 2.7.0 after the enhancement of the existing asynchronous mode.This article first reviews the supported functions and existing problems of asynchronization in 2.6.x and earlier versions, and introduces the targeted enhancements based on CompletableFuture in version 2.7.0. Then, the use of enha [...]
+  "title": "How to implement a fully asynchronous calls chain based on Dubbo",
+  "keywords": "Dubbo, asynchronous, async chain",
+  "description": "This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based on CompletableFuture in 2.7.0."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo-zk.html b/en-us/blog/dubbo-zk.html
index 3ac8df2..4cefe6d 100644
--- a/en-us/blog/dubbo-zk.html
+++ b/en-us/blog/dubbo-zk.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-zk" />
-	<meta name="description" content="dubbo-zk" />
+	<meta name="keywords" content="Dubbo, registry center, Zookeeper, ZK" />
+	<meta name="description" content="This article introduces basic concepts of Zookeeper, and how to use Zookeeper as a registry center." />
 	<!-- 网页标签标题 -->
-	<title>dubbo-zk</title>
+	<title>Using Zookeeper in Dubbo</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/dubbo-zk.json b/en-us/blog/dubbo-zk.json
index 7576491..b83e9ac 100644
--- a/en-us/blog/dubbo-zk.json
+++ b/en-us/blog/dubbo-zk.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-zk.md",
-  "__html": "<h1>Using Zookeeper in Dubbo</h1>\n<h2>Introduction of Zookeeper</h2>\n<h3>The basic concept</h3>\n<p>In the mordern distrbuted applications, there are multiple coordination problems between nodes and nodes, including: leader election, group service, locking, configuration management, naming and synchronization. Apache Zookeeper, as its name implied, is a distributed, open-source coordination service framwork to address these demand.</p>\n<p>In order to ensure the high perfo [...]
+  "__html": "<h1>Using Zookeeper in Dubbo</h1>\n<h2>Introduction of Zookeeper</h2>\n<h3>The basic concept</h3>\n<p>In the mordern distrbuted applications, there are multiple coordination problems between nodes and nodes, including: leader election, group service, locking, configuration management, naming and synchronization. Apache Zookeeper, as its name implied, is a distributed, open-source coordination service framwork to address these demand.</p>\n<p>In order to ensure the high perfo [...]
+  "title": "Using Zookeeper in Dubbo",
+  "keywords": "Dubbo, registry center, Zookeeper, ZK",
+  "description": "This article introduces basic concepts of Zookeeper, and how to use Zookeeper as a registry center."
 }
\ No newline at end of file
diff --git a/en-us/blog/dubbo2-js.html b/en-us/blog/dubbo2-js.html
index cabae7d..0857697 100644
--- a/en-us/blog/dubbo2-js.html
+++ b/en-us/blog/dubbo2-js.html
@@ -4,15 +4,15 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo2-js" />
-	<meta name="description" content="dubbo2-js" />
+	<meta name="keywords" content="Dubbo, 跨语言, Node, NodeJS, js" />
+	<meta name="description" content="This article introduces how to use Dubbo.js to implement cross-language calls." />
 	<!-- 网页标签标题 -->
-	<title>dubbo2-js</title>
+	<title>Implementation of cross-language calls by Dubbo2.js</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-969474269"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-tog [...]
+	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="456261379"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-togg [...]
 <blockquote>
 <p><a href="https://github.com/dubbo/dubbo2.js">dubbo2.js</a> is a Dubbo client for node.js developped by <a href="https://www.qianmi.com/">Qianmiwang</a>. It supports Dubbo's native protocol, which makes the RPC calls between javascript and java efficient and agile. This tool has been contributed to Dubbo's community.</p>
 </blockquote>
diff --git a/en-us/blog/dubbo2-js.json b/en-us/blog/dubbo2-js.json
index 7535d67..1feb71c 100644
--- a/en-us/blog/dubbo2-js.json
+++ b/en-us/blog/dubbo2-js.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo2-js.md",
-  "__html": "<h1>Implementation of cross-language calls by dubbo2.js</h1>\n<blockquote>\n<p><a href=\"https://github.com/dubbo/dubbo2.js\">dubbo2.js</a> is a Dubbo client for node.js developped by <a href=\"https://www.qianmi.com/\">Qianmiwang</a>. It supports Dubbo's native protocol, which makes the RPC calls between javascript and java efficient and agile. This tool has been contributed to Dubbo's community.</p>\n</blockquote>\n<h2>Cross-language calls for micro service</h2>\n<p>Nowada [...]
+  "__html": "<h1>Implementation of cross-language calls by Dubbo2.js</h1>\n<blockquote>\n<p><a href=\"https://github.com/dubbo/dubbo2.js\">dubbo2.js</a> is a Dubbo client for node.js developped by <a href=\"https://www.qianmi.com/\">Qianmiwang</a>. It supports Dubbo's native protocol, which makes the RPC calls between javascript and java efficient and agile. This tool has been contributed to Dubbo's community.</p>\n</blockquote>\n<h2>Cross-language calls for micro service</h2>\n<p>Nowada [...]
+  "title": "Implementation of cross-language calls by Dubbo2.js",
+  "keywords": "Dubbo, 跨语言, Node, NodeJS, js",
+  "description": "This article introduces how to use Dubbo.js to implement cross-language calls."
 }
\ No newline at end of file
diff --git a/en-us/blog/introduction-to-dubbo-qos.html b/en-us/blog/introduction-to-dubbo-qos.html
index 8093625..34bcc08 100644
--- a/en-us/blog/introduction-to-dubbo-qos.html
+++ b/en-us/blog/introduction-to-dubbo-qos.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="introduction-to-dubbo-qos" />
-	<meta name="description" content="introduction-to-dubbo-qos" />
+	<meta name="keywords" content="Dubbo, qos" />
+	<meta name="description" content="This article introduces how to use Dubbo&#39;s QoS to achieve dynamic configuration." />
 	<!-- 网页标签标题 -->
-	<title>introduction-to-dubbo-qos</title>
+	<title>Manipulating Services Dynamically via QoS</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/introduction-to-dubbo-qos.json b/en-us/blog/introduction-to-dubbo-qos.json
index c6c5222..01c8705 100644
--- a/en-us/blog/introduction-to-dubbo-qos.json
+++ b/en-us/blog/introduction-to-dubbo-qos.json
@@ -1,4 +1,7 @@
 {
   "filename": "introduction-to-dubbo-qos.md",
-  "__html": "<h1>Manipulating Services Dynamically via QoS</h1>\n<p>QoS (short form of <strong>Quality of Service</strong>), is a common terminology talking about network devices. For example, by adjusting and manipulating the weights of ports of a router dynamically via QoS, engineers could give priority to services running on these ports and make sure these services' quality and reliability.</p>\n<p>In Dubbo, QoS is used to query and manipulate services dynamically, like getting a list [...]
+  "__html": "<h1>Manipulating Services Dynamically via QoS</h1>\n<p>QoS (short form of <strong>Quality of Service</strong>), is a common terminology talking about network devices. For example, by adjusting and manipulating the weights of ports of a router dynamically via QoS, engineers could give priority to services running on these ports and make sure these services' quality and reliability.</p>\n<p>In Dubbo, QoS is used to query and manipulate services dynamically, like getting a list [...]
+  "title": "Manipulating Services Dynamically via QoS",
+  "keywords": "Dubbo, qos",
+  "description": "This article introduces how to use Dubbo's QoS to achieve dynamic configuration."
 }
\ No newline at end of file
diff --git a/en-us/blog/introduction-to-dubbo-spi-2.html b/en-us/blog/introduction-to-dubbo-spi-2.html
index 42e034e..3712074 100644
--- a/en-us/blog/introduction-to-dubbo-spi-2.html
+++ b/en-us/blog/introduction-to-dubbo-spi-2.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="introduction-to-dubbo-spi-2" />
-	<meta name="description" content="introduction-to-dubbo-spi-2" />
+	<meta name="keywords" content="Dubbo, SPI, source code analysis" />
+	<meta name="description" content="This article introduces the principles and details of Dubbo&#39;s SPI." />
 	<!-- 网页标签标题 -->
-	<title>introduction-to-dubbo-spi-2</title>
+	<title>Dubbo extensible mechanism source code analysis</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/introduction-to-dubbo-spi-2.json b/en-us/blog/introduction-to-dubbo-spi-2.json
index 732d33f..e45b20c 100644
--- a/en-us/blog/introduction-to-dubbo-spi-2.json
+++ b/en-us/blog/introduction-to-dubbo-spi-2.json
@@ -1,4 +1,7 @@
 {
   "filename": "introduction-to-dubbo-spi-2.md",
-  "__html": "<h1>Dubbo extensible mechanism source code analysis</h1>\n<hr>\n<p>In the <a href=\"./introduction-to-dubbo-spi.md\">actual implementation of the Dubbo extensibility mechanism</a>, we learned some concepts of the Dubbo extension mechanism, explored the implementation of LoadBalance in Dubbo, and implemented a LoadBalance on our own. Do you think Dubbo's extension mechanism is great? Next, we will go deep into the source code of Dubbo and see what it is.</p>\n<h2>ExtensionLoa [...]
+  "__html": "<h1>Dubbo extensible mechanism source code analysis</h1>\n<hr>\n<p>In the <a href=\"./introduction-to-dubbo-spi.md\">actual implementation of the Dubbo extensibility mechanism</a>, we learned some concepts of the Dubbo extension mechanism, explored the implementation of LoadBalance in Dubbo, and implemented a LoadBalance on our own. Do you think Dubbo's extension mechanism is great? Next, we will go deep into the source code of Dubbo and see what it is.</p>\n<h2>ExtensionLoa [...]
+  "title": "Dubbo extensible mechanism source code analysis",
+  "keywords": "Dubbo, SPI, source code analysis",
+  "description": "This article introduces the principles and details of Dubbo's SPI."
 }
\ No newline at end of file
diff --git a/en-us/blog/introduction-to-dubbo-spi.html b/en-us/blog/introduction-to-dubbo-spi.html
index 963ef0b..be4db70 100644
--- a/en-us/blog/introduction-to-dubbo-spi.html
+++ b/en-us/blog/introduction-to-dubbo-spi.html
@@ -4,15 +4,15 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="introduction-to-dubbo-spi" />
-	<meta name="description" content="introduction-to-dubbo-spi" />
+	<meta name="keywords" content="Dubbo, SPI" />
+	<meta name="description" content="This article introduces Dubbo&#39;s SPI mechanism." />
 	<!-- 网页标签标题 -->
-	<title>introduction-to-dubbo-spi</title>
+	<title>Dubbo Extension Mechanism in Action</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-1173754555"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-to [...]
+	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="494332926"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/en-us/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">中</span><div class="header-menu" data-reactid="7"><img class="header-menu-togg [...]
 <h2>1. Extension Mechanism of Dubbo</h2>
 <p>Dubbo is claimed as a high-performance RPC framework on its official website. Today, I want to talk about another great specialty of Dubbo --- its scalability.  As quote: Rome wasn’t built in a day. Any successful system always starts as a prototype. It is impossible to design a perfect system at the beginning. Instead, we should focus on true demand and keep improving the system. On the coding side, it requires us to pay attention on abstraction layers and high-level isolation. In th [...]
 When talking about software design, people always mention scalability. A framework with good scalability requires the following:
diff --git a/en-us/blog/introduction-to-dubbo-spi.json b/en-us/blog/introduction-to-dubbo-spi.json
index 6631b1a..af45811 100644
--- a/en-us/blog/introduction-to-dubbo-spi.json
+++ b/en-us/blog/introduction-to-dubbo-spi.json
@@ -1,4 +1,7 @@
 {
   "filename": "introduction-to-dubbo-spi.md",
-  "__html": "<h1>Instance for Dubbo Extension Mechanism</h1>\n<h2>1. Extension Mechanism of Dubbo</h2>\n<p>Dubbo is claimed as a high-performance RPC framework on its official website. Today, I want to talk about another great specialty of Dubbo --- its scalability.  As quote: Rome wasn’t built in a day. Any successful system always starts as a prototype. It is impossible to design a perfect system at the beginning. Instead, we should focus on true demand and keep improving the system. O [...]
+  "__html": "<h1>Dubbo Extension Mechanism in Action</h1>\n<h2>1. Extension Mechanism of Dubbo</h2>\n<p>Dubbo is claimed as a high-performance RPC framework on its official website. Today, I want to talk about another great specialty of Dubbo --- its scalability.  As quote: Rome wasn’t built in a day. Any successful system always starts as a prototype. It is impossible to design a perfect system at the beginning. Instead, we should focus on true demand and keep improving the system. On t [...]
+  "title": "Dubbo Extension Mechanism in Action",
+  "keywords": "Dubbo, SPI",
+  "description": "This article introduces Dubbo's SPI mechanism."
 }
\ No newline at end of file
diff --git a/en-us/blog/pinpoint.html b/en-us/blog/pinpoint.html
index dd86e6e..07b9e13 100644
--- a/en-us/blog/pinpoint.html
+++ b/en-us/blog/pinpoint.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="pinpoint" />
-	<meta name="description" content="pinpoint" />
+	<meta name="keywords" content="Dubbo, Pinpoint, tracing" />
+	<meta name="description" content="This article introduces how to use Pinpoint to track Dubbo applications and monitor applications&#39; performance." />
 	<!-- 网页标签标题 -->
-	<title>pinpoint</title>
+	<title>Tracking with Pinpoint</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/pinpoint.json b/en-us/blog/pinpoint.json
index 0e03719..1b63df9 100644
--- a/en-us/blog/pinpoint.json
+++ b/en-us/blog/pinpoint.json
@@ -1,4 +1,7 @@
 {
   "filename": "pinpoint.md",
-  "__html": "<h1>Tracking with Pinpoint</h1>\n<p>After using Dubbo to serve or integrate applications, assuming that a service backstage log shows an exception and that the service is invoked by multiple applications, it is often difficult to determine which application is called, and what is the cause of the problem, so we need a set of distributed tracking systems to quickly locate the problem. Pinpoint can help us quickly locate problems (of course, there are more than one solution).< [...]
+  "__html": "<h1>Tracking with Pinpoint</h1>\n<p>After using Dubbo to serve or integrate applications, assuming that a service backstage log shows an exception and that the service is invoked by multiple applications, it is often difficult to determine which application is called, and what is the cause of the problem, so we need a set of distributed tracking systems to quickly locate the problem. Pinpoint can help us quickly locate problems (of course, there are more than one solution).< [...]
+  "title": "Tracking with Pinpoint",
+  "keywords": "Dubbo, Pinpoint, tracing",
+  "description": "This article introduces how to use Pinpoint to track Dubbo applications and monitor applications' performance."
 }
\ No newline at end of file
diff --git a/en-us/blog/prepare-an-apache-release.html b/en-us/blog/prepare-an-apache-release.html
index 2dd998b..c471dbe 100644
--- a/en-us/blog/prepare-an-apache-release.html
+++ b/en-us/blog/prepare-an-apache-release.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="prepare-an-apache-release" />
+	<meta name="keywords" content="Dubbo, Apache, Release" />
 	<meta name="description" content="prepare-an-apache-release" />
 	<!-- 网页标签标题 -->
-	<title>prepare-an-apache-release</title>
+	<title>Understanding the Apache Release Cycle</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/prepare-an-apache-release.json b/en-us/blog/prepare-an-apache-release.json
index 5afe3b7..efda547 100644
--- a/en-us/blog/prepare-an-apache-release.json
+++ b/en-us/blog/prepare-an-apache-release.json
@@ -1,4 +1,6 @@
 {
   "filename": "prepare-an-apache-release.md",
-  "__html": "<h2>Understanding the Apache Release Cycle</h2>\n<p>In general, Source Release is the key and the required content of Apache. But Binary Release is optional, Dubbo can choose whether to release binary packages to the Apache repository or to the Maven central repository.</p>\n<p>Please refer to the following links for more information on ASF's release guide:</p>\n<ul>\n<li><a href=\"http://www.apache.org/dev/release-publishing\">Apache Release Guide</a></li>\n<li><a href=\"ht [...]
+  "__html": "<h2>Understanding the Apache Release Cycle</h2>\n<p>In general, Source Release is the key and the required content of Apache. But Binary Release is optional, Dubbo can choose whether to release binary packages to the Apache repository or to the Maven central repository.</p>\n<p>Please refer to the following links for more information on ASF's release guide:</p>\n<ul>\n<li><a href=\"http://www.apache.org/dev/release-publishing\">Apache Release Guide</a></li>\n<li><a href=\"ht [...]
+  "title": "Understanding the Apache Release Cycle",
+  "keywords": "Dubbo, Apache, Release"
 }
\ No newline at end of file
diff --git a/en-us/blog/sentinel-introduction-for-dubbo.html b/en-us/blog/sentinel-introduction-for-dubbo.html
index bd0bdb3..943cfee 100644
--- a/en-us/blog/sentinel-introduction-for-dubbo.html
+++ b/en-us/blog/sentinel-introduction-for-dubbo.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="sentinel-introduction-for-dubbo" />
-	<meta name="description" content="sentinel-introduction-for-dubbo" />
+	<meta name="keywords" content="Dubbo, Sentinel, current limit, fuse" />
+	<meta name="description" content="This article introduces the Sentinel and how to integrate it with Dubbo." />
 	<!-- 网页标签标题 -->
-	<title>sentinel-introduction-for-dubbo</title>
+	<title>Sentinel: The flow sentinel of Dubbo services</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/sentinel-introduction-for-dubbo.json b/en-us/blog/sentinel-introduction-for-dubbo.json
index 9af5c97..7539faa 100644
--- a/en-us/blog/sentinel-introduction-for-dubbo.json
+++ b/en-us/blog/sentinel-introduction-for-dubbo.json
@@ -1,4 +1,7 @@
 {
   "filename": "sentinel-introduction-for-dubbo.md",
-  "__html": "<h1>Sentinel: The flow sentinel of Dubbo services</h1>\n<p>In large clusters there may be thousands of Dubbo service instances in production, with continuous traffic coming in. However, in distributed systems, some services may be unavailable due to various of failure such as traffic surge, high system load, and network latency. If no control actions are performed, this may cause cascading failure, affecting the availability of the service. So we need a powerful library - Se [...]
+  "__html": "<h1>Sentinel: The flow sentinel of Dubbo services</h1>\n<p>In large clusters there may be thousands of Dubbo service instances in production, with continuous traffic coming in. However, in distributed systems, some services may be unavailable due to various of failure such as traffic surge, high system load, and network latency. If no control actions are performed, this may cause cascading failure, affecting the availability of the service. So we need a powerful library - Se [...]
+  "title": "Sentinel: The flow sentinel of Dubbo services",
+  "keywords": "Dubbo, Sentinel, current limit, fuse",
+  "description": "This article introduces the Sentinel and how to integrate it with Dubbo."
 }
\ No newline at end of file
diff --git a/en-us/blog/spring-boot-dubbo-start-stop-analysis.html b/en-us/blog/spring-boot-dubbo-start-stop-analysis.html
index faf218d..212ec77 100644
--- a/en-us/blog/spring-boot-dubbo-start-stop-analysis.html
+++ b/en-us/blog/spring-boot-dubbo-start-stop-analysis.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="spring-boot-dubbo-start-stop-analysis" />
-	<meta name="description" content="spring-boot-dubbo-start-stop-analysis" />
+	<meta name="keywords" content="Dubbo, Spring Boot, source code analysis" />
+	<meta name="description" content="This article introduces the implementation details of app start and stop in `incubator-dubbo-spring-boot-project`." />
 	<!-- 网页标签标题 -->
-	<title>spring-boot-dubbo-start-stop-analysis</title>
+	<title>Source code analysis of spring-boot+Dubbo App start and stop</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/spring-boot-dubbo-start-stop-analysis.json b/en-us/blog/spring-boot-dubbo-start-stop-analysis.json
index 0f03710..66ce6c0 100644
--- a/en-us/blog/spring-boot-dubbo-start-stop-analysis.json
+++ b/en-us/blog/spring-boot-dubbo-start-stop-analysis.json
@@ -1,4 +1,7 @@
 {
   "filename": "spring-boot-dubbo-start-stop-analysis.md",
-  "__html": "<h1>Source code analysis of spring-boot+Dubbo App start and stop</h1>\n<h2>Introduction</h2>\n<p><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project\">Dubbo Spring Boot</a> project is dedicated to simplifying the development of the Dubbo RPC framework in the Spring Boot application. It also integrates the feature of Spring Boot:</p>\n<ul>\n<li><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/dubbo-spring-boot-autoconfigu [...]
+  "__html": "<h1>Source code analysis of spring-boot+Dubbo App start and stop</h1>\n<h2>Introduction</h2>\n<p><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project\">Dubbo Spring Boot</a> project is dedicated to simplifying the development of the Dubbo RPC framework in the Spring Boot application. It also integrates the feature of Spring Boot:</p>\n<ul>\n<li><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/dubbo-spring-boot-autoconfigu [...]
+  "title": "Source code analysis of spring-boot+Dubbo App start and stop",
+  "keywords": "Dubbo, Spring Boot, source code analysis",
+  "description": "This article introduces the implementation details of app start and stop in `incubator-dubbo-spring-boot-project`."
 }
\ No newline at end of file
diff --git a/en-us/blog/tracing-with-skywalking.html b/en-us/blog/tracing-with-skywalking.html
index e2b839d..51db3ec 100644
--- a/en-us/blog/tracing-with-skywalking.html
+++ b/en-us/blog/tracing-with-skywalking.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="tracing-with-skywalking" />
-	<meta name="description" content="tracing-with-skywalking" />
+	<meta name="keywords" content="Dubbo, Skywalking, tracing, distribute tracking" />
+	<meta name="description" content="This article introduces how to use Apache Skywalking to track Dubbo applications." />
 	<!-- 网页标签标题 -->
-	<title>tracing-with-skywalking</title>
+	<title>Tracing Dubbo service with Apache Skywalking(incubator)</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/en-us/blog/tracing-with-skywalking.json b/en-us/blog/tracing-with-skywalking.json
index ee77dd2..ab0e4fd 100644
--- a/en-us/blog/tracing-with-skywalking.json
+++ b/en-us/blog/tracing-with-skywalking.json
@@ -1,4 +1,7 @@
 {
   "filename": "tracing-with-skywalking.md",
-  "__html": "<h1>Tracing Dubbo service with Apache Skywalking(incubator)</h1>\n<h2>Introduction to Apache Skywalking(Incubator)</h2>\n<p><a href=\"https://github.com/apache/incubator-skywalking\">Apache Skywalking(Incubator)</a>  is the APM system that it designed for micro-services architectures and cloud native architecture systems and supports distribute tracking. <a href=\"https://github.com/apache/incubator-skywalking\">Apache skywalking (incubator)</a> collects and analyzes the tra [...]
+  "__html": "<h1>Tracing Dubbo service with Apache Skywalking(incubator)</h1>\n<h2>Introduction to Apache Skywalking(Incubator)</h2>\n<p><a href=\"https://github.com/apache/incubator-skywalking\">Apache Skywalking(Incubator)</a>  is the APM system that it designed for micro-services architectures and cloud native architecture systems and supports distribute tracking. <a href=\"https://github.com/apache/incubator-skywalking\">Apache skywalking (incubator)</a> collects and analyzes the tra [...]
+  "title": "Tracing Dubbo service with Apache Skywalking(incubator)",
+  "keywords": "Dubbo, Skywalking, tracing, distribute tracking",
+  "description": "This article introduces how to use Apache Skywalking to track Dubbo applications."
 }
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-k8s.html b/zh-cn/blog/dubbo-k8s.html
index 64456dd..d40b7ef 100644
--- a/zh-cn/blog/dubbo-k8s.html
+++ b/zh-cn/blog/dubbo-k8s.html
@@ -5,16 +5,16 @@
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
 	<meta name="keywords" content="Dubbo, Kubernetes, K8S" />
-	<meta name="description" content="本文主要尝试将Dubbo服务注册到Kubernetes,同时无缝融入kubernetes的多租户安全体系。" />
+	<meta name="description" content="本文主要尝试将Dubbo服务注册到Kubernetes,同时无缝融入Kubernetes的多租户安全体系。" />
 	<!-- 网页标签标题 -->
 	<title>Dubbo与Kubernetes集成</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
 <body>
-	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="1403216276"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu-to [...]
+	<div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-1118565252"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu-t [...]
 <h2>大体目标</h2>
-<p>Dubbo的provider不再关心服务注册的事宜,只需要把其Dubbo服务端口打开,由kubernetes来进行服务的声明和发布;Dubbo的consumer在服务发现时直接发现kubernetes的对应服务endpoints,从而复用Dubbo已有的微服务通道能力。好处是无需依赖三方的软负载注册中心;同时无缝融入kubernetes的多租户安全体系。Demo的代码参照: <a href="https://github.com/dubbo/dubbo-kubernetes">https://github.com/dubbo/dubbo-kubernetes</a></p>
+<p>Dubbo的provider不再关心服务注册的事宜,只需要把其Dubbo服务端口打开,由Kubernetes来进行服务的声明和发布;Dubbo的consumer在服务发现时直接发现kubernetes的对应服务endpoints,从而复用Dubbo已有的微服务通道能力。好处是无需依赖三方的软负载注册中心;同时无缝融入Kubernetes的多租户安全体系。Demo的代码参照: <a href="https://github.com/dubbo/dubbo-kubernetes">https://github.com/dubbo/dubbo-kubernetes</a></p>
 <h2>闲谈</h2>
 <p>Kubernates是建立在扩展性的具备二次开发的功能层次丰富的体系化系统</p>
 <ul>
@@ -22,59 +22,59 @@
 <li>其次是面向应用(包括无状态/有状态,批处理/服务型应用)的部署和路由能力,特别是基于微服务架构的应用管理,具备了其服务定义和服务发现,以及基于configmap的统一配置能力;</li>
 <li>在基础资源(主要是抽象底层IaaS的资源)和应用层的抽象模型之上是治理层,包含弹性扩容,命名空间/租户,等。当然,基于其原子内核的基础能力,在Kubernetes的核心之上搭建统一的日志中心和全方位监控等服务是水到渠成的,CNCF更是有其认定推荐。</li>
 </ul>
-<p>来张Kubernetes Architecture的一张图解释下上述描述。在2018年Kubernetes往事实的paas底座的标配迈出质的一步,有人说原因在于基于扩展的二次开发能力,有人说在于其声明式编程和背靠Google和Redhat的强大社区运作,我觉得回归本质是在于下图中的<strong>Layered架构和其问题域的领域建模抽象</strong>。
-<img src="../../img/blog/k8s/1.png" alt="img"></p>
-<p>以微服务架构视角,Kubernetes在一定意义上是微服务框架(这时较叫微服务平台或toolkit集更合适),支持微服务的服务发现/注册的基本能力。借用如下图做一个简单描述。
-<img src="../../img/blog/k8s/2.jpeg" alt="img"></p>
-<p>话题再展开一下,微服务领域涉及众多问题,大概可以用下图说明。
-<img src="../../img/blog/k8s/3.jpeg" alt="img">
-kubernetes解决得只是少部分,而像动态路由,稳定性控制(断路器,隔水舱等),分布式服务追踪等是个空白,这也就是servicemesh要解决的,是在CNCF的Trail Map占有重要一席;当然Dubbo是基本具备完备的微服务,也就是使得其集成到k8s体系下具有相当的意义。Dubbo在serviemesh中基于sidecar的方案是解决跨语言诉求的通用servicemesh方案,需要新开一个话题来展开说;而引用serviemsh的原始定义:</p>
+<p>来张Kubernetes Architecture的一张图解释下上述描述。在2018年Kubernetes往事实的paas底座的标配迈出质的一步,有人说原因在于基于扩展的二次开发能力,有人说在于其声明式编程和背靠Google和Redhat的强大社区运作,我觉得回归本质是在于下图中的<strong>Layered架构和其问题域的领域建模抽象</strong>。</p>
+<p><img src="../../img/blog/k8s/1.png" alt="img"></p>
+<p>以微服务架构视角,Kubernetes在一定意义上是微服务框架(这时较叫微服务平台或toolkit集更合适),支持微服务的服务发现/注册的基本能力。借用如下图做一个简单描述。</p>
+<p><img src="../../img/blog/k8s/2.jpeg" alt="img"></p>
+<p>话题再展开一下,微服务领域涉及众多问题,大概可以用下图说明。</p>
+<p><img src="../../img/blog/k8s/3.jpeg" alt="img"></p>
+<p>Kubernetes解决得只是少部分,而像动态路由,稳定性控制(断路器,隔水舱等),分布式服务追踪等是个空白,这也就是servicemesh要解决的,是在CNCF的Trail Map占有重要一席;当然Dubbo是基本具备完备的微服务,也就是使得其集成到k8s体系下具有相当的意义。Dubbo在serviemesh中基于sidecar的方案是解决跨语言诉求的通用servicemesh方案,需要新开一个话题来展开说;而引用serviemsh的原始定义:</p>
 <blockquote>
 <p>A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application.</p>
 </blockquote>
 <blockquote>
 <p>首先服务网格是一个云原生环境下基础设施层,功能在于处理服务间通信,职责是负责实现请求的可靠传递,被使得被监控跟踪,被治理,最终使得微服务架构被赋予高可控的稳定性和快速的问题定位排查能力。</p>
 </blockquote>
-<p>可以得出现有Dubbo集成云原生基础设施kubernetes的基础能力而并解决微服务相关核心问题也算是一种狭义上的servicemesh方案,只是是Java领域的罢了;当玩笑理解也行,哈哈。</p>
+<p>可以得出现有Dubbo集成云原生基础设施Kubernetes的基础能力而并解决微服务相关核心问题也算是一种狭义上的servicemesh方案,只是是Java领域的罢了;当玩笑理解也行,哈哈。</p>
 <h2>思路/方案</h2>
-<p>kubernetes是天然可作为微服务的地址注册中心,类似于zookeeper, 阿里巴巴内部用到的VIPserver,Configserver。 具体来说,kubernetes中的Pod是对于应用的运行实例,Pod的被调度部署/启停都会调用API-Server的服务来保持其状态到ETCD;kubernetes中的service是对应微服务的概念,定义如下</p>
+<p>Kubernetes是天然可作为微服务的地址注册中心,类似于Zookeeper, 阿里巴巴内部用到的VIPserver,Configserver。 具体来说,Kubernetes中的Pod是对于应用的运行实例,Pod的被调度部署/启停都会调用API-Server的服务来保持其状态到ETCD;Kubernetes中的service是对应微服务的概念,定义如下</p>
 <blockquote>
 <p>A Kubernetes Service is an abstraction layer which defines a logical set of Pods and enables external traffic exposure, load balancing and service discovery for those Pods.</p>
 </blockquote>
-<p>概括来说kubernetes service具有如下特点</p>
+<p>概括来说Kubernetes service具有如下特点</p>
 <ul>
 <li>每个Service都有一个唯一的名字,及对应IP。IP是kubernetes自动分配的,名字是开发者自己定义的。</li>
 <li>Service的IP有几种表现形式,分别是ClusterIP,NodePort,LoadBalance,Ingress。 ClusterIP主要用于集群内通信;NodePort,Ingress,LoadBalance用于暴露服务给集群外的访问入口。</li>
 </ul>
-<p>乍一看,kubernetes的service都是唯一的IP,在原有的Dubbo/HSF固定思维下:Dubbo/HSF的service是由整个服务集群的IP聚合而成,貌似是有本质区别的,细想下来差别不大,因为kubernetes下的唯一IP只是一个VIP,背后挂在了多个endpoint,那才是事实上的处理节点。此处只讨论集群内的Dubbo服务在同一个kubernetes集群内访问;至于kubernetes外的consumer访问kubernetes内的provider,涉及到网络地址空间的问题,一般需要GateWay/loadbalance来做映射转换,不展开讨论。针对kubernetes内有两种方案可选: :</p>
+<p>乍一看,Kubernetes的service都是唯一的IP,在原有的Dubbo/HSF固定思维下:Dubbo/HSF的service是由整个服务集群的IP聚合而成,貌似是有本质区别的,细想下来差别不大,因为Kubernetes下的唯一IP只是一个VIP,背后挂在了多个endpoint,那才是事实上的处理节点。此处只讨论集群内的Dubbo服务在同一个kubernetes集群内访问;至于kubernetes外的consumer访问kubernetes内的provider,涉及到网络地址空间的问题,一般需要GateWay/loadbalance来做映射转换,不展开讨论。针对Kubernetes内有两种方案可选: :</p>
 <ol>
-<li>DNS: 默认kubernetes的service是靠DNS插件(最新版推荐是coreDNS), Dubbo上有个proposal是关于这个的。我的理解是static resolution的机制是最简单最需要支持的一种service discovery机制,具体也可以参考Envoy在此的观点,由于HSF/Dubbo一直突出其软负载的地址发现能力,反而忽略Static的策略。同时蚂蚁的SOFA一直是支持此种策略,那一个SOFA工程的工程片段做一个解释。这样做有两个好处,1)当软负载中心crash不可用造成无法获取地址列表时,有一定的机制Failover到此策略来处理一定的请求。 2)在LDC/单元化下,蚂蚁的负载中心集群是机房/区域内收敛部署的,首先保证软负载中心的LDC化了进而稳定可控,当单元需要请求中心时,此VIP的地址发现就排上用场了。</li>
+<li>DNS: 默认Kubernetes的service是靠DNS插件(最新版推荐是coreDNS), Dubbo上有个proposal是关于这个的。我的理解是static resolution的机制是最简单最需要支持的一种service discovery机制,具体也可以参考Envoy在此的观点,由于HSF/Dubbo一直突出其软负载的地址发现能力,反而忽略Static的策略。同时蚂蚁的SOFA一直是支持此种策略,那一个SOFA工程的工程片段做一个解释。这样做有两个好处,1)当软负载中心crash不可用造成无法获取地址列表时,有一定的机制Failover到此策略来处理一定的请求。 2)在LDC/单元化下,蚂蚁的负载中心集群是机房/区域内收敛部署的,首先保证软负载中心的LDC化了进而稳定可控,当单元需要请求中心时,此VIP的地址发现就排上用场了。</li>
 </ol>
 <p><img src="https://img.alicdn.com/tfs/TB1Kj1ktpkoBKNjSZFEXXbrEVXa-985-213.png" alt="img"></p>
 <ol start="2">
-<li>API:DNS是依靠DNS插件进行的,相当于额外的运维开销,所以考虑直接通过kubernetes的client来获取endpoint。事实上,通过访问kubernetes的API server接口是可以直接获取某个servie背后的endpoint列表,同时可以监听其地址列表的变化。从而实现Dubbo/HSF所推荐的软负载发现策略。具体可以参考代码:</li>
+<li>API:DNS是依靠DNS插件进行的,相当于额外的运维开销,所以考虑直接通过kubernetes的client来获取endpoint。事实上,通过访问Kubernetes的API server接口是可以直接获取某个servie背后的endpoint列表,同时可以监听其地址列表的变化。从而实现Dubbo/HSF所推荐的软负载发现策略。具体可以参考代码:</li>
 </ol>
 <p>以上两种思路都需要考虑以下两点:</p>
 <ol>
-<li>kubernetes和Dubbo对于service的名字是映射一致的。Dubbo的服务是由serviename,group,version三个来确定其唯一性,而且servicename一般其服务接口的包名称,比较长。需要映射kubernetes的servie名与dubbo的服务名。要么是像SOFA那样增加一个属性来进行定义,这是个大的改动,但最合理;要么是通过固定规则来引用部署的环境变量,可用于快速验证。</li>
+<li>Kubernetes和Dubbo对于service的名字是映射一致的。Dubbo的服务是由serviename,group,version三个来确定其唯一性,而且servicename一般其服务接口的包名称,比较长。需要映射Kubernetes的servie名与dubbo的服务名。要么是像SOFA那样增加一个属性来进行定义,这是个大的改动,但最合理;要么是通过固定规则来引用部署的环境变量,可用于快速验证。</li>
 <li>端口问题:默认Pod与Pod的网络互通算是解决了,需要验证。</li>
 </ol>
 <h2>Demo验证</h2>
-<p>下面通过阿里云的容器镜像服务和EDAS中的kubernetes服务来做一次Demo部署。访问阿里云-》容器镜像服务。</p>
+<p>下面通过阿里云的容器镜像服务和EDAS中的Kubernetes服务来做一次Demo部署。访问阿里云 -&gt; 容器镜像服务。</p>
 <ol>
 <li>创建镜像仓库并绑定github代码库。如下图</li>
 </ol>
 <p><img src="https://img.alicdn.com/tfs/TB1m.tEtrorBKNjSZFjXXc_SpXa-1892-870.png" alt="img"></p>
 <ol start="2">
-<li>点击管理***进行创建好的仓库***,通过镜像服务下的构建功能,把demo构建成image,并发布到指定仓库。如下图。</li>
+<li>点击管理 <strong>进行创建好的仓库</strong>,通过镜像服务下的构建功能,把demo构建成image,并发布到指定仓库。如下图。</li>
 </ol>
 <p><img src="https://img.alicdn.com/tfs/TB1oYqvtcIrBKNjSZK9XXagoVXa-1872-888.png" alt="img"></p>
 <ol start="3">
-<li>切换到企业级分布式应用服务(EDAS)产品,在资源管理 - 》集群 下创建kubernetes集群并绑定ECS,如下图.</li>
+<li>切换到企业级分布式应用服务(EDAS)产品,在资源管理 -&gt; 集群 下创建Kubernetes集群并绑定ECS,如下图.</li>
 </ol>
 <p><img src="https://img.alicdn.com/tfs/TB1b1p2trZnBKNjSZFKXXcGOVXa-1858-833.png" alt="img"></p>
 <ol start="4">
-<li>应用管理 -》创建应用,<em><strong>类型为kubernetes应用</strong></em> 并且指定在容器镜像服务中的镜像。如下图。</li>
+<li>应用管理 -》创建应用,<strong>类型为kubernetes应用</strong> 并且指定在容器镜像服务中的镜像。如下图。</li>
 </ol>
 <p><img src="https://img.alicdn.com/tfs/TB1b1p2trZnBKNjSZFKXXcGOVXa-1858-833.png" alt="img"></p>
 <p><img src="https://img.alicdn.com/tfs/TB18uzTtdcnBKNjSZR0XXcFqFXa-1820-861.png" alt=""></p>
@@ -90,13 +90,13 @@ kubernetes解决得只是少部分,而像动态路由,稳定性控制(断
 <p>在创建应用时,选中镜像后,下一步的按钮无法点击,需要点击选择来继续。</p>
 </li>
 <li>
-<p>EDAS有两套独立的kubernetes服务,一套是基于阿里云的容器服务,一套是Lark自己搞的。本人体验的是后者。</p>
+<p>EDAS有两套独立的Kubernetes服务,一套是基于阿里云的容器服务,一套是Lark自己搞的。本人体验的是后者。</p>
 </li>
 <li>
 <p>Docker与IDE集成的开发联调,需要考虑集成IDEA的相关插件。</p>
 </li>
 <li>
-<p>部署时总是出错,感觉kubernetes服务上哪里有问题。需要进一步排查。</p>
+<p>部署时总是出错,感觉Kubernetes服务上哪里有问题。需要进一步排查。</p>
 <p>{&quot;kind&quot;:&quot;Pod&quot;,&quot;namespace&quot;:&quot;lzumwsrddf831iwarhehd14zh2-default&quot;,&quot;name&quot;:&quot;dubbo-k8s-demo-610694273-jq238&quot;,&quot;uid&quot;:&quot;12892e67-8bc8-11e8-b96a-00163e02c37b&quot;,&quot;apiVersion&quot;:&quot;v1&quot;,&quot;resourceVersion&quot;:&quot;850282769&quot;},&quot;reason&quot;:&quot;FailedSync&quot;,&quot;message&quot;:&quot;Error syncing pod&quot;,&quot;</p>
 </li>
 </ul>
diff --git a/zh-cn/blog/dubbo-k8s.json b/zh-cn/blog/dubbo-k8s.json
index c5527c5..5a654ed 100644
--- a/zh-cn/blog/dubbo-k8s.json
+++ b/zh-cn/blog/dubbo-k8s.json
@@ -1,7 +1,7 @@
 {
   "filename": "dubbo-k8s.md",
-  "__html": "<h1>Dubbo与Kubernetes集成</h1>\n<h2>大体目标</h2>\n<p>Dubbo的provider不再关心服务注册的事宜,只需要把其Dubbo服务端口打开,由kubernetes来进行服务的声明和发布;Dubbo的consumer在服务发现时直接发现kubernetes的对应服务endpoints,从而复用Dubbo已有的微服务通道能力。好处是无需依赖三方的软负载注册中心;同时无缝融入kubernetes的多租户安全体系。Demo的代码参照: <a href=\"https://github.com/dubbo/dubbo-kubernetes\">https://github.com/dubbo/dubbo-kubernetes</a></p>\n<h2>闲谈</h2>\n<p>Kubernates是建立在扩展性的具备二次开发的功能层次丰富的体系化系统</p>\n<ul>\n<li>首先其最核心的功能是管理容器集群,能管理容器化的集群(包括存储,计算),当然这个是建立在对容器运行时(CRI),网络接口(CNI),存储服 [...]
+  "__html": "<h1>Dubbo与Kubernetes集成</h1>\n<h2>大体目标</h2>\n<p>Dubbo的provider不再关心服务注册的事宜,只需要把其Dubbo服务端口打开,由Kubernetes来进行服务的声明和发布;Dubbo的consumer在服务发现时直接发现kubernetes的对应服务endpoints,从而复用Dubbo已有的微服务通道能力。好处是无需依赖三方的软负载注册中心;同时无缝融入Kubernetes的多租户安全体系。Demo的代码参照: <a href=\"https://github.com/dubbo/dubbo-kubernetes\">https://github.com/dubbo/dubbo-kubernetes</a></p>\n<h2>闲谈</h2>\n<p>Kubernates是建立在扩展性的具备二次开发的功能层次丰富的体系化系统</p>\n<ul>\n<li>首先其最核心的功能是管理容器集群,能管理容器化的集群(包括存储,计算),当然这个是建立在对容器运行时(CRI),网络接口(CNI),存储服 [...]
   "title": "Dubbo与Kubernetes集成",
   "keywords": "Dubbo, Kubernetes, K8S",
-  "description": "本文主要尝试将Dubbo服务注册到Kubernetes,同时无缝融入kubernetes的多租户安全体系。"
+  "description": "本文主要尝试将Dubbo服务注册到Kubernetes,同时无缝融入Kubernetes的多租户安全体系。"
 }
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html b/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
index 434e2f3..160481e 100644
--- a/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
+++ b/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-meetup-shanghai-jun-23rd-2018" />
-	<meta name="description" content="dubbo-meetup-shanghai-jun-23rd-2018" />
+	<meta name="keywords" content="Dubbo, 上海, meetup" />
+	<meta name="description" content="第二届Dubbo开发者沙龙在上海成功举办。" />
 	<!-- 网页标签标题 -->
-	<title>dubbo-meetup-shanghai-jun-23rd-2018</title>
+	<title>第二届Dubbo开发者沙龙在上海成功举办</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.json b/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.json
index 2d52fbb..4f3569b 100644
--- a/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.json
+++ b/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-meetup-shanghai-jun-23rd-2018.md",
-  "__html": "<h1>第二届Dubbo开发者沙龙在上海成功举办</h1>\n<p>第二届Dubbo开发者沙龙在上海成功举办,超过700位开发者报名,现场参与人数300+,通过阿里云天池、云栖社区、大咖说引导线上直播观看次数10000+</p>\n<p>分享嘉宾及PPT:</p>\n<ul>\n<li>朱勇: Dubbo开源现状与未来规划 (中文) <a href=\"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-status-and-roadmap.pdf\">slides</a></li>\n<li>小马哥: Dubbo Cloud Native 之路的实践与思考 (中文) <a href=\"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-cloud-native-practices-and-th [...]
+  "__html": "<h1>第二届Dubbo开发者沙龙在上海成功举办</h1>\n<p>第二届Dubbo开发者沙龙在上海成功举办,超过700位开发者报名,现场参与人数300+,通过阿里云天池、云栖社区、大咖说引导线上直播观看次数10000+</p>\n<p>分享嘉宾及PPT:</p>\n<ul>\n<li>朱勇: Dubbo开源现状与未来规划 (中文) <a href=\"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-status-and-roadmap.pdf\">slides</a></li>\n<li>小马哥: Dubbo Cloud Native 之路的实践与思考 (中文) <a href=\"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-cloud-native-practices-and-th [...]
+  "title": "第二届Dubbo开发者沙龙在上海成功举办",
+  "keywords": "Dubbo, 上海, meetup",
+  "description": "第二届Dubbo开发者沙龙在上海成功举办。"
 }
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-shenzhen.html b/zh-cn/blog/dubbo-meetup-shenzhen.html
index 5b2d061..4c501ad 100644
--- a/zh-cn/blog/dubbo-meetup-shenzhen.html
+++ b/zh-cn/blog/dubbo-meetup-shenzhen.html
@@ -4,10 +4,10 @@
 <head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-	<meta name="keywords" content="dubbo-meetup-shenzhen" />
-	<meta name="description" content="dubbo-meetup-shenzhen" />
+	<meta name="keywords" content="Dubbo, 深圳, meetup" />
+	<meta name="description" content="第三届Dubbo开发者沙龙在深圳成功举办。" />
 	<!-- 网页标签标题 -->
-	<title>dubbo-meetup-shenzhen</title>
+	<title>第三届Dubbo开发者沙龙在深圳成功举办</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
 	<link rel="stylesheet" href="/build/blogDetail.css" />
 </head>
diff --git a/zh-cn/blog/dubbo-meetup-shenzhen.json b/zh-cn/blog/dubbo-meetup-shenzhen.json
index f5b13cb..eb2e855 100644
--- a/zh-cn/blog/dubbo-meetup-shenzhen.json
+++ b/zh-cn/blog/dubbo-meetup-shenzhen.json
@@ -1,4 +1,7 @@
 {
   "filename": "dubbo-meetup-shenzhen.md",
-  "__html": "<h1>第三届Dubbo开发者沙龙在深圳成功举办</h1>\n<p>第三届Dubbo开发者沙龙在深圳成功举办,超过2000位开发者报名,现场参与人数700+,通过阿里云天池、云栖社区、大咖说引导线上直播观看次数17000+</p>\n<p>分享嘉宾</p>\n<ul>\n<li>陈志轩: Dubbo开源现状和2.7规划</li>\n<li>康彬: 乐信集团的微服务化之路</li>\n<li>林佳梁: Sentinel——企业用户的全方位流量哨兵</li>\n</ul>\n"
+  "__html": "<h1>第三届Dubbo开发者沙龙在深圳成功举办</h1>\n<p>第三届Dubbo开发者沙龙在深圳成功举办,超过2000位开发者报名,现场参与人数700+,通过阿里云天池、云栖社区、大咖说引导线上直播观看次数17000+</p>\n<p>分享嘉宾</p>\n<ul>\n<li>陈志轩: Dubbo开源现状和2.7规划</li>\n<li>康彬: 乐信集团的微服务化之路</li>\n<li>林佳梁: Sentinel——企业用户的全方位流量哨兵</li>\n</ul>\n",
+  "title": "第三届Dubbo开发者沙龙在深圳成功举办",
+  "keywords": "Dubbo, 深圳, meetup",
+  "description": "第三届Dubbo开发者沙龙在深圳成功举办。"
 }
\ No newline at end of file
diff --git a/zh-cn/blog/introduction-to-dubbo-spi-2.html b/zh-cn/blog/introduction-to-dubbo-spi-2.html
index 1116e7e..98b3787 100644
--- a/zh-cn/blog/introduction-to-dubbo-spi-2.html
+++ b/zh-cn/blog/introduction-to-dubbo-spi-2.html
@@ -5,7 +5,7 @@
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
 	<meta name="keywords" content="Dubbo, SPI, 源码分析" />
-	<meta name="description" content="introduction-to-dubbo-spi-2" />
+	<meta name="description" content="本文介绍了SPI扩展机制的实现原理与细节。" />
 	<!-- 网页标签标题 -->
 	<title>Dubbo可扩展机制源码解析</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
diff --git a/zh-cn/blog/introduction-to-dubbo-spi-2.json b/zh-cn/blog/introduction-to-dubbo-spi-2.json
index 75279af..c244c97 100644
--- a/zh-cn/blog/introduction-to-dubbo-spi-2.json
+++ b/zh-cn/blog/introduction-to-dubbo-spi-2.json
@@ -2,5 +2,6 @@
   "filename": "introduction-to-dubbo-spi-2.md",
   "__html": "<h1>Dubbo可扩展机制源码解析</h1>\n<p>在<a href=\"./introduction-to-dubbo-spi.md\">Dubbo可扩展机制实战</a>中,我们了解了Dubbo扩展机制的一些概念,初探了Dubbo中LoadBalance的实现,并自己实现了一个LoadBalance。是不是觉得Dubbo的扩展机制很不错呀,接下来,我们就深入Dubbo的源码,一睹庐山真面目。</p>\n<h2>ExtensionLoader</h2>\n<p>ExtentionLoader是最核心的类,负责扩展点的加载和生命周期管理。我们就以这个类开始吧。\nExtension的方法比较多,比较常用的方法有:</p>\n<ul>\n<li><code>public static &lt;T&gt; ExtensionLoader&lt;T&gt; getExtensionLoader(Class&lt;T&gt; type)</code></li>\n<li><code>public T getExtension(String name) [...]
   "title": "Dubbo可扩展机制源码解析",
-  "keywords": "Dubbo, SPI, 源码分析"
+  "keywords": "Dubbo, SPI, 源码分析",
+  "description": "本文介绍了SPI扩展机制的实现原理与细节。"
 }
\ No newline at end of file
diff --git a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html
index 059feca..07b9fb5 100644
--- a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html
+++ b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html
@@ -5,7 +5,7 @@
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
 	<meta name="keywords" content="Dubbo, Spring Boot, 源码分析" />
-	<meta name="description" content="spring-boot-dubbo-start-stop-analysis" />
+	<meta name="description" content="本文分析 `incubator-dubbo-spring-boot-project` 中 Dubbo 启停源码的实现原理。" />
 	<!-- 网页标签标题 -->
 	<title>Spring Boot Dubbo应用启停源码分析</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
diff --git a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json
index 61a3213..9ab6871 100644
--- a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json
+++ b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json
@@ -2,5 +2,6 @@
   "filename": "spring-boot-dubbo-start-stop-analysis.md",
   "__html": "<h1>Spring Boot Dubbo应用启停源码分析</h1>\n<h2>背景介绍</h2>\n<p><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project\">Dubbo Spring Boot</a> 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发。同时也整合了 Spring Boot 特性:</p>\n<ul>\n<li><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/dubbo-spring-boot-autoconfigure\">自动装配</a> (比如: 注解驱动, 自动装配等).</li>\n<li><a href=\"https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/dubbo-sprin [...]
   "title": "Spring Boot Dubbo应用启停源码分析",
-  "keywords": "Dubbo, Spring Boot, 源码分析"
+  "keywords": "Dubbo, Spring Boot, 源码分析",
+  "description": "本文分析 `incubator-dubbo-spring-boot-project` 中 Dubbo 启停源码的实现原理。"
 }
\ No newline at end of file
diff --git a/zh-cn/blog/tracing-with-skywalking.html b/zh-cn/blog/tracing-with-skywalking.html
index a4bc7e4..b1aeeef 100644
--- a/zh-cn/blog/tracing-with-skywalking.html
+++ b/zh-cn/blog/tracing-with-skywalking.html
@@ -5,7 +5,7 @@
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
 	<meta name="keywords" content="Dubbo, Skywalking, tracing, 分布式跟踪" />
-	<meta name="description" content="tracing-with-skywalking" />
+	<meta name="description" content="本文介绍如何使用 Apache Skywalking 对 Dubbo 应用做分布式链路追踪。" />
 	<!-- 网页标签标题 -->
 	<title>使用Apache Skywalking (Incubator) 做分布式跟踪</title>
 	<link rel="shortcut icon" href="/img/dubbo.ico"/>
diff --git a/zh-cn/blog/tracing-with-skywalking.json b/zh-cn/blog/tracing-with-skywalking.json
index da3edf1..dc08601 100644
--- a/zh-cn/blog/tracing-with-skywalking.json
+++ b/zh-cn/blog/tracing-with-skywalking.json
@@ -2,5 +2,6 @@
   "filename": "tracing-with-skywalking.md",
   "__html": "<h1>使用Apache Skywalking (Incubator) 做分布式跟踪</h1>\n<h2>Apache Skywalking(Incubator)简介</h2>\n<p><a href=\"https://github.com/apache/incubator-skywalking\">Apache Skywalking(Incubator)</a> 专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统。<a href=\"https://github.com/apache/incubator-skywalking\">Apache Skywalking(Incubator)</a>通过加载探针的方式收集应用调用链路信息,并对采集的调用链路信息进行分析,生成应用间关系和服务间关系以及服务指标。<a href=\"https://github.com/apache/incubator-skywalking\">Apache Skywalking (Incubating)</a>目前支持多种语言,其中包括<a h [...]
   "title": "使用Apache Skywalking (Incubator) 做分布式跟踪",
-  "keywords": "Dubbo, Skywalking, tracing, 分布式跟踪"
+  "keywords": "Dubbo, Skywalking, tracing, 分布式跟踪",
+  "description": "本文介绍如何使用 Apache Skywalking 对 Dubbo 应用做分布式链路追踪。"
 }
\ No newline at end of file
diff --git a/zh-cn/docs/user/demos/explicit-target.html b/zh-cn/docs/user/demos/explicit-target.html
index 4aa69f1..e53d9fc 100644
--- a/zh-cn/docs/user/demos/explicit-target.html
+++ b/zh-cn/docs/user/demos/explicit-target.html
@@ -12,8 +12,8 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot="" data-reactid="1" data-react-checksum="1960266022"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu- [...]
-<p>在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。</p>
+	<div id="root"><div class="documentation-page" data-reactroot="" data-reactid="1" data-react-checksum="426072240"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu-t [...]
+<p>在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。</p>
 <p><img src="../sources/images/dubbo-directly.jpg" alt="/user-guide/images/dubbo-directly.jpg"></p>
 <h2>通过 XML 配置</h2>
 <p>如果是线上需求需要点对点,可在 <code>&lt;dubbo:reference&gt;</code> 中配置 url 指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下  <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
diff --git a/zh-cn/docs/user/demos/explicit-target.json b/zh-cn/docs/user/demos/explicit-target.json
index f58f26f..26f87c1 100644
--- a/zh-cn/docs/user/demos/explicit-target.json
+++ b/zh-cn/docs/user/demos/explicit-target.json
@@ -1,4 +1,4 @@
 {
   "filename": "explicit-target.md",
-  "__html": "<h1>直连提供者</h1>\n<p>在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。</p>\n<p><img src=\"../sources/images/dubbo-directly.jpg\" alt=\"/user-guide/images/dubbo-directly.jpg\"></p>\n<h2>通过 XML 配置</h2>\n<p>如果是线上需求需要点对点,可在 <code>&lt;dubbo:reference&gt;</code> 中配置 url 指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下  <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs [...]
+  "__html": "<h1>直连提供者</h1>\n<p>在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。</p>\n<p><img src=\"../sources/images/dubbo-directly.jpg\" alt=\"/user-guide/images/dubbo-directly.jpg\"></p>\n<h2>通过 XML 配置</h2>\n<p>如果是线上需求需要点对点,可在 <code>&lt;dubbo:reference&gt;</code> 中配置 url 指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下  <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs [...]
 }
\ No newline at end of file
diff --git a/zh-cn/docs/user/maturity.html b/zh-cn/docs/user/maturity.html
index 9a69e41..f790f99 100644
--- a/zh-cn/docs/user/maturity.html
+++ b/zh-cn/docs/user/maturity.html
@@ -12,7 +12,7 @@
 	<link rel="stylesheet" href="/build/documentation.css" />
 </head>
 <body>
-	<div id="root"><div class="documentation-page" data-reactroot="" data-reactid="1" data-react-checksum="557895841"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu-t [...]
+	<div id="root"><div class="documentation-page" data-reactroot="" data-reactid="1" data-react-checksum="1393675396"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu- [...]
 <h2>功能成熟度</h2>
 <table>
 <thead>
@@ -253,7 +253,7 @@
 <td>Multicast注册中心</td>
 <td>Tested</td>
 <td>去中心化,不需要安装注册中心</td>
-<td>依赖于网络拓普和路由,跨机房有风险</td>
+<td>依赖于网络拓扑和路由,跨机房有风险</td>
 <td>小规模应用或开发测试环境</td>
 <td></td>
 </tr>
diff --git a/zh-cn/docs/user/maturity.json b/zh-cn/docs/user/maturity.json
index f32bfae..32c65af 100644
--- a/zh-cn/docs/user/maturity.json
+++ b/zh-cn/docs/user/maturity.json
@@ -1,4 +1,4 @@
 {
   "filename": "maturity.md",
-  "__html": "<h1>成熟度</h1>\n<h2>功能成熟度</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>Maturity</th>\n<th>Strength</th>\n<th>Problem</th>\n<th>Advise</th>\n<th>User</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>并发控制</td>\n<td>Tested</td>\n<td>并发控制</td>\n<td></td>\n<td>试用</td>\n<td></td>\n</tr>\n<tr>\n<td>连接控制</td>\n<td>Tested</td>\n<td>连接数控制</td>\n<td></td>\n<td>试用</td>\n<td></td>\n</tr>\n<tr>\n<td>直连提供者</td>\n<td>Tested</td>\n<td>点对点直连服务提供方,用于测试</td>\n<td></td>\n<td>测试环境使用</td>\n<td>Aliba [...]
+  "__html": "<h1>成熟度</h1>\n<h2>功能成熟度</h2>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>Maturity</th>\n<th>Strength</th>\n<th>Problem</th>\n<th>Advise</th>\n<th>User</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>并发控制</td>\n<td>Tested</td>\n<td>并发控制</td>\n<td></td>\n<td>试用</td>\n<td></td>\n</tr>\n<tr>\n<td>连接控制</td>\n<td>Tested</td>\n<td>连接数控制</td>\n<td></td>\n<td>试用</td>\n<td></td>\n</tr>\n<tr>\n<td>直连提供者</td>\n<td>Tested</td>\n<td>点对点直连服务提供方,用于测试</td>\n<td></td>\n<td>测试环境使用</td>\n<td>Aliba [...]
 }
\ No newline at end of file