You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by je...@apache.org on 2018/08/10 08:23:16 UTC
[incubator-dubbo-website] branch asf-site updated: build
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 9d6de5e build
9d6de5e is described below
commit 9d6de5e08f17f3200c70b2f694c1eb5b208b2e53
Author: zhuyong <yo...@alibaba-inc.com>
AuthorDate: Fri Aug 10 16:17:52 2018 +0800
build
---
build/0d69326d69fd47b9d99a.js | 6 ++++++
build/197de76506a1ddd84a4b.js | 6 ------
build/364a8f548578cb3c9f5b.js | 6 ++++++
build/74188657de05e5b92cf4.js | 6 ------
build/7533f0a0e44a4367de8b.js | 6 ++++++
build/87c67c0d7caf73d7e493.js | 6 ------
build/8b66bddd9274404f5cad.js | 6 ------
build/c3e013b93dbf5fac1c23.js | 6 ++++++
build/c5ce7257df274bc595ec.js | 6 ------
build/e52128c6c5682a86685a.js | 6 ++++++
build/page.js | 2 +-
md_json/blog.json | 14 +++++++++++++-
12 files changed, 44 insertions(+), 32 deletions(-)
diff --git a/build/0d69326d69fd47b9d99a.js b/build/0d69326d69fd47b9d99a.js
new file mode 100644
index 0000000..30ab02d
--- /dev/null
+++ b/build/0d69326d69fd47b9d99a.js
@@ -0,0 +1,6 @@
+webpackJsonp([1],[,,,,,,,,function(s,n,e){"use strict";function a(s){return s&&s.__esModule?s:{default:s}}function t(s,n){if(!(s instanceof n))throw new TypeError("Cannot call a class as a function")}function o(s,n){if(!s)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?s:n}function l(s,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+ [...]
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+!function(){"use strict";function e(){for(var s=[],n=0;n<arguments.length;n++){var a=arguments[n];if(a){var t=typeof a;if("string"===t||"number"===t)s.push(a);else if(Array.isArray(a)&&a.length){var l=e.apply(null,a);l&&s.push(l)}else if("object"===t)for(var p in a)o.call(a,p)&&a[p]&&s.push(p)}}return s.join(" ")}var o={}.hasOwnProperty;void 0!==s&&s.exports?(e.default=e,s.exports=e):(a=[],void 0!==(t=function(){return e}.apply(n,a))&&(s.exports=t))}()},function(s,n,e){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/197de76506a1ddd84a4b.js b/build/197de76506a1ddd84a4b.js
deleted file mode 100644
index ef1c157..0000000
--- a/build/197de76506a1ddd84a4b.js
+++ /dev/null
@@ -1,6 +0,0 @@
-webpackJsonp([3],[,,,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not " [...]
- Copyright (c) 2016 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))e.push(n.apply(null,r));else if("object"===o)for(var a in r)i.call(r,a)&&r[a]&&e.push(a)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?e.exports=n:(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t,r){var o=r.configurable,l= [...]
\ No newline at end of file
diff --git a/build/364a8f548578cb3c9f5b.js b/build/364a8f548578cb3c9f5b.js
new file mode 100644
index 0000000..e518342
--- /dev/null
+++ b/build/364a8f548578cb3c9f5b.js
@@ -0,0 +1,6 @@
+webpackJsonp([4],[,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+t [...]
+ 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 l in r)i.call(r,l)&&r[l]&&e.push(l)}}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))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/74188657de05e5b92cf4.js b/build/74188657de05e5b92cf4.js
deleted file mode 100644
index d452d6a..0000000
--- a/build/74188657de05e5b92cf4.js
+++ /dev/null
@@ -1,6 +0,0 @@
-webpackJsonp([1],[,,,,,,,,function(s,n,e){"use strict";function a(s){return s&&s.__esModule?s:{default:s}}function t(s,n){if(!(s instanceof n))throw new TypeError("Cannot call a class as a function")}function o(s,n){if(!s)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?s:n}function l(s,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+ [...]
- Copyright (c) 2016 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
-*/
-!function(){"use strict";function e(){for(var s=[],n=0;n<arguments.length;n++){var a=arguments[n];if(a){var t=typeof a;if("string"===t||"number"===t)s.push(a);else if(Array.isArray(a))s.push(e.apply(null,a));else if("object"===t)for(var l in a)o.call(a,l)&&a[l]&&s.push(l)}}return s.join(" ")}var o={}.hasOwnProperty;void 0!==s&&s.exports?s.exports=e:(a=[],void 0!==(t=function(){return e}.apply(n,a))&&(s.exports=t))}()},function(s,n,e){"use strict";function a(s,n,a){var t=a.configurable,p= [...]
\ No newline at end of file
diff --git a/build/7533f0a0e44a4367de8b.js b/build/7533f0a0e44a4367de8b.js
new file mode 100644
index 0000000..75d5966
--- /dev/null
+++ b/build/7533f0a0e44a4367de8b.js
@@ -0,0 +1,6 @@
+webpackJsonp([3],[,,,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not " [...]
+ 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 l in r)i.call(r,l)&&r[l]&&e.push(l)}}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))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/87c67c0d7caf73d7e493.js b/build/87c67c0d7caf73d7e493.js
deleted file mode 100644
index 66a18ef..0000000
--- a/build/87c67c0d7caf73d7e493.js
+++ /dev/null
@@ -1,6 +0,0 @@
-webpackJsonp([2],[,,,,,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not [...]
- Copyright (c) 2016 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))e.push(n.apply(null,r));else if("object"===o)for(var a in r)i.call(r,a)&&r[a]&&e.push(a)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?e.exports=n:(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t,r){var o=r.configurable,c= [...]
\ No newline at end of file
diff --git a/build/8b66bddd9274404f5cad.js b/build/8b66bddd9274404f5cad.js
deleted file mode 100644
index d347ef7..0000000
--- a/build/8b66bddd9274404f5cad.js
+++ /dev/null
@@ -1,6 +0,0 @@
-webpackJsonp([4],[,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+t [...]
- Copyright (c) 2016 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))e.push(n.apply(null,r));else if("object"===o)for(var a in r)i.call(r,a)&&r[a]&&e.push(a)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?e.exports=n:(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(e,t,r){var o=r.configurable,l= [...]
\ No newline at end of file
diff --git a/build/c3e013b93dbf5fac1c23.js b/build/c3e013b93dbf5fac1c23.js
new file mode 100644
index 0000000..7e41b89
--- /dev/null
+++ b/build/c3e013b93dbf5fac1c23.js
@@ -0,0 +1,6 @@
+webpackJsonp([0],[,,,,,,,,,,function(s,n,a){"use strict";function e(s){return s&&s.__esModule?s:{default:s}}function t(s,n){if(!(s instanceof n))throw new TypeError("Cannot call a class as a function")}function l(s,n){if(!s)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?s:n}function o(s,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not [...]
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+!function(){"use strict";function a(){for(var s=[],n=0;n<arguments.length;n++){var e=arguments[n];if(e){var t=typeof e;if("string"===t||"number"===t)s.push(e);else if(Array.isArray(e)&&e.length){var o=a.apply(null,e);o&&s.push(o)}else if("object"===t)for(var r in e)l.call(e,r)&&e[r]&&s.push(r)}}return s.join(" ")}var l={}.hasOwnProperty;void 0!==s&&s.exports?(a.default=a,s.exports=a):(e=[],void 0!==(t=function(){return a}.apply(n,e))&&(s.exports=t))}()},function(s,n,a){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/c5ce7257df274bc595ec.js b/build/c5ce7257df274bc595ec.js
deleted file mode 100644
index cff5452..0000000
--- a/build/c5ce7257df274bc595ec.js
+++ /dev/null
@@ -1,6 +0,0 @@
-webpackJsonp([0],[,,,,,,,,,,function(s,n,a){"use strict";function e(s){return s&&s.__esModule?s:{default:s}}function t(s,n){if(!(s instanceof n))throw new TypeError("Cannot call a class as a function")}function l(s,n){if(!s)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?s:n}function o(s,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not [...]
- Copyright (c) 2016 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
-*/
-!function(){"use strict";function a(){for(var s=[],n=0;n<arguments.length;n++){var e=arguments[n];if(e){var t=typeof e;if("string"===t||"number"===t)s.push(e);else if(Array.isArray(e))s.push(a.apply(null,e));else if("object"===t)for(var o in e)l.call(e,o)&&e[o]&&s.push(o)}}return s.join(" ")}var l={}.hasOwnProperty;void 0!==s&&s.exports?s.exports=a:(e=[],void 0!==(t=function(){return a}.apply(n,e))&&(s.exports=t))}()},function(s,n,a){"use strict";function e(s,n,e){var t=e.configurable,r= [...]
\ No newline at end of file
diff --git a/build/e52128c6c5682a86685a.js b/build/e52128c6c5682a86685a.js
new file mode 100644
index 0000000..4228d84
--- /dev/null
+++ b/build/e52128c6c5682a86685a.js
@@ -0,0 +1,6 @@
+webpackJsonp([2],[,,,,,,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not [...]
+ 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 c in r)i.call(r,c)&&r[c]&&e.push(c)}}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))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/page.js b/build/page.js
index 5ca2cde..ddef2f1 100644
--- a/build/page.js
+++ b/build/page.js
@@ -1 +1 @@
-!function(n){function o(t){if(e[t])return e[t].exports;var r=e[t]={i:t,l:!1,exports:{}};return n[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t=window.webpackJsonp;window.webpackJsonp=function(o,e,a){for(var i,d,l=0,c=[];l<o.length;l++)d=o[l],r[d]&&c.push(r[d][0]),r[d]=0;for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i]);for(t&&t(o,e,a);c.length;)c.shift()()};var e={},r={5:0};o.e=function(n){function t(){d.onerror=d.onload=null,clearTimeout(l);var o=r[n];0!==o&&(o [...]
\ No newline at end of file
+!function(n){function o(t){if(e[t])return e[t].exports;var r=e[t]={i:t,l:!1,exports:{}};return n[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t=window.webpackJsonp;window.webpackJsonp=function(o,e,a){for(var i,d,l=0,c=[];l<o.length;l++)d=o[l],r[d]&&c.push(r[d][0]),r[d]=0;for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i]);for(t&&t(o,e,a);c.length;)c.shift()()};var e={},r={5:0};o.e=function(n){function t(){d.onerror=d.onload=null,clearTimeout(l);var o=r[n];0!==o&&(o [...]
\ No newline at end of file
diff --git a/md_json/blog.json b/md_json/blog.json
index 4daa03e..330222f 100644
--- a/md_json/blog.json
+++ b/md_json/blog.json
@@ -2,7 +2,7 @@
"zh-cn": [
{
"filename": "Prepare-an-Apache-release.md",
- "__html": "<h2>理解Apache发布的内容和流程</h2>\n<p>总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。</p>\n<p>请参考以下链接,找到更多关于ASF的发布指南:</p>\n<ul>\n<li><a href=\"http://www.apache.org/dev/release-publishing\">Apache Release Guide</a></li>\n<li><a href=\"http://www.apache.org/dev/release.html\">Apache Release Policy</a></li>\n<li><a href=\"http://www.apache.org/dev/publishing-maven-artifacts.html\">Maven Release Info</a></li>\n</ul>\n<h2>本地构建环 [...]
+ "__html": "<h2>理解Apache发布的内容和流程</h2>\n<p>总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。</p>\n<p>请参考以下链接,找到更多关于ASF的发布指南:</p>\n<ul>\n<li><a href=\"http://www.apache.org/dev/release-publishing\">Apache Release Guide</a></li>\n<li><a href=\"http://www.apache.org/dev/release.html\">Apache Release Policy</a></li>\n<li><a href=\"http://www.apache.org/dev/publishing-maven-artifacts.html\">Maven Release Info</a></li>\n</ul>\n<h2>本地构建环 [...]
},
{
"filename": "dubbo-101.md",
@@ -17,14 +17,26 @@
"__html": "<h2>Dubbo基本用法-Dubbo Provider配置</h2>\n<h1>Dubbo基本用法</h1>\n<p>本章节主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。\n按照功能角度进行划分,可以分为Dubbo Provider和Dubbo Consumer。接下来章节中,分别对dubbo provider和Dubbo consumer进行讲解。</p>\n<h2>Dubbo Provider配置</h2>\n<h3>Provider 配置详解</h3>\n<p>配置Dubbo Provider有4种方式:XML配置,properties方式配置,API调用方式配置,注解方式配置。</p>\n<h4>XML配置</h4>\n<h6>最简单的配置的样例:</h6>\n<pre><code><?xml version="1.0" encoding="UTF-8"?>\n<beans xmlns [...]
},
{
+ "filename": "dubbo-generic-invoke.md",
+ "__html": "<h1>Dubbo的泛化调用</h1>\n<p>以下几种场景可以考虑使用泛化调用:</p>\n<ul>\n<li>服务测试平台</li>\n<li>API 服务网关</li>\n</ul>\n<p>泛化调用主要用于消费端没有 API 接口的情况;不需要引入接口 jar 包,而是直接通过 GenericService 接口来发起服务调用,参数及返回值中的所有 POJO 均用 <code>Map</code> 表示。泛化调用对于服务端无需关注,按正常服务进行暴露即可。</p>\n<p>下面来看看消费端如何使用泛化调用进行服务调用。</p>\n<h4>通过 Spring XML 配置进行泛化调用</h4>\n<p>在 Spring 配置申明 <code>generic="true"</code>,如:</p>\n<pre><code class=\"language-xml\"><span class=\"hljs-tag\"><<span class=\"hljs-name\">dubbo:reference</s [...]
+ },
+ {
"filename": "dubbo-invoke.md",
"__html": "<h1>Dubbo 关于同步/异步调用的几种方式</h1>\n<p>我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制;基于这种机制,Dubbo 实现了以下几种调用方式:</p>\n<ul>\n<li>同步调用</li>\n<li>异步调用</li>\n<li>参数回调</li>\n<li>事件通知</li>\n</ul>\n<h3>同步调用</h3>\n<p>同步调用是一种阻塞式的调用方式,即 Consumer 端代码一直阻塞等待,直到 Provider 端返回为止;</p>\n<p>通常,一个典型的同步调用过程如下:</p>\n<ol>\n<li>Consumer 业务线程调用远程接口,向 Provider 发送请求,同时当前线程处于<code>阻塞</code>状态;</li>\n<li>Provider 接到 Consumer 的请求后,开始处理请求,将结果返回给 Consumer;</li>\n<li>Consumer 收到结果后,当前线程继续往后执行。</li>\n</ol>\n< [...]
},
{
+ "filename": "dubbo-loadbalance.md",
+ "__html": ""
+ },
+ {
"filename": "dubbo-meetup-shanghai-jun-23rd-2018.md",
"__html": "<h2>第二届Dubbo开发者沙龙在上海成功举办</h2>\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-an [...]
},
{
+ "filename": "dubbo-new-async.md",
+ "__html": ""
+ },
+ {
"filename": "dubbo-zk.md",
"__html": "<h1>在 Dubbo 应用中使用 Zookeeper</h1>\n<h2>Zookeeper 介绍</h2>\n<h3>基本概念</h3>\n<p>在现代的分布式应用中,往往会出现节点和节点之间的协调问题,其中就包括了:选主、集群管理、分布式锁、分布式配置管理、统一命名服务、状态同步等诉求。<a href=\"https://zookeeper.apache.org\">Apache Zookeeper</a>,正如它的名字所暗示的那样,<em>动物园管理员</em>,就是为了解决这些诉求的一个分布式协调服务框架。</p>\n<p>为了保证高可用,ZooKeeper 本身也可以部署成集群模式,称之为 <em>ZooKeeper ensemble</em>。ZooKeeper 集群中始终确保其中的一台为 leader 的角色,并通过 <em>ZAB (Zookeeper Atomic Broadcast Protocol) <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\ [...]
},