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

wangxin 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 ed88999  generate htmls
     new 1821cf3  Merge remote-tracking branch 'dubbo_site_remote/asf-site' 
into asf-site
ed88999 is described below

commit ed88999b025479d64ab37f22955354f3db86b47e
Author: Xin Wang <xin.victorw...@gmail.com>
AuthorDate: Wed Jan 30 21:31:17 2019 +0800

    generate htmls
---
 build/blog.js                |  6 +++---
 build/blogDetail.js          |  6 +++---
 build/community.js           |  6 +++---
 build/documentation.js       |  6 +++---
 build/home.js                |  6 +++---
 en-us/blog/dubbo-fescar.html | 15 +++++++++------
 en-us/blog/dubbo-fescar.json |  2 +-
 zh-cn/blog/dubbo-fescar.html | 15 +++++++++------
 zh-cn/blog/dubbo-fescar.json |  2 +-
 9 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/build/blog.js b/build/blog.js
index 1b095c4..b8388d7 100644
--- a/build/blog.js
+++ b/build/blog.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=80) [...]
-  Copyright (c) 2016 Jed Watson.
+!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=78) [...]
+  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))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,u= [...]
\ 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))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/blogDetail.js b/build/blogDetail.js
index f364b11..1d97e31 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=81) [...]
-  Copyright (c) 2016 Jed Watson.
+!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=79) [...]
+  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))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,u= [...]
\ 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))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/community.js b/build/community.js
index 775a6c2..84c0d15 100644
--- a/build/community.js
+++ b/build/community.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=82) [...]
-  Copyright (c) 2016 Jed Watson.
+!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=80) [...]
+  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))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
+!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/documentation.js b/build/documentation.js
index e0e83fe..ca16632 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=83) [...]
-  Copyright (c) 2016 Jed Watson.
+!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=81) [...]
+  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))e.push(n.apply(null,r));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?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,s= [...]
\ 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))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/home.js b/build/home.js
index ead259e..ee5c8c3 100644
--- a/build/home.js
+++ b/build/home.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=84) [...]
-  Copyright (c) 2016 Jed Watson.
+!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=82) [...]
+  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))e.push(n.apply(null,r));else if("object"===o)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?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,u= [...]
\ 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 i=n.apply(null,r);i&&e.push(i)}else 
if("object"===o)for(var u in r)a.call(r,u)&&r[u]&&e.push(u)}}return e.join(" 
")}var a={}.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/en-us/blog/dubbo-fescar.html b/en-us/blog/dubbo-fescar.html
index 3418843..504db5b 100644
--- a/en-us/blog/dubbo-fescar.html
+++ b/en-us/blog/dubbo-fescar.html
@@ -184,13 +184,16 @@ sh fescar-server.sh 8091 /home/admin/fescar/data/
 </code></pre>
 <h3>Step 5: Run example</h3>
 <ul>
-<li>Start AccountService</li>
-<li>Start StorageService</li>
-<li>Start OrderService</li>
-<li>Run BusinessService for test</li>
+<li>Start AccountService (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboAccountServiceStarter.java";>DubboAccountServiceStarter</a>).</li>
+<li>Start StorageService (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboStorageServiceStarter.java";>DubboStorageServiceStarter</a>).</li>
+<li>Start OrderService (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboOrderServiceStarter.java";>DubboOrderServiceStarter</a>).</li>
+<li>Run BusinessService for test (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboBusinessTester.java";>DubboBusinessTester</a>).</li>
+</ul>
+<h3>Related projects</h3>
+<ul>
+<li>fescar:          <a 
href="https://github.com/alibaba/fescar/";>https://github.com/alibaba/fescar/</a></li>
+<li>fescar-samples : <a 
href="https://github.com/fescar-group/fescar-samples";>https://github.com/fescar-group/fescar-samples</a></li>
 </ul>
-<p><a 
href="https://github.com/alibaba/fescar/tree/develop/examples/src/main/java/com/alibaba/fescar/tm/dubbo";>Related
 code</a><br>
-<a href="https://github.com/alibaba/fescar/";>learn more about Fescar</a></p>
 </section><footer class="footer-container"><div class="footer-body"><img 
src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div 
class="cols-container"><div class="col col-12"><h3>Disclaimer</h3><p>Apache 
Dubbo is an effort undergoing incubation at The Apache Software Foundation 
(ASF), sponsored by the Incubator. Incubation is required of all newly accepted 
projects until a further review indicates that the infrastructure, 
communications, and decision making proce [...]
        <script 
src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js";></script>
        <script 
src="https://f.alicdn.com/react/15.4.1/react-dom.min.js";></script>
diff --git a/en-us/blog/dubbo-fescar.json b/en-us/blog/dubbo-fescar.json
index e2d3c57..03c119c 100644
--- a/en-us/blog/dubbo-fescar.json
+++ b/en-us/blog/dubbo-fescar.json
@@ -1,6 +1,6 @@
 {
   "filename": "dubbo-fescar.md",
-  "__html": "<h1>How to use Fescar to ensure consistency between Dubbo 
Microservices</h1>\n<h2>Use case</h2>\n<p>A business logic for user purchasing 
commodities. The whole business logic is powered by 3 
microservices:</p>\n<ul>\n<li>Storage service: deduct storage count on given 
commodity.</li>\n<li>Order service: create order according to purchase 
request.</li>\n<li>Account service: debit the balance of user's 
account.</li>\n</ul>\n<h3>Architecture</h3>\n<p><img src=\"../../img/blog/fe 
[...]
+  "__html": "<h1>How to use Fescar to ensure consistency between Dubbo 
Microservices</h1>\n<h2>Use case</h2>\n<p>A business logic for user purchasing 
commodities. The whole business logic is powered by 3 
microservices:</p>\n<ul>\n<li>Storage service: deduct storage count on given 
commodity.</li>\n<li>Order service: create order according to purchase 
request.</li>\n<li>Account service: debit the balance of user's 
account.</li>\n</ul>\n<h3>Architecture</h3>\n<p><img src=\"../../img/blog/fe 
[...]
   "link": "/en-us/blog/dubbo-fescar.html",
   "meta": {
     "title": "How to use Fescar to ensure consistency between Dubbo 
Microservices",
diff --git a/zh-cn/blog/dubbo-fescar.html b/zh-cn/blog/dubbo-fescar.html
index 1b78ca2..d9d0678 100644
--- a/zh-cn/blog/dubbo-fescar.html
+++ b/zh-cn/blog/dubbo-fescar.html
@@ -184,13 +184,16 @@ sh fescar-server.sh 8091 /home/admin/fescar/data/
 </code></pre>
 <h3>Step 5: 运行例子</h3>
 <ul>
-<li>启动账户服务</li>
-<li>启动库存服务</li>
-<li>启动订单服务</li>
-<li>运行BusinessService入口</li>
+<li>启动账户服务 (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboAccountServiceStarter.java";>DubboAccountServiceStarter</a>)。</li>
+<li>启动库存服务 (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboStorageServiceStarter.java";>DubboStorageServiceStarter</a>)。</li>
+<li>启动订单服务 (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboOrderServiceStarter.java";>DubboOrderServiceStarter</a>)。</li>
+<li>运行BusinessService入口 (<a 
href="https://github.com/fescar-group/fescar-samples/blob/master/dubbo/src/main/java/com/alibaba/fescar/samples/dubbo/starter/DubboBusinessTester.java";>DubboBusinessTester</a>)。</li>
+</ul>
+<h3>相关项目</h3>
+<ul>
+<li>fescar:          <a 
href="https://github.com/alibaba/fescar/";>https://github.com/alibaba/fescar/</a></li>
+<li>fescar-samples : <a 
href="https://github.com/fescar-group/fescar-samples";>https://github.com/fescar-group/fescar-samples</a></li>
 </ul>
-<p><a 
href="https://github.com/alibaba/fescar/tree/develop/examples/src/main/java/com/alibaba/fescar/tm/dubbo";>相关代码</a><br>
-<a href="https://github.com/alibaba/fescar/";>学习更多关于Fescar的内容</a></p>
 </section><footer class="footer-container"><div class="footer-body"><img 
src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div 
class="cols-container"><div class="col col-12"><h3>Disclaimer</h3><p>Apache 
Dubbo is an effort undergoing incubation at The Apache Software Foundation 
(ASF), sponsored by the Incubator. Incubation is required of all newly accepted 
projects until a further review indicates that the infrastructure, 
communications, and decision making proce [...]
        <script 
src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js";></script>
        <script 
src="https://f.alicdn.com/react/15.4.1/react-dom.min.js";></script>
diff --git a/zh-cn/blog/dubbo-fescar.json b/zh-cn/blog/dubbo-fescar.json
index 574d8d9..02370c2 100644
--- a/zh-cn/blog/dubbo-fescar.json
+++ b/zh-cn/blog/dubbo-fescar.json
@@ -1,6 +1,6 @@
 {
   "filename": "dubbo-fescar.md",
-  "__html": 
"<h1>如何使用Fescar保证Dubbo微服务间的一致性</h1>\n<h2>案例</h2>\n<p>用户采购商品业务,整个业务包含3个微服务:</p>\n<ul>\n<li>库存服务:
 扣减给定商品的库存数量。</li>\n<li>订单服务: 根据采购请求生成订单。</li>\n<li>账户服务: 
用户账户金额扣减。</li>\n</ul>\n<h3>业务结构图</h3>\n<p><img 
src=\"../../img/blog/fescar/fescar-1.png\" 
alt=\"Architecture\"></p>\n<h3>StorageService</h3>\n<pre><code 
class=\"language-java\"><span class=\"hljs-keyword\">public</span> <span 
class=\"hljs-class\"><span class=\"hljs-keyword\">interface</span> <span 
class=\"hljs-title\">Storage [...]
+  "__html": 
"<h1>如何使用Fescar保证Dubbo微服务间的一致性</h1>\n<h2>案例</h2>\n<p>用户采购商品业务,整个业务包含3个微服务:</p>\n<ul>\n<li>库存服务:
 扣减给定商品的库存数量。</li>\n<li>订单服务: 根据采购请求生成订单。</li>\n<li>账户服务: 
用户账户金额扣减。</li>\n</ul>\n<h3>业务结构图</h3>\n<p><img 
src=\"../../img/blog/fescar/fescar-1.png\" 
alt=\"Architecture\"></p>\n<h3>StorageService</h3>\n<pre><code 
class=\"language-java\"><span class=\"hljs-keyword\">public</span> <span 
class=\"hljs-class\"><span class=\"hljs-keyword\">interface</span> <span 
class=\"hljs-title\">Storage [...]
   "link": "/zh-cn/blog/dubbo-fescar.html",
   "meta": {
     "title": "如何使用Fescar保证Dubbo微服务间的一致性",

Reply via email to