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 <yong.z...@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

Reply via email to