You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gi...@apache.org on 2019/12/26 05:14:56 UTC

[dubbo-website] branch asf-site updated: Automated deployment: Thu Dec 26 05:14:48 UTC 2019 ff72d66a2a97106b3960e39c571f5a30dc3f6627

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new da0a36b  Automated deployment: Thu Dec 26 05:14:48 UTC 2019 ff72d66a2a97106b3960e39c571f5a30dc3f6627
da0a36b is described below

commit da0a36baa8ff08026c8d06f8f3590baed1fb5eb0
Author: htynkn <ht...@users.noreply.github.com>
AuthorDate: Thu Dec 26 05:14:48 2019 +0000

    Automated deployment: Thu Dec 26 05:14:48 UTC 2019 ff72d66a2a97106b3960e39c571f5a30dc3f6627
---
 build/blog.js                     | 2 +-
 build/blogDetail.js               | 4 ++--
 build/community.js                | 2 +-
 build/documentation.js            | 4 ++--
 build/ecology.js                  | 6 +++---
 build/home.js                     | 2 +-
 zh-cn/blog/dubbo-27-features.html | 2 +-
 zh-cn/blog/dubbo-27-features.json | 2 +-
 zh-cn/blog/dubbo-rest.html        | 2 +-
 zh-cn/blog/dubbo-rest.json        | 2 +-
 zh-cn/blog/rpc-introduction.html  | 2 +-
 zh-cn/blog/rpc-introduction.json  | 2 +-
 12 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/build/blog.js b/build/blog.js
index 57cc1e5..dad8a76 100644
--- a/build/blog.js
+++ b/build/blog.js
@@ -1,4 +1,4 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=318 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=317 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
diff --git a/build/blogDetail.js b/build/blogDetail.js
index ca0b07d..46ed005 100644
--- a/build/blogDetail.js
+++ b/build/blogDetail.js
@@ -1,6 +1,6 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=319 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=318 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},50:function(e,t,n){"use strict";fu [...]
\ No newline at end of file
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},50:function(e,t,n){"use strict";fu [...]
\ No newline at end of file
diff --git a/build/community.js b/build/community.js
index 69ff1d7..d790615 100644
--- a/build/community.js
+++ b/build/community.js
@@ -1,4 +1,4 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=320 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=319 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
diff --git a/build/documentation.js b/build/documentation.js
index 10df1f5..d5fcba1 100644
--- a/build/documentation.js
+++ b/build/documentation.js
@@ -1,6 +1,6 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=321 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=320 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=n.apply(null,r);l&&e.push(l)}else if("object"===o)for(var s in r)i.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},50:function(e,t,n){"use strict";fu [...]
\ No newline at end of file
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=n.apply(null,r);l&&e.push(l)}else if("object"===o)for(var s in r)i.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},50:function(e,t,n){"use strict";fu [...]
\ No newline at end of file
diff --git a/build/ecology.js b/build/ecology.js
index 91f1925..f6c4980 100644
--- a/build/ecology.js
+++ b/build/ecology.js
@@ -1,11 +1,11 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var c=n[r]={i:r,l:!1,exports:{}};return e[r].call(c.exports,c,c.exports,t),c.l=!0,c.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=322 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var c=n[r]={i:r,l:!1,exports:{}};return e[r].call(c.exports,c,c.exports,t),c.l=!0,c.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=321 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var c=typeof r;if("string"===c||"number"===c)e.push(r);else if(Array.isArray(r)&&r.length){var o=n.apply(null,r);o&&e.push(o)}else if("object"===c)for(var i in r)a.call(r,i)&&r[i]&&e.push(i)}}return e.join(" ")}var a={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(c=function(){return n}.apply(t,r))&&(e.exports=c))}()},function(e,t,n){"use strict";Objec [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var c=typeof r;if("string"===c||"number"===c)e.push(r);else if(Array.isArray(r)&&r.length){var o=n.apply(null,r);o&&e.push(o)}else if("object"===c)for(var i in r)a.call(r,i)&&r[i]&&e.push(i)}}return e.join(" ")}var a={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(c=function(){return n}.apply(t,r))&&(e.exports=c))}()},function(e,t,n){"use strict";Objec [...]
 object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var c=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
\ No newline at end of file
+var c=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
\ No newline at end of file
diff --git a/build/home.js b/build/home.js
index b3de078..fab397c 100644
--- a/build/home.js
+++ b/build/home.js
@@ -1,4 +1,4 @@
-!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=323 [...]
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=322 [...]
   Copyright (c) 2017 Jed Watson.
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
diff --git a/zh-cn/blog/dubbo-27-features.html b/zh-cn/blog/dubbo-27-features.html
index b4d3324..76cdab7 100644
--- a/zh-cn/blog/dubbo-27-features.html
+++ b/zh-cn/blog/dubbo-27-features.html
@@ -171,7 +171,7 @@ timestamp=1552975501873
 <p>在很长的一段时间内,Dubbo 社区经常有人提的一个问题是:Dubbo 如何实现流量隔离和灰度发布,直到 2.7 提供了标签路由,用户可以使用这个功能,来实现上述的需求。</p>
 <p><img src="http://kirito.iocoder.cn/image-20190321191620078.png" alt="标签路由"></p>
 <p>标签路由提供了这样一个能力,当调用链路为 A -&gt; B -&gt; C -&gt; D 时,用户给请求打标,最典型的打标方式可以借助 attachment(他可以在分布式调用中传递下去),调用会优先请求那些匹配的服务端,如 A -&gt; B,C -&gt; D,由于集群中未部署 C 节点,则会降级到普通节点。</p>
-<p>打标方式会收到集成系统差异的影响,从而导致很大的差异,所以 Dubbo 只提供了 <code>RpcContext.getContext().setAttachment()</code> 这样的基础接口,用户可以使用 SPI 扩展,或者 server filter 的扩展,对测试流量进行打标,引导进入隔离环境/灰度环境。</p>
+<p>打标方式会受到集成系统差异的影响,从而导致很大的差异,所以 Dubbo 只提供了 <code>RpcContext.getContext().setAttachment()</code> 这样的基础接口,用户可以使用 SPI 扩展,或者 server filter 的扩展,对测试流量进行打标,引导进入隔离环境/灰度环境。</p>
 <p>新版的 Dubbo Admin 提供了标签路由的配置项:</p>
 <p><img src="http://kirito.iocoder.cn/image-20190321192540774.png" alt="标签路由配置"></p>
 <p>Dubbo 用户可以在自己系统的基础上对标签路由进行二次扩展,或者借鉴标签路由的设计,实现自己系统的流量隔离,灰度发布。</p>
diff --git a/zh-cn/blog/dubbo-27-features.json b/zh-cn/blog/dubbo-27-features.json
index 44b2a7a..2d5e606 100644
--- a/zh-cn/blog/dubbo-27-features.json
+++ b/zh-cn/blog/dubbo-27-features.json
@@ -1,6 +1,6 @@
 {
   "filename": "dubbo-27-features.md",
-  "__html": "<h1></h1>\n<h2>1 背景介绍</h2>\n<p>自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 github star 数,contributor 数都有了非常大的提升。2018 年 2 月 9 日阿里决定将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为了 Apache 的孵化项目,也就是大家现在看到的 <strong>Incubator Dubbo</strong>。预计在 2019 年 4 月,Dubbo 可以达成毕业,成为 Apache 的顶级项目。</p>\n<h2>2 分支介绍</h2>\n<p><img src=\"http://kirito.iocoder.cn/image-20190321153455566.png\" alt=\"分支\"></p>\n<p>Dubbo 目前有如图所示的 5 个分支,其中 2.7.1-release 只是一个临时分支,忽略不计,对其他 4 个分支进行介绍。</p>\n<ul>\n<li>2.5.x 近期已经通过投票,Dubbo 社区即将停止对其的维 [...]
+  "__html": "<h1></h1>\n<h2>1 背景介绍</h2>\n<p>自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 github star 数,contributor 数都有了非常大的提升。2018 年 2 月 9 日阿里决定将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为了 Apache 的孵化项目,也就是大家现在看到的 <strong>Incubator Dubbo</strong>。预计在 2019 年 4 月,Dubbo 可以达成毕业,成为 Apache 的顶级项目。</p>\n<h2>2 分支介绍</h2>\n<p><img src=\"http://kirito.iocoder.cn/image-20190321153455566.png\" alt=\"分支\"></p>\n<p>Dubbo 目前有如图所示的 5 个分支,其中 2.7.1-release 只是一个临时分支,忽略不计,对其他 4 个分支进行介绍。</p>\n<ul>\n<li>2.5.x 近期已经通过投票,Dubbo 社区即将停止对其的维 [...]
   "link": "/zh-cn/blog/dubbo-27-features.html",
   "meta": {
     "title": "Dubbo2.7 三大新特性详解",
diff --git a/zh-cn/blog/dubbo-rest.html b/zh-cn/blog/dubbo-rest.html
index 27a438b..0153e45 100644
--- a/zh-cn/blog/dubbo-rest.html
+++ b/zh-cn/blog/dubbo-rest.html
@@ -571,7 +571,7 @@ INFO: Starting ProtocolHandler [<span class="hljs-string">"http-nio-8080"</span>
     <span class="hljs-tag">&lt;/<span class="hljs-name">dependencies</span>&gt;</span>
 </code></pre>
 <p>在工程的 webapp/WEB-INF 根目录下增加一个 HTML 文件,内容如下。HTML 文件名可以为任何名字,没有硬性要求,如果该文件被命名为 &quot;swagger-ui.html&quot;,那么你可以通过访问 “<a href="http://localhost:8080/swagger-ui.html">http://localhost:8080/swagger-ui.html</a>&quot; 来访问 swagger UI。本例为了演示方便起见,将其命名为 &quot;index.html&quot;,这样当访问 &quot;<a href="http://localhost:8080">http://localhost:8080</a>&quot; 时,就可以很方便的得到 swagger UI 的页面。</p>
-<pre><code class="language-html"><span class="hljs-meta">&lt;!DOCTYPE html&gt;</span>
+<pre><code class="language-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
diff --git a/zh-cn/blog/dubbo-rest.json b/zh-cn/blog/dubbo-rest.json
index 5fd4b9c..a99d593 100644
--- a/zh-cn/blog/dubbo-rest.json
+++ b/zh-cn/blog/dubbo-rest.json
@@ -1,6 +1,6 @@
 {
   "filename": "dubbo-rest.md",
-  "__html": "<h1>在 Dubbo 中使用 REST</h1>\n<h2>什么是 REST</h2>\n<p>REST 是 Roy Thomas Fielding <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 在 2000 年他的博士论文 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>  “架构风格以及基于网络的软件架构设计” 中提出来的一个概念。REST 是 <strong>RE</strong>presentational <strong>S</strong>tate <strong>T</strong>ransfer 的缩写,翻译过来就是 “表现层状态转化”。REST 就是 Roy 在这篇论文中提出的面向互联网的软件所应当具备的架构风格。</p>\n<p>按照 REpresentational State Transfer 的字面意思,可以把应用看成是一个 [...]
+  "__html": "<h1>在 Dubbo 中使用 REST</h1>\n<h2>什么是 REST</h2>\n<p>REST 是 Roy Thomas Fielding <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> 在 2000 年他的博士论文 <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>  “架构风格以及基于网络的软件架构设计” 中提出来的一个概念。REST 是 <strong>RE</strong>presentational <strong>S</strong>tate <strong>T</strong>ransfer 的缩写,翻译过来就是 “表现层状态转化”。REST 就是 Roy 在这篇论文中提出的面向互联网的软件所应当具备的架构风格。</p>\n<p>按照 REpresentational State Transfer 的字面意思,可以把应用看成是一个 [...]
   "link": "/zh-cn/blog/dubbo-rest.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/zh-cn/blog/rpc-introduction.html b/zh-cn/blog/rpc-introduction.html
index b8880dc..643ee34 100644
--- a/zh-cn/blog/rpc-introduction.html
+++ b/zh-cn/blog/rpc-introduction.html
@@ -106,7 +106,7 @@
 <p>服务端通过sockets将消息发送到客户端</p>
 </li>
 <li>
-<p>Client stub接收到结果消息,并进行解码(将结果消息发序列化)</p>
+<p>Client stub接收到结果消息,并进行解码(将结果消息反序列化)</p>
 </li>
 <li>
 <p>客户端得到最终结果。</p>
diff --git a/zh-cn/blog/rpc-introduction.json b/zh-cn/blog/rpc-introduction.json
index 547960b..6c1435a 100644
--- a/zh-cn/blog/rpc-introduction.json
+++ b/zh-cn/blog/rpc-introduction.json
@@ -1,6 +1,6 @@
 {
   "filename": "rpc-introduction.md",
-  "__html": "<p>近几年随着微服务化项目的崛起,逐渐成为许多公司中大型分布式系统架构的主流方式,而今天所说的 RPC 在这其中扮演着至关重要的角色。随着这段日子公司项目微服务化的演进,发现在日常开发中都在隐式或显式的使用 RPC,一些刚刚接触 RPC 的小伙伴会感觉无所适从,而一些入行多年的老手虽然使用 RPC 经验丰富,但有些对其原理也一知半解,缺乏对原理的深入理解,往往也会造成开发中的一些误用。</p>\n<h2>什么是RPC?</h2>\n<p>RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数�
 �。</p>\n<p>RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加 [...]
+  "__html": "<p>近几年随着微服务化项目的崛起,逐渐成为许多公司中大型分布式系统架构的主流方式,而今天所说的 RPC 在这其中扮演着至关重要的角色。随着这段日子公司项目微服务化的演进,发现在日常开发中都在隐式或显式的使用 RPC,一些刚刚接触 RPC 的小伙伴会感觉无所适从,而一些入行多年的老手虽然使用 RPC 经验丰富,但有些对其原理也一知半解,缺乏对原理的深入理解,往往也会造成开发中的一些误用。</p>\n<h2>什么是RPC?</h2>\n<p>RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数�
 �。</p>\n<p>RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加 [...]
   "link": "/zh-cn/blog/rpc-introduction.html",
   "meta": {
     "title": "浅谈 RPC",