http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/08e1b43f/content/docs/go-to-cloud/index.html
----------------------------------------------------------------------
diff --git a/content/docs/go-to-cloud/index.html 
b/content/docs/go-to-cloud/index.html
new file mode 100644
index 0000000..0c7912b
--- /dev/null
+++ b/content/docs/go-to-cloud/index.html
@@ -0,0 +1,936 @@
+<!doctype html>
+<!--
+  Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
+  Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
+  Free for personal and commercial use under the MIT license
+  https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
+-->
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>单体应用利用ServiceComb实现微服务化和云化之路 - Apache 
incubator ServiceComb</title>
+
+
+
+
+<meta name="description" content="该文档演示:从已有基于spring 
boot的单体应用利用ServiceComb实现微服务化和云化之路">
+
+
+
+
+<meta name="author" content="Tank Tian">
+
+<meta property="og:locale" content="en">
+<meta property="og:site_name" content="Apache incubator ServiceComb">
+<meta property="og:title" 
content="单体应用利用ServiceComb实现微服务化和云化之路">
+
+
+  <link rel="canonical" 
href="http://github.com/pages/ServiceComb/servicesomb.github.io/docs/go-to-cloud/";>
+  <meta property="og:url" 
content="http://github.com/pages/ServiceComb/servicesomb.github.io/docs/go-to-cloud/";>
+
+
+
+  <meta property="og:description" 
content="该文档演示:从已有基于spring 
boot的单体应用利用ServiceComb实现微服务化和云化之路">
+
+
+
+  <meta name="twitter:site" content="@ServiceComb">
+  <meta name="twitter:title" 
content="单体应用利用ServiceComb实现微服务化和云化之路">
+  <meta name="twitter:description" 
content="该文档演示:从已有基于spring 
boot的单体应用利用ServiceComb实现微服务化和云化之路">
+  <meta name="twitter:url" content="">
+
+  
+    <meta name="twitter:card" content="summary">
+    
+  
+
+  
+    <meta name="twitter:creator" content="@">
+  
+
+
+
+  
+
+  
+
+
+
+
+
+  <meta property="og:type" content="article">
+  <meta property="article:published_time" content="2017-06-24T00:00:00+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org";,
+      "@type" : "Person",
+      "name" : "Apache incubator ServiceComb",
+      "url" : "http://github.com/pages/ServiceComb/servicesomb.github.io";,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+  <meta name="google-site-verification" 
content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" 
title="Apache incubator ServiceComb Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = 
document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+<script 
src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js";></script>
+<script src="/assets/js/prism.js"></script>
+
+<script type="text/javascript" async
+  
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML";>
+</script>
+
+<link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css";
 
integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M"
 crossorigin="anonymous">
+
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"; 
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
 crossorigin="anonymous"></script>
+<script 
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"; 
integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4"
 crossorigin="anonymous"></script>
+<script 
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"; 
integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1"
 crossorigin="anonymous"></script>
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+<link rel="stylesheet" href="/assets/css/prism.css">
+
+<!--[if lte IE 9]>
+  <style>
+    /* old IE unsupported flexbox fixes */
+    .greedy-nav .site-title {
+      padding-right: 3em;
+    }
+    .greedy-nav button {
+      position: absolute;
+      top: 0;
+      right: 0;
+      height: 100%;
+    }
+  </style>
+<![endif]-->
+
+<meta http-equiv="cleartype" content="on">
+
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+<link 
href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" 
rel="stylesheet">
+<script src="/assets/js/custom.js"></script>
+<!-- end custom head snippets -->
+
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an 
<strong>outdated</strong> browser. Please <a 
href="http://browsehappy.com/";>upgrade your browser</a> to improve your 
experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+             
+          <a class="site-title active" href="/"><img 
src="//assets/images/ServiceComb-logo-1.png"></a>
+             
+        <ul class="visible-links">
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/docs/quick-start/">Quick Start</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/users/">Users</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/developers/">Developers</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/year-archive/">Blogs</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/faqs/">FAQ</a>
+              
+            </li>
+          
+        </ul>
+        <button><div class="navicon"></div></button>
+        <ul class="hidden-links hidden"></ul>
+        <div class="nav-lang">
+          
+            
+            <a href=/cn/docs/go-to-cloud/>中文</a>
+          
+        </div>
+      </nav>
+    </div>
+  </div>
+</div>
+
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+      
+      <div class="back-to-home">Home > <a href="/">ServiceComb</a></div>
+      
+  
+
+<div itemscope itemtype="http://schema.org/Person";>
+
+  
+
+  <div class="author__content">
+    <h3 class="author__name" itemprop="name">Tank Tian</h3>
+    
+      <p class="author__bio" itemprop="description">
+           
+        How lucky we are. To be free.
+           
+      </p>
+    
+  </div>
+
+  <div class="author__urls-wrapper">
+    <button class="btn btn--inverse">Follow</button>
+    <ul class="author__urls social-icons">
+      
+
+      
+        <li>
+          <a href="https://tanktian.github.io/"; itemprop="url">
+            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
+          </a>
+        </li>
+      
+
+      
+        <li>
+          <a href="mailto:chd.tianm...@gmail.com";>
+            <meta itemprop="email" content="chd.tianm...@gmail.com" />
+            <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> 
Email
+          </a>
+        </li>
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      <!--
+  <li>
+    <a href="http://link-to-whatever-social-network.com/user/"; 
itemprop="sameAs">
+      <i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
+    </a>
+  </li>
+-->
+    </ul>
+  </div>
+</div>
+
+  
+  </div>
+
+
+
+  <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
+    <meta itemprop="headline" 
content="单体应用利用ServiceComb实现微服务化和云化之路">
+    <meta itemprop="description" 
content="该文档演示:从已有基于spring 
boot的单体应用利用ServiceComb实现微服务化和云化之路">
+    <meta itemprop="datePublished" content="June 24, 2017">
+    <meta itemprop="dateModified" content="June 24, 2017">
+
+    <div class="page__inner-wrap">
+      
+        
+          <header>
+            <h1 class="page__title" 
itemprop="headline">单体应用利用ServiceComb实现微服务化和云化之路
+</h1>
+            
+              <p class="page__meta"><i class="fa fa-clock-o" 
aria-hidden="true"></i> 
+
+
+
+
+  less than 1 minute read
+
+</p>
+            
+          </header>
+        
+      
+
+      <section class="page__content" itemprop="text">
+        <h2 id="背景">背景</h2>
+
+<ol>
+  <li>
+    <p>Service 
Stage:微服务云应用平台,它是面向企业及开发者
的一站式DevOps平台服务,支持基于微服务的应用开发、治理、部署及运维监控的å
…
¨ç”Ÿå‘½å‘¨æœŸç®¡ç†ï¼Œå¹¶æä¾›å¤§è§„模容器集群管理及中间件服务等平台能力,帮助用户快速构建云分布式应用。</p>
+  </li>
+  <li>
+    <p>本指导以Acmeair demo为例,演示如何使用ServiceComb 
(华为微服务框架开源版本)实现应用的微服务化,并利用Service
 Stage云平台上实现应用的云化。</p>
+  </li>
+</ol>
+
+<h2 id="服务化和云化步骤">服务化和云化步骤</h2>
+
+<ul>
+  <li>
+    <p>环境准备:基于Service Stage完成创建集群、添加
节点等资源准备工作</p>
+  </li>
+  <li>
+    <p>微服务开发</p>
+
+    <ol>
+      <li>
+        <p>微服务的拆分设计</p>
+      </li>
+      <li>
+        <p>基于ServiceComb框架快速微服务化</p>
+      </li>
+      <li>
+        <p>制作镜像上传Service Stage软件仓库;</p>
+      </li>
+    </ol>
+  </li>
+  <li>
+    <p>应用上线:通过Service 
Stage从软件仓库获取版本实现部署上线;</p>
+  </li>
+  <li>
+    <p>应用运维:通过Service 
Stage对微服务或应用进行生命周期管理(部署-启动-上线-升级-扩容-停止-下线-åˆ
 é™¤ï¼‰ã€å‘Šè­¦ã€ç›‘控、调用链分析和治理等。</p>
+  </li>
+</ul>
+
+<h2 id="环境准备创建集群添加
节点完成节点自动纳管">环境准备:创建集群、添加
节点,完成节点自动纳管</h2>
+<h3 id="创建集群">创建集群</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0053496188.html";>创建集群详细指导</a><br
 />
+<img src="/assets/images/create-group.png" alt="create group" 
class="align-center" /></p>
+
+<h3 id="添加节点">添加节点</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0053443149.html";>为集群添åŠ
 èŠ‚点详细指导</a> <br />
+<img src="/assets/images/add-node.png" alt="add node" class="align-center" 
/></p>
+
+<h2 id="微服务开发">微服务开发</h2>
+<h3 id="应用架构设计划分微服务识别服务依赖å…
³ç³»">应用架构设计,划分微服务,识别服务依赖关系</h3>
+<p><img src="/assets/images/micro-service-design.png" alt="micro service 
design" class="align-center" /></p>
+
+<h3 id="创建微服务-单体应用微服务应用">创建微服务: 
单体应用—&gt;微服务应用</h3>
+<p><img src="/assets/images/micro-service-structure.PNG" alt="micro service 
structure" class="align-center" /></p>
+
+<h3 id="简单4步servicecomb帮你完成微服务化改造
">简单4步ServiceComb帮你完成微服务化改造</h3>
+<p>备注:改造完成的Acmeair 
Demo如何本地运行,如何本地查看运行效果? 
请参考下文“Acmeair本地运行”章节。</p>
+<h4 id="step-1-pom引入对servicecomb和service-stage的依赖">Step 1: 
POM引入对ServiceComb和Service Stage的依赖</h4>
+<p>对ServiceComb的依赖:
+<img src="/assets/images/pom-dependence.png" alt="pom dependence" 
class="align-center" /></p>
+
+<p>对Service Stage的依赖: <br />
+<img src="/assets/images/huaweicloud_dependencies.png" alt="huaweicloud 
dependencies" class="align-center" /></p>
+
+<h4 id="step-2-增加微服务描述文件和spring配置文件">Step 2 增加
微服务描述文件和spring配置文件</h4>
+<p><img src="/assets/images/config-file.png" alt="config file" 
class="align-center" /></p>
+
+<h4 id="step-3-引入servicecomb注解一行代码完成服务发布">Step 3: 
引入ServiceComb注解一行代码完成服务发布</h4>
+<p><img src="/assets/images/code-adjust.png" alt="code adjust" 
class="align-center" /></p>
+
+<h4 
id="step-4-使用servicecomb接口简单创建resttemplate完成服务消费也支持注解方式进行消费">Step
 4: 
使用ServiceComb接口简单创建RestTemplate完成服务消费(也支持注解方式进行消费)</h4>
+<p><img src="/assets/images/service-consumer.png" alt="service consumer" 
class="align-center" /></p>
+
+<h3 id="制作镜像上传到云镜像中心">制作镜像上传
到云镜像中心</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0055101643.html";>上ä¼
 é•œåƒè¯¦ç»†æŒ‡å¯¼</a><br />
+<img src="/assets/images/image-upload-1.png" alt="image upload 1" 
class="align-center" /><br />
+<img src="/assets/images/image-upload-2.png" alt="image upload 2" 
class="align-center" /></p>
+
+<h2 
id="应用上线利用应用管理实现部署上线">应用上线:利用应用管理实现部署上线</h2>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/user_deployService.html";>部署微服务详细指导</a>
 <br />
+<img src="/assets/images/service-deploy.png" alt="service deploy" 
class="align-center" /></p>
+
+<h2 
id="应用运维保障应用平稳运行">应用运维:保障应用平稳运行</h2>
+<h3 id="微服务调用链分析">微服务调用链分析</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0053555508.html";>应用调用分析详细指导</a><br
 />
+ <img src="/assets/images/service-monitor-1.png" alt="service monitor 1" 
class="align-center" /></p>
+
+<h3 id="微服务状态监控">微服务状态监控</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0053555506.html";>应用监控详细指导</a><br
 />
+<img src="/assets/images/service-monitor-2.png" alt="service monitor 2" 
class="align-center" /></p>
+
+<h3 id="按需弹性伸缩">按需弹性伸缩</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0054051691.html";>弹性伸缩详细指导</a><br
 />
+<img src="/assets/images/scaling.png" alt="scaling" class="align-center" /></p>
+
+<h3 id="微服务可视化治理">微服务可视化治理</h3>
+<p>请参考<a 
href="http://support.hwclouds.com/usermanual-servicestage/zh-cn_topic_0053560172.html";>微服务管理详细指导</a><br
 />
+<img src="/assets/images/governance.png" alt="governance" class="align-center" 
/></p>
+
+<h1 id="acmeair本地运行">Acmeair本地运行</h1>
+<p>本章节介绍在windows 64位环境下如何本地运行Acmeair</p>
+
+<h2 id="环境准备">环境准备</h2>
+
+<ul>
+  <li>
+    <p>JDK 1.8</p>
+  </li>
+  <li>
+    <p>maven 3.x</p>
+  </li>
+  <li>
+    <p>eclipse</p>
+  </li>
+  <li>
+    <p>service-center</p>
+  </li>
+</ul>
+
+<p>  下载<a 
href="https://github.com/ServiceComb/service-center/releases";>service-center-x.x.x-x-windows-amd64.zip</a>解压到任意目录</p>
+
+<ul>
+  <li>
+    <p>mongodb(可选)</p>
+  </li>
+  <li>
+    <p>下载<a 
href="https://github.com/TankTian/acmeair/archive/master.zip";>acmeair源ç 
</a></p>
+  </li>
+</ul>
+
+<h2 id="导入项目并构建">导入项目并构建</h2>
+<h3 id="将acmeair项目导入eclipse">将acmeair项目导入eclipse</h3>
+<p>Import - - Maven:Existing Maven Projects,选择代ç 
æ‰€åœ¨çš„目录,点击finish完成导入  <br />
+<img src="/assets/images/import-project.png" alt="import project" 
class="align-center" /></p>
+
+<h3 id="修改微服务描述文件">修改微服务描述文件</h3>
+
+<ol>
+  <li>
+    <p>acmeair-booking-service\src\main\resources\microservice.yaml<br />
+<img src="/assets/images/booking-microservice-yaml.png" alt="booking 
microservice yaml" class="align-center" /></p>
+  </li>
+  <li>
+    <p>acmeair-customer-service\src\main\resources\microservice.yaml <br />
+<img src="/assets/images/customer-microservice-yaml.png" alt="customer 
microservice yaml" class="align-center" /></p>
+  </li>
+  <li>
+    <p>acmeair-website\src\main\resources\microservice.yaml<br />
+<img src="/assets/images/website-microservice-yaml.png" alt="website 
microservice yaml" class="align-center" /></p>
+  </li>
+</ol>
+
+<h3 id="执行-mvn-install-结果-build-success-项目完成构建">执行 mvn 
install 结果 BUILD SUCCESS ,项目完成构建</h3>
+<p><img src="/assets/images/compile.png" alt="compile" class="align-center" 
/></p>
+
+<h2 id="启动服务">启动服务</h2>
+<h3 id="service-center">service-center</h3>
+<p>找到service-center-0.1.0-m1-windows-amd64解压目录,双击start.bat<br
 />
+<img src="/assets/images/servcie-center.png" alt="servcie center" 
class="align-center" /> <br />
+<img src="/assets/images/service-center-start-success.png" alt="service center 
start success" class="align-center" /></p>
+
+<h3 id="acmeair-booking">acmeair-booking</h3>
+<p>AcmeairApplication:Run As - - Run Configurations…<br />
+<img src="/assets/images/start-booking.png" alt="start booking" 
class="align-center" />  <br />
+watching microservice 2 successfully,服务注册成功<br />
+<img src="/assets/images/booking-start-success.png" alt="booking start 
success" class="align-center" /></p>
+
+<h3 id="acmeair-customer">acmeair-customer</h3>
+<p>CustomerServiceApplication:Run As - - Run Configurations…<br />
+<img src="/assets/images/start-customer.png" alt="start customer" 
class="align-center" /> <br />
+watching microservice 4 successfully,服务注册成功<br />
+<img src="/assets/images/customer-start-success.png" alt="customer start 
success" class="align-center" /></p>
+
+<h3 id="acmeair-website">acmeair-website</h3>
+<p>将acmeair-website\target\ROOT.war复制到tomcat 
webapps文件夹下,启动tomcat<br />
+<img src="/assets/images/start-website.png" alt="start website" 
class="align-center" /></p>
+
+<h2 id="前台访问">前台访问</h2>
+<p>输入http://localhost:8080<br />
+<img src="/assets/images/home-page.png" alt="home page" class="align-center" 
/></p>
+
+<p>点击网页最下端Acme航空配置<br />
+<img src="/assets/images/init-data.png" alt="init data" class="align-center" 
/></p>
+
+        
+      </section>
+
+      <footer class="page__meta">
+        
+        
+  
+
+
+  
+  
+  
+
+  <p class="page__taxonomy">
+    <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> Tags: </strong>
+    <span itemprop="keywords">
+    
+      
+      
+      <a href="/tags/#huawei-cloud" class="page__taxonomy-item" 
rel="tag">Huawei Cloud</a>
+    
+    </span>
+  </p>
+
+
+
+
+
+        
+          
+            
+              <p class="page__date"><strong><i class="fa fa-fw fa-calendar" 
aria-hidden="true"></i> Updated:</strong> <time datetime="2017-06-24">June 24, 
2017</time></p>
+            
+          
+        
+      </footer>
+
+      <section class="page__share">
+  
+    <h4 class="page__share-title">Share on</h4>
+  
+
+  <a 
href="https://twitter.com/intent/tweet?via=ServiceComb&text=单体应用利用ServiceComb实现微服务化和云化之路
 /docs/go-to-cloud/" class="btn btn--twitter" title="Share on Twitter"><i 
class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
+
+  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/go-to-cloud/"; 
class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw 
fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+
+  <a href="https://plus.google.com/share?url=/docs/go-to-cloud/"; class="btn 
btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw 
fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+
+  <a 
href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/go-to-cloud/"; 
class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw 
fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+</section>
+
+
+      
+  <nav class="pagination">
+    
+      <a href="/cn/docs/linuxcon-workshop-demo/" class="pagination--pager" 
title="Linux Con Workshop Demo
+">Previous</a>
+    
+    
+      <a href="/cn/docs/go-to-cloud/" class="pagination--pager" 
title="单体应用利用ServiceComb实现微服务化和云化之路
+">Next</a>
+    
+  </nav>
+
+
+    </div>
+
+    
+      <div class="page__comments">
+  
+  
+    <section id="static-comments">
+      
+        <!-- Start static comments -->
+        <div class="js-comments">
+          
+        </div>
+        <!-- End static comments -->
+
+        <!-- Start new comment form -->
+        <h4 class="page__comments-title">Leave a Comment</h4>
+        <p class="small">Your email address will not be published. Required 
fields are marked <span class="required">*</span></p>
+        <form id="new_comment" class="page__comments-form js-form form" 
method="post" 
action="https://api.staticman.net/v1/entry/ServiceComb/servicesomb.github.io/master";>
+          <div class="form__spinner">
+            <i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
+            <span class="sr-only">Loading...</span>
+          </div>
+
+          <fieldset>
+            <label for="comment-form-message">Comment <small 
class="required">*</small></label>
+            <textarea type="text" rows="3" id="comment-form-message" 
name="fields[message]" tabindex="1"></textarea>
+            <div class="small help-block"><a 
href="https://daringfireball.net/projects/markdown/";>Markdown is 
supported.</a></div>
+          </fieldset>
+          <fieldset>
+            <label for="comment-form-name">Name <small 
class="required">*</small></label>
+            <input type="text" id="comment-form-name" name="fields[name]" 
tabindex="2" />
+          </fieldset>
+          <fieldset>
+            <label for="comment-form-email">Email address <small 
class="required">*</small></label>
+            <input type="email" id="comment-form-email" name="fields[email]" 
tabindex="3" />
+          </fieldset>
+          <fieldset>
+            <label for="comment-form-url">Website (optional)</label>
+            <input type="url" id="comment-form-url" name="fields[url]" 
tabindex="4"/>
+          </fieldset>
+          <fieldset class="hidden" style="display: none;">
+            <input type="hidden" name="options[slug]" value="go-to-cloud">
+            <label for="comment-form-location">Not used. Leave blank if you 
are a human.</label>
+            <input type="text" id="comment-form-location" 
name="fields[hidden]" autocomplete="off"/>
+          </fieldset>
+          <!-- Start comment form alert messaging -->
+          <p class="hidden js-notice">
+            <strong class="js-notice-text"></strong>
+          </p>
+          <!-- End comment form alert messaging -->
+          <fieldset>
+            <button type="submit" id="comment-form-submit" tabindex="5" 
class="btn btn--large">Submit Comment</button>
+          </fieldset>
+        </form>
+        <!-- End new comment form -->
+      
+    </section>
+  
+</div>
+
+    
+  </article>
+
+  
+  
+    <div class="page__related">
+      <h4 class="page__related-title">You May Also Enjoy</h4>
+      <div class="grid__wrapper">
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/cn/docs/jira_beginner_guide/" rel="permalink">老司机带你
刷任务 - ServiceComb JIRA入门指南
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" itemprop="description">ServiceComb JIRAå…
¥é—¨æŒ‡å—
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  less than 1 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/service-center-ui/" rel="permalink">Service-Center 
Management UI Console
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" itemprop="description">An introduction 
Service-Center Management Console
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  2 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/service-center-ui/" rel="permalink">Service-Center 
Management UI Console
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" itemprop="description">An introduction 
Service-Center Management Console
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  2 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/cn/docs/how-to-reform-a-legacy-system/" 
rel="permalink">最头疼的遗留系统该如何改造?
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" 
itemprop="description">微服务是否是业界期待已久
的企业架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎样的困难和挑战,应该注意些什么?
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+      </div>
+    </div>
+  
+</div>
+
+
+    <script async 
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <div align="center" style="margin: 0 0;">
+    <ins class="adsbygoogle"
+         style="display:block; border-bottom: initial;"
+         data-ad-client="ca-pub-7328585512091257"
+         data-ad-slot="3049671934"
+         data-ad-format="auto"></ins>
+    </div>
+
+    <div class="page__footer">
+      <footer>
+        <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+        <div class="container">
+  <div class="row justify-content-md-center">
+    
+    <div class="col">
+      <ul>
+        <p class="header">Resources</p>
+        <li><a href="/docs/quick-start/">Quick Start</a></li>
+        <li><a href="/users/user-guide/">User Guide</a></li>
+        <li><a href="/slides/">Slides</a></li>
+        <li><a href="/users/faq/">Common Questions</a></li>
+      </ul>
+    </div>
+    <div class="col">
+      <ul>
+        <p class="header">Contribute</p>
+        <li><a 
href="https://github.com/ServiceComb/ServiceComb.github.io/issues/new?title=Issue
 with _posts/2017-06-24-go-to-cloud.md">Report a Doc Issue</a></li>
+        <li><a 
href="https://github.com/ServiceComb/ServiceComb.github.io/edit/master/_posts/2017-06-24-go-to-cloud.md";>Edit
 This Page on Github</a></li>
+        <li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
+      </ul>
+    </div>
+    <div class="col">
+      <ul class="social-icons">
+        <p class="header">Community</p>
+        <li>
+            <a 
href="https://groups.google.com/forum/#!forum/servicecomb-developers"; 
target="_blank"><span class="group">Dev</span></a> |
+            <a 
href="https://groups.google.com/forum/#!forum/servicecomb-users"; 
target="_blank">User</span></a>
+        </li>
+        <li>
+            <a href="http://github.com/ServiceComb"; target="_blank"><span 
class="github">Github</span></a>
+        </li>
+        <li>
+            <a href="https://twitter.com/ServiceComb"; target="_blank"><span 
class="twitter">Twitter</span></a>
+        </li>
+        <li>
+            <a href="/feed.xml" target="_blank"><span 
class="rss">Feed</span></a>
+        </li>
+      </ul>
+    </div>
+  </div>
+</div>
+<div class="page__footer-bottom">
+  <div>&copy; 2017 Apache incubator ServiceComb. Powered by <a 
href="http://jekyllrb.com"; rel="nofollow">Jekyll</a> &amp; <a 
href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/"; 
rel="nofollow">Minimal Mistakes</a>.</div>
+</div>
+
+      </footer>
+    </div>
+
+    <script src="/assets/js/main.min.js"></script>
+
+
+
+
+  <script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new 
Date();a=s.createElement(o),
+  
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-101622733-1', 'auto');
+  ga('send', 'pageview');
+</script>
+
+
+
+
+
+
+
+  
+  <script>
+    (function ($) {
+    var $comments = $('.js-comments');
+
+    $('#new_comment').submit(function () {
+      var form = this;
+
+      $(form).addClass('disabled');
+      $('#comment-form-submit').html('<i class="fa fa-spinner fa-spin 
fa-fw"></i> Loading...');
+
+      $.ajax({
+        type: $(this).attr('method'),
+        url: $(this).attr('action'),
+        data: $(this).serialize(),
+        contentType: 'application/x-www-form-urlencoded',
+        success: function (data) {
+          $('#comment-form-submit').html('Submitted');
+          $('.page__comments-form .js-notice').removeClass('notice--danger');
+          $('.page__comments-form .js-notice').addClass('notice--success');
+          showAlert('Thanks for your comment! It will show on the site once it 
has been approved.');
+        },
+        error: function (err) {
+          console.log(err);
+          $('#comment-form-submit').html('Submit Comment');
+          $('.page__comments-form .js-notice').removeClass('notice--success');
+          $('.page__comments-form .js-notice').addClass('notice--danger');
+          showAlert('Sorry, there was an error with your submission. Please 
make sure all required fields have been completed and try again.');
+          $(form).removeClass('disabled');
+        }
+      });
+
+      return false;
+    });
+
+    function showAlert(message) {
+      $('.page__comments-form .js-notice').removeClass('hidden');
+      $('.page__comments-form .js-notice-text').html(message);
+    }
+  })(jQuery);
+  </script>
+
+
+
+
+
+
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/08e1b43f/content/docs/how-to-reform-a-legacy-system/index.html
----------------------------------------------------------------------
diff --git a/content/docs/how-to-reform-a-legacy-system/index.html 
b/content/docs/how-to-reform-a-legacy-system/index.html
new file mode 100644
index 0000000..0986e49
--- /dev/null
+++ b/content/docs/how-to-reform-a-legacy-system/index.html
@@ -0,0 +1,1130 @@
+<!doctype html>
+<!--
+  Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
+  Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
+  Free for personal and commercial use under the MIT license
+  https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
+-->
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>最头疼的遗留系统该如何改造? - Apache incubator 
ServiceComb</title>
+
+
+
+
+<meta name="description" content="微服务是否是业界期待已久
的企业架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎样的困难和挑战,应该注意些什么?">
+
+
+
+
+<meta name="author" content="Wang Lei">
+
+<meta property="og:locale" content="en">
+<meta property="og:site_name" content="Apache incubator ServiceComb">
+<meta property="og:title" content="最头疼的遗留系统该如何改造?">
+
+
+  <link rel="canonical" 
href="http://github.com/pages/ServiceComb/servicesomb.github.io/docs/how-to-reform-a-legacy-system/";>
+  <meta property="og:url" 
content="http://github.com/pages/ServiceComb/servicesomb.github.io/docs/how-to-reform-a-legacy-system/";>
+
+
+
+  <meta property="og:description" content="微服务是否是业界期待已久
的企业架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎样的困难和挑战,应该注意些什么?">
+
+
+
+  <meta name="twitter:site" content="@ServiceComb">
+  <meta name="twitter:title" content="最头疼的遗留系统该如何改造
?">
+  <meta name="twitter:description" content="微服务是否是业界期待
已久的企业架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎样的困难和挑战,应该注意些什么?">
+  <meta name="twitter:url" content="">
+
+  
+    <meta name="twitter:card" content="summary">
+    
+  
+
+  
+    <meta name="twitter:creator" content="@">
+  
+
+
+
+  
+
+  
+
+
+
+
+
+  <meta property="og:type" content="article">
+  <meta property="article:published_time" content="2017-10-23T00:00:00+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org";,
+      "@type" : "Person",
+      "name" : "Apache incubator ServiceComb",
+      "url" : "http://github.com/pages/ServiceComb/servicesomb.github.io";,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+  <meta name="google-site-verification" 
content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" 
title="Apache incubator ServiceComb Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = 
document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+<script 
src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js";></script>
+<script src="/assets/js/prism.js"></script>
+
+<script type="text/javascript" async
+  
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML";>
+</script>
+
+<link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css";
 
integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M"
 crossorigin="anonymous">
+
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"; 
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
 crossorigin="anonymous"></script>
+<script 
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"; 
integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4"
 crossorigin="anonymous"></script>
+<script 
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"; 
integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1"
 crossorigin="anonymous"></script>
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+<link rel="stylesheet" href="/assets/css/prism.css">
+
+<!--[if lte IE 9]>
+  <style>
+    /* old IE unsupported flexbox fixes */
+    .greedy-nav .site-title {
+      padding-right: 3em;
+    }
+    .greedy-nav button {
+      position: absolute;
+      top: 0;
+      right: 0;
+      height: 100%;
+    }
+  </style>
+<![endif]-->
+
+<meta http-equiv="cleartype" content="on">
+
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+<link 
href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" 
rel="stylesheet">
+<script src="/assets/js/custom.js"></script>
+<!-- end custom head snippets -->
+
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an 
<strong>outdated</strong> browser. Please <a 
href="http://browsehappy.com/";>upgrade your browser</a> to improve your 
experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+             
+          <a class="site-title active" href="/"><img 
src="//assets/images/ServiceComb-logo-1.png"></a>
+             
+        <ul class="visible-links">
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/docs/quick-start/">Quick Start</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/users/">Users</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/developers/">Developers</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/year-archive/">Blogs</a>
+              
+            </li>
+          
+            
+            <li class="masthead__menu-item">
+              
+              
+              
+                <a href="/faqs/">FAQ</a>
+              
+            </li>
+          
+        </ul>
+        <button><div class="navicon"></div></button>
+        <ul class="hidden-links hidden"></ul>
+        <div class="nav-lang">
+          
+            
+            <a href=/cn/docs/how-to-reform-a-legacy-system/>中文</a>
+          
+        </div>
+      </nav>
+    </div>
+  </div>
+</div>
+
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+      
+      <div class="back-to-home">Home > <a href="/">ServiceComb</a></div>
+      
+  
+
+<div itemscope itemtype="http://schema.org/Person";>
+
+  
+
+  <div class="author__content">
+    <h3 class="author__name" itemprop="name">Wang Lei</h3>
+    
+      <p class="author__bio" itemprop="description">
+           
+        Happy Coding, Happy Life
+           
+      </p>
+    
+  </div>
+
+  <div class="author__urls-wrapper">
+    <button class="btn btn--inverse">Follow</button>
+    <ul class="author__urls social-icons">
+      
+
+      
+        <li>
+          <a href="https://wldandan.github.io"; itemprop="url">
+            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
+          </a>
+        </li>
+      
+
+      
+        <li>
+          <a href="mailto:wanglei...@huawei.com";>
+            <meta itemprop="email" content="wanglei...@huawei.com" />
+            <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> 
Email
+          </a>
+        </li>
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      
+
+      <!--
+  <li>
+    <a href="http://link-to-whatever-social-network.com/user/"; 
itemprop="sameAs">
+      <i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
+    </a>
+  </li>
+-->
+    </ul>
+  </div>
+</div>
+
+  
+  </div>
+
+
+
+  <article class="page" itemscope itemtype="http://schema.org/CreativeWork";>
+    <meta itemprop="headline" content="最头疼的遗留系统该如何改造
?">
+    <meta itemprop="description" content="微服务是否是业界期待已久
的企业架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎样的困难和挑战,应该注意些什么?">
+    <meta itemprop="datePublished" content="October 23, 2017">
+    <meta itemprop="dateModified" content="October 23, 2017">
+
+    <div class="page__inner-wrap">
+      
+        
+          <header>
+            <h1 class="page__title" 
itemprop="headline">最头疼的遗留系统该如何改造?
+</h1>
+            
+              <p class="page__meta"><i class="fa fa-clock-o" 
aria-hidden="true"></i> 
+
+
+
+
+  less than 1 minute read
+
+</p>
+            
+          </header>
+        
+      
+
+      <section class="page__content" itemprop="text">
+        <p>随着RESTful、云计算、DevOps、持续交付等概念的深å…
¥äººå¿ƒï¼Œå¾®æœåŠ¡ï¼ˆMicroservices)逐渐成为系统架构的一个代名词。那么微服务是否是业界期å¾
…已久的架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎æ 
·çš„困难和挑战,应该注意些什么?在该分享中,王磊将通过实é™
…的案例,跟大家探讨使用微服务改造
遗留系统的实践之路。</p>
+
+<ul>
+  <li>什么是微服务</li>
+  <li>微服务的诞生背景</li>
+  <li>遗留系统的微服务改造策略</li>
+  <li>微服务改造之路</li>
+</ul>
+
+<h2 id="背景">背景</h2>
+<p>什么是系统架构设计?</p>
+
+<p>一直以来,系统架构设计是IT领域经久
不衰的话题之一,是每个系统构建过程中极其å…
³é”®çš„一部分,它决定了系统是否能够被正确、有效的构建。架构师们也一直在持续探索,寻找更优秀的架构设计方式来构建系统。</p>
+
+<p>那什么是系统的架构设计?对于这个问题,我相信每个朋友都会有不同的定义,实é™
…上,也并没有一个标准的答案来解释什么是架构设计。</p>
+
+<p>基于我过去的经验和工作方式,我认为系统架构设计的本质,是在应用系统å†
…部找到这æ 
·ä¸€ä¸ªåŠ¨æ€å¹³è¡¡ï¼šå¹³è¡¡ä¸šåŠ¡ã€æŠ€æœ¯ã€å›¢é˜Ÿçš„同时,考虑系统灵活性、可扩展性以及可维护性等å›
 ç´ 
,并将应用系统划分成不同的部分,使这些部分彼此之间相互分工、相互协作,从而为用户提供某种特定的价值的方式。</p>
+
+<p>随着RESTful、云计算、DevOps、持续交付等概念的深å…
¥äººå¿ƒï¼Œ<strong>微服务架构逐渐成为系统架构的一个代名词</strong>。</p>
+
+<h2 id="什么是微服务架构">什么是微服务架构</h2>
+<p>2015年,微服务架构这个词,以相当高的频率出现在各种演讲、文ç«
 ã€ä¼šè®®ã€ç¤¾åŒºä¸Šã€‚这里,我先和大家快速回顾一下,Martin 
Fowler对微服务的抽象。</p>
+
+<p><img src="/assets/images/microservice_definition_by_martin_folwer.jpeg" 
alt="" /></p>
+
+<p>如上所示,微服务架构的核心四要素,我用红色æ 
‡æ³¨å‡ºæ¥äº†ã€‚如果翻译成中文,大致如下所示:</p>
+
+<blockquote>
+  
<p>微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相é
…åˆï¼Œä¸ºç”¨æˆ·æä¾›æœ€ç»ˆä»·å€¼ã€‚ 每个服务运行在å…
¶ç‹¬ç«‹çš„进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful
 API)。 每个服务都围绕着å…
·ä½“业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。
 另外,对具体的服务而言,应æ 
¹æ®ä¸šåŠ¡ä¸Šä¸‹æ–‡ï¼Œé€‰æ‹©åˆé€‚的语言、工具对其进行构建。</p>
+</blockquote>
+
+<p>总结成一句话就是<strong>微服务是围绕业务构建的细粒度的分布式系统</strong>。</p>
+
+<h2 id="微服务的诞生背景">微服务的诞生背景</h2>
+<p>2015年,微服务突然火了,为什么?</p>
+
+<p>å…
¶å®žå¾®æœåŠ¡æž¶æž„并不是技术创新,而是IT发展到现阶段对技术架构的一种阐释。</p>
+
+<p>它要求包括<strong>快速和业务对齐(aligning 
business)、理解和抽象业务(基于领域建模)、快速开发(Lean、Agile)、快速反馈和交付(CI、CD、DevOps)</strong>。</p>
+
+<p>所以说,微服务并不是技术,而是将化整为零(或称分治)思想换了一种说法,æ—
 
论是把一个大型系统分割成多个小而自治的系统,还是把一个大型团队分成多个团队,或是把一个复杂的项目分成多个交付阶段都是这种思想的运用。</p>
+
+<p>当然,任何新事物的诞生,总会有一个推动因素
。微服务的诞生也并非偶然。它是互联网高速发展,技术日新月异的变化以及ä¼
 ç»Ÿæž¶æž„无法适应快速变化等多重因素
的推动下所诞生的产物。</p>
+
+<p>基于个人的理解,我将微服务的诞生因素总结为如下几
点:</p>
+
+<p><img src="/assets/images/why_microservice_show_up.jpeg" alt="" /></p>
+
+<ol>
+  <li>
+    <p><strong>互联网行业的快速发展</strong></p>
+
+    
<p>过去的十年中,互联网对我们的生活产生了翻天覆地的变化,越来越多的ä¼
 ç»Ÿè¡Œä¸šå…¬å¸ä¹Ÿå¼€å§‹ä¾èµ–互联网技术打造其核心竞争优势。</p>
+
+    <p>在这种情
况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户量的增åŠ
 
,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。</p>
+  </li>
+  <li>
+    <p><strong>单块架构系统面临的挑战</strong></p>
+
+    
<p>随着用户需求个性化、产品生命周期变短、市场需求不稳定等å›
 ç´ 
的出现,单块架构系统面临着越来越多的挑战。如何找到一种更有效的、更灵活、适应需求的系统架构方式,成为大家å
…³æ³¨çš„焦点。</p>
+  </li>
+  <li>
+    <p><strong>敏捷、精益方法、持续交付的深入人心</strong></p>
+
+    
<p>在IT行业发展的过去十年,敏捷、精益、持续交付等价值观、方法论的提出以及实践,让很多组织意识到应变市场变化、提高响应力的重要性,应该构建软件交付周期的闭环(分析、开发、测试、部署、运维、监控、运营),而不ä»
…仅是提高开发阶段的效率。</p>
+
+    <p><strong>精益创业(Lean 
Startup)</strong>帮助组织分析并建立最小可实行产品(MinimumViableProduct),通过迭代持续改进敏捷方法帮助组织消除浪费,通过反馈不断找到正确的方向。</p>
+
+    <p><strong>持续交付</strong>则帮助组织构建更快、更可靠
、可频繁发布的交付机制并构建产品交付闭环。</p>
+
+    
<p>大部分组织已经基本上形成了一套可实施的交付体系。包
括持续集成、自动化测试、数据管理、自动化部署机制等。</p>
+
+    
<p>这时候,大泥球式的单块架构,会逐渐成为影响交付周期进一步优化的瓶颈,å›
 
此如何找到灵活性高、扩展性好的架构方式,也成为进一步优化交付周期面临的挑战。</p>
+  </li>
+  <li>
+    <p><strong>Docker等容器虚拟化技术的快速发展</strong></p>
+
+    <p>同传
统的虚拟化技术相比,基于容器技术的Docker,不需要复杂的Hypervisor机制支持,å
…·æœ‰æ›´é«˜çš„虚拟化性能和效率。</p>
+
+    <p>同时容器可以很容易的运行在任意的装
有DockerEngine的系统上,使得开发人员能够用更低的成本将应用程序部署在不同平台上。</p>
+  </li>
+  <li>
+    <p><strong>DevOps文化</strong></p>
+
+    <p>DevOps文化的推行打破了传
统开发与运维之间的壁垒,帮助组织形成开发、运维紧密é…
åˆçš„、全功能化的高效团队,并尽早降低软件交付最后一å…
¬é‡Œçš„风险。</p>
+  </li>
+</ol>
+
+<h2 id="遗留系统的微服务改造策略">遗留系统的微服务改造
策略</h2>
+<p>聊完什么是微服务架构以及å…
¶è¯žç”ŸèƒŒæ™¯ï¼ŒæŽ¥ä¸‹æ¥æˆ‘们来谈谈如何改造遗留系统。</p>
+
+<p>在过去的10多年间,大部分工作时间我都在和遗留系统打交道。我相信很多朋友也是工作在已经运转多年的遗留系统上。</p>
+
+<p>对于这类系统,当谈论使用微服务对其进行改造
时,我认为要谨记一点:</p>
+
+<p><strong>改造不是重做。</strong></p>
+
+<p><strong>在改造
的过程中,要始终以保证系统为用户提供的业务价值可用作为首要目æ
 ‡ã€‚</strong>从这个点出发,基于我的经验,对微服务改造
的策略总结为如下五个步骤:</p>
+
+<p><img src="/assets/images/microservice_reform_strategy.jpeg" alt="" /></p>
+
+<ol>
+  <li>
+    <p>范围定义</p>
+
+    
<p>对于遗留系统而言,通常业务运转时间较长(譬如5~8年以上,甚至更长),å›
 æ­¤æ¶‰åŠçš„功能繁杂,代码中存在大量无效或者
过时的需求,缺陷修复成本较高。</p>
+
+    
<p>另外,系统在演进的过程中,也会持续为用户提供新的功能和价值。å›
 æ­¤ï¼Œåˆ’分出清晰的范围非常重要。</p>
+
+    <p>实际上,范围定义主要包括两部分:</p>
+
+    <ol>
+      <li>
+        <p>明确业务改造范围</p>
+
+        <p>所谓改造
范围,就是确定我们常说的业务试点。通常,作为初次尝试微服务实践的组织,建议选取业务范围影响较小、非å
…³é”®åŠŸèƒ½çš„试点,这样做也是为了确保在不影响核心业务的情
况下快速尝试并获得反馈。</p>
+      </li>
+      <li>
+        <p>明确成员责任范围</p>
+
+        <p>明确成员责任范围,确定由谁来改造,确保改造
的目标清晰。</p>
+
+        <p>实际
上,对于产品而言,遗留系统的维护和更新,包
括缺陷定位、缺陷修复、数据更新、功能实现、测试、交付给运维团队等,通常已经让团队的工作处于高负荷状态。å›
 æ­¤ï¼Œéœ€è¦ç¡®å®šæˆå‘˜ï¼Œå…¨èº«å¿ƒçš„投入,以微服务改造
作为短期目标。</p>
+      </li>
+    </ol>
+  </li>
+  <li>
+    <p>功能剥离</p>
+
+    <p>有了明确的业务范围,成员也有了清
晰的责任,接下来就需要将部分功能点进行剥离。</p>
+
+    
<p>所谓剥离,就是将选中的功能从原有的系统中拆分出来,并构建成独立的服务。在这个阶段,主要åŒ
…括两点:</p>
+
+    <ol>
+      <li>
+        <p>将功能从原有系统拆分出来,并构建新服务</p>
+
+        <p>一提到拆分,很多朋友会纠
结,“系统复杂,如何拆分微服务才好?怎么æ 
·çš„拆分才合理?”。å…
¶å®žï¼Œä»Žæˆ‘个人的观点来看,这时候还不是纠
结服务到底怎么划分合理的时候。为什么?</p>
+
+        <ol>
+          <li>
+            
<p>好的架构是动态演变和迭代出来的,业务在不断改变,技术和工å
…·ä¹Ÿåœ¨ä¸ä¼šçš„升级换代,没有完美的架构,只有无
限逼近完美的动态平衡,所以å…
ˆå°èŒƒå›´ã€ä½Žæˆæœ¬åŠ¨èµ·æ¥ï¼Œåœ¨è¿è½¬ä¸­æ‰¾å¹³è¡¡ç‚¹ã€‚</p>
+          </li>
+          <li>
+            <p>微服务的复杂度在于分布式系统本身,以及å…
¶ç”Ÿæ€ç³»ç»Ÿï¼ˆå¼€å‘、测试、部署、运维、监控、告警)的搭建。</p>
+          </li>
+          <li>
+            
<p>团队文化的形成是一个相对漫长的过程,如果花很大力气å…
³æ³¨æœåŠ¡æ€Žä¹ˆæ‹†ï¼Œè€Œæ²¡æœ‰èšç„¦åœ¨ç”Ÿæ€ç³»ç»Ÿçš„搭建以及团队文化的形成上,实é™
…
上是舍本逐末。即便拆分出了不同的服务,在落地的时候也会遇到诸多问题。所以,找一个功能点å
…
ˆæ‹†ï¼Œç„¶åŽæ­å»ºæŒç»­äº¤ä»˜æµæ°´çº¿ï¼Œå¿«é€Ÿè¯•é”™ï¼Œå»ºç«‹å¥½æœ‰æ•ˆçš„反馈闭环机制,再不断寻找动态平衡,拆分出更细的服务或è€
…将不合理的服务合并。</p>
+          </li>
+        </ol>
+      </li>
+      <li>
+        
<p>在原有的系统前端,使用代理机制,并使用遗留系统和新服务组合为用户提供价值</p>
+
+        
<p>这一步,目的是使用组合的系统(遗留系统+新的服务)为用户提供价值。</p>
+
+        
<p>对于Web系统,通常可以在前端使用直接请求新的服务。也可以在后端使用转发请求,获取新服务提供的数据。</p>
+
+        <p>如下图所示:</p>
+
+        <p><img src="/assets/images/microservice_reform_strategy.jpeg" alt="" 
/></p>
+      </li>
+    </ol>
+  </li>
+  <li>
+    <p>数据解耦</p>
+
+    
<p>在以前的遗留系统构建过程中,通常使用数据库作为集成点,不同功能/系统之间通过数据库完成数据交换。对于某些系统,还大量使用存储过程完成业务逻辑,开发的时候看似效率高,但å‡
 å¹´ä¸‹æ¥ï¼ŒDBA成了IT团队最懂业务的人,维护成为瓶颈。</p>
+
+    <p>而实际
上,业务的数据是业务固有的组成部分,应当随着业务的变化而变化。业务拆分出来,数据也应该拆分出来。从而保证访问数据只能通过统一的相å
…
³ä¸šåŠ¡API完成。便于在将来的业务和架构演进中,有效的对数据维护、管理和升级。</p>
+  </li>
+  <li>
+    <p>数据同步</p>
+
+    <p>数据同步,是一个价值体现的过渡过程。</p>
+
+    <p>一方面,遗留系统的改造中存在的各种各æ 
·çš„挑战和我们今天认为的不合理(当时的场景也许是合理的)。另一方面,对于大部分遗留的系统,都会使用数据库作为集成点(开发成本低),导致某业务功能的数据与å
…¶ä»–功能有着千丝万缕的联系,数据的变化容易对其他功能造
成影响。</p>
+
+    <p>因此对于大型的遗留系统,很难在短期的时间内
(3~6个月)完成全系统的改造
。需要一个相对漫长,循序渐进的过程来完成改造。</p>
+
+    
<p>譬如,在电商系统中,商家的后台管理系统中的产品、价æ 
¼çš„更新,会发布到面向用户的电商搜索系统中以及å…
¶ä»–系统中。如果我们将系统中的产品相å…
³æ‹†åˆ†æˆç‹¬ç«‹æœåŠ¡ï¼Œåˆ™å¿…
须也要拆分数据发布机制,否则的话容易造
成数据不一致。但拆分数据发布机制,又需要分析清
楚不同数据之间的影响和依赖,需要更大的成本,短期内
不易完成。</p>
+
+    
<p>这时候,如果将新服务的数据同步回原有的数据库,采用这æ
 
·ä¸€ä¸ªæŠ˜ä¸­çš„的过程,既能保障新的服务和数据被独立,又不影响原有的遗留系统功能。</p>
+
+    <p>说白了,这å…
¶å®žä¹Ÿæ˜¯åœ¨ä¿è¯ç³»ç»Ÿä¸ºç”¨æˆ·æä¾›çš„业务价值不被破坏。</p>
+
+    
<p>有了之前的尝试,接下来就是通过不断的迭代,完成功能剥离,数据解耦、数据同步,从而将更多的功能拆分成独立的服务。</p>
+  </li>
+</ol>
+
+<p><img src="/assets/images/legacy_system_reform_strategy.jpeg" alt="" /></p>
+
+<p>如上就是我对于遗留系统改造的策略。</p>
+
+<h2 id="遗留系统改造实践">遗留系统改造实践</h2>
+<p>接下来,我和大家分享一个我所经历的遗留系统改造
的案例。首先,让我们看看这个系统的背景和一些数据。</p>
+
+<h3 id="客户背景">客户背景</h3>
+
+<p><a 
href="http://movit-tech.com/";>盟拓软件</a>是中国房地产行业IT服务及行业解决方案和产品的领å
…ˆåŽ‚家,其依据市场变化推出å…
¨æ°‘卖房的新营销模式,正从线下的传
统现场售楼模式向线上的房地产电商模式进行转变。</p>
+
+<h3 id="业务痛点">业务痛点</h3>
+
+<p>当今房地产行业呈现短期开盘峰值、后期零星散客的业务特性。å
…¶é¢ä¸´ç€é«˜æ˜‚线下运营成本,营销成本占
销售额&gt;5%。而由此引入的线上竞价秒杀营销模式,传
统IT解决方案的系统资源率、峰值扩容能力将无法满足。</p>
+
+<p><img src="/assets/images/case_mengtuo_traditional_mode.png" alt="" /></p>
+
+<h3 id="系统概览">系统概览</h3>
+
+<p>系统为å…
¸åž‹çš„三层单块架构,使用MySQL数据库存储数据。运行在服务器上的应用处理性能较低,为了应对短暂的访问高峰,额外购置了较多的服务器资源,访问高峰过后,服务器资源闲置é€
 æˆè¾ƒå¤§æµªè´¹ï¼Œä¸”需要较多人员维护。</p>
+
+<h3 id="相关数据">相关数据</h3>
+
+<ul>
+  <li>
+    <p>代ç 
çº¦<strong>100万</strong>行,测试覆盖率为<strong>10%</strong>,集成测试时间为<strong>一个月</strong></p>
+
+    <p>代码臃肿,无效遗留代ç 
è¾ƒå¤šï¼Œä¸”业务间紧耦合,测试覆盖率较低,测试出问题了难以定位,导致测试耗时较长。</p>
+  </li>
+  <li>
+    <p>营销预案需<strong>提前1个月</strong>准备资源</p>
+
+    
<p>为应对访问高峰,每次都需要预购大量的服务资源,重新部署环境,并运行相å
…³æµ‹è¯•ã€‚</p>
+  </li>
+  <li>
+    <p>业务耦合紧,新业务上线<strong>&gt;半年</strong></p>
+
+    
<p>每次测试都要多个业务团队联合测试,问题定位较耗时,测试效率低。</p>
+  </li>
+  <li>
+    <p>上百种业务,2-3种开发语言</p>
+
+    
<p>业务复杂,且语言不一,系统联调时耗时较多且需相互é…
åˆï¼Œæ—¶é—´å‘¨æœŸè¾ƒé•¿ã€‚</p>
+  </li>
+  <li>
+    <p>运维团队<strong>&gt;20人</strong></p>
+
+    <p>臃肿的团队导致问题定位需多方é…
åˆï¼Œæ²Ÿé€šæˆæœ¬é«˜ã€‚</p>
+  </li>
+</ul>
+
+<p><strong>基于之前定义的改造策略,我们的改造
过程大致如下所示:</strong></p>
+
+<p>范围定义:</p>
+
+<ul>
+  <li>
+    <p>将原房地产CRM平台按业务类别拆分为多个微服务。</p>
+
+    <p><img src="/assets/images/case_mengtuo_reform_before_and_after.png" 
alt="" /></p>
+  </li>
+</ul>
+
+<p>功能剥离:</p>
+
+<ul>
+  <li>从单体CRM系统中逐步拆分出业务模块(服务网å…
³ã€å®¢æˆ·æœåŠ¡ã€æˆ¿æºæœåŠ¡ã€æœºä¼šæœåŠ¡ã€ç§¯åˆ†æœåŠ¡ï¼‰ã€‚</li>
+</ul>
+
+<p>数据解耦</p>
+
+<ul>
+  <li>每个微服务的数据进行独立存储。</li>
+</ul>
+
+<p>数据同步</p>
+
+<ul>
+  
<li>在负载较低时,将数据同步回原有的遗留系统中不断迭代,陆续完成后续的服务。</li>
+</ul>
+
+<p>改造
过程中,基于ServiceComb,<strong>通过控制请求路由,逐步架空对原单体应用的请求,
 平滑过渡系统到微服务架构。</strong></p>
+
+<p><strong>单个服务的构建并没有那么复杂,基于ServiceComb,通过如下的简单4步,即可快速完成改é€
 ï¼š</strong></p>
+
+<ol>
+  <li>引入<a 
href="https://github.com/ServiceComb/ServiceComb-Java-Chassis";>ServiceComb Java 
Chassis</a>框架依赖</li>
+  <li>定义服务接口端点</li>
+  <li>添加服务配置文件</li>
+  <li>注释服务启动入口</li>
+</ol>
+
+<p>另外,通过Company Workshop中提供的Docker插件配置,10分钟内
完成了服务容器化,自动生成镜像。</p>
+
+<p>同时,利用ServiceComb开发的微服务应用,可同时无缝接å…
¥<a 
href="https://www.huaweicloud.com/product/servicestage.html";>ServiceStage</a>,享受到微服务治理、容器虚机混编、应用拓扑等能力。</p>
+
+<p>为应对短暂的业务高峰,经常需要预购大量的资源来提前部署和验证环境,花费大量的人力物力,且资源利用率极低。å›
 æ­¤ï¼Œè¿›è¡Œäº‘化改造后的产品和解决方案需要å…
·å¤‡éšç€å‚与人数增加
而秒级伸缩,支撑业务峰值和资源利用率的能力。盟拓软件基于华为ServiceStage的æ
 ¸å¿ƒæŠ€æœ¯å®¹å™¨æ”¹é€ 
、混编方案、编排调度算法等进行容器虚机混编应用云化改é€
 
,实现了应用的秒级部署和弹性伸缩能力,极大地提高了资源的利用率。</p>
+
+<p><strong>改造后效果:</strong></p>
+
+<ul>
+  <li>运维人力<strong>减少80%</strong></li>
+  <li>资源利用率<strong>提升50%</strong>,大幅降低运营成本</li>
+  <li><strong>每秒万级</strong>调用链分析能力</li>
+  <li>传统系统和应用平滑改造上云</li>
+  <li>互联网营销模式,天粒度业务快速创新</li>
+</ul>
+
+<p><img src="/assets/images/case_mengtuo_new_mode.png" alt="" /></p>
+
+<p><strong>理论上,经过不断地迭代,逐渐完成业务功能解耦,新服务构建。那么遗留系统就会被替换掉。</strong></p>
+
+<h2 id="改造要点">改造要点</h2>
+<p>在改造的整个过程中,我认为如下几
个实践是非常重要的:</p>
+
+<p><img src="/assets/images/best_practices_for_legacy_system_reform.jpeg" 
alt="" /></p>
+
+<h3 id="基础设施自动化">基础设施自动化</h3>
+<p>原有的部署发生在数据中心,因
此流程上相对复杂,而且存在一定弊端(譬如审批和协作上,起不到实质作用)。对于改é€
 
后的服务而言,我们使用更多的自动化方式代替复杂的审批流程。通过使用华为ServiceStage作为基础设施,团队能够更自主的对基础设施进行管理。如资源创建、销毁、更新等。随着服务的增多,基础设施自动化帮助我们节省了大量的时间。当然,从组织层面,也成立了专门的小组ç
 ”究华为ServiceStage以及相关的DevOps配套工具。</p>
+
+<p>目前,国内
外有很多优秀的云平台,可以方便的为用户提供基础设施的自动化机制。</p>
+
+<h3 id="微服务生态系统">微服务生态系统</h3>
+<p>微服务的生态系统是指微服务实施过程相å…
³çš„协作部分,涉及部分较多,譬如测试机制、持续集成、自动化部署、细粒度监控、日志聚合、告警、持续交付,以及大家非常å
…³æ³¨çš„服务注册、服务发现机制等。</p>
+
+<p>这部分的灵活性比较大,因
为目前如上说的每一个领域都有很多优秀的工å…
·ã€‚譬如日志聚合目前业界的方案通常为ELK,监控的方案如Zabbix、NewRelic、CloudWatch等,成熟的监控工å
…·éƒ½å…
·æœ‰å‘Šè­¦åŠŸèƒ½ï¼ŒPagerDuty也提供更专业的告警服务。服务注册和发现有ServiceComb框架的Service
 
Center,Eureka,Consul,Zookeeper。大家可以在各自的团队中自由发挥。</p>
+
+<h3 id="开发框架的演进">开发框架的演进</h3>
+<p>开发框架是团队在构建微服务的过程中,不断总结,梳理出的快速开发微服务的相å
…³å·¥å…·å’Œæ¡†æž¶ã€‚</p>
+
+<p>我们基于ServiceComb构建了快速开发框架,主要包
括四部分,如下图所示:</p>
+
+<p><img src="/assets/images/rapid_development_framework.png" alt="" /></p>
+
+<ol>
+  <li>
+    <p>微服务工程示例</p>
+
+    <p>提供微服务改造
架构最佳实践参考工程Company,使能微服务改造
或开发能复用其架构设计和é…
ç½®ï¼ŒåŒæ—¶æŒ‡å¯¼å®žçŽ°æœåŠ¡å®¹å™¨åŒ–和后续服务性能测试等提高服务可é
 æ€§ã€‚</p>
+  </li>
+  <li>
+    <p>契约生成工具</p>
+
+    
<p>ServiceComb采用了基于OpenAPI的服务契约,使业务逻辑与编程语言解耦,并可使用Swaggerå·¥å
…·å®šä¹‰æœåŠ¡å¥‘约,自动生成契约对应的代码和文档。</p>
+  </li>
+  <li>
+    <p>持续集成</p>
+
+    <p>持续集成使用了Jenkins,通过其é…
ç½®æ–‡ä»¶å®šä¹‰ä¸»è¦çš„阶段:</p>
+
+    <blockquote>
+      <p>验证:运行单元测试,集成测试</p>
+
+      <p>构建:构建可执行的jar部署包</p>
+
+      
<p>部署:基于指定版本制作镜像,并推送到测试或生产环境下</p>
+    </blockquote>
+
+    <p>利用这æ 
·çš„持续集成模板工程,花费很少的时间,就可以针对新建的微服务应用,快速é
…ç½®å…¶å¯¹åº”的持续集成环境。</p>
+  </li>
+  <li>
+    <p>Kubernetes集群一键部署</p>
+
+    <p>Kubernetes是谷歌开源的一个容器集群管理工å…
·ã€‚基于Kubernetes,可实现微服务的快速部署及弹性伸缩。我们提供了一键部署脚本,部署时只需稍作修改即可通过一条命令,自动完成资源的创建、部署、弹性伸缩、金丝雀发布等。</p>
+  </li>
+</ol>
+
+<h3 id="团队运维自管理">团队运维自管理</h3>
+
+<p>这一部分是å…
³äºŽå›¢é˜Ÿçš„文化管理。也是对DevOPS的延伸,我们称为TMI(Team 
Managed Infrastructure)。</p>
+
+<p>目的是将分析、开发、测试以及资源创建、销毁、自动化部署的权利交给团队,由团队按需完成部署(åŠ
 
上看板的流程管理,而非Scrum的固定迭代,可以做到一天部署多次)。</p>
+
+<p>当然,这个环节非常依赖于成熟的监控以及告警机制,当出现问题时,能够有效的通知到责任人,快速反馈,快速修复。团队å†
…部也会定期轮换Pager(出问题救火的人),培å…
»å›¢é˜Ÿä»¥æœåŠ¡å¯ç”¨ä½œä¸ºå¤§å®¶çš„共同目标,培å…
»äº§å“è§‚念,而非项目观念。</p>
+
+<p>再回顾一下这个图:</p>
+
+<p><img src="/assets/images/best_practices_for_legacy_system_reform.jpeg" 
alt="" /></p>
+
+<p>最后,和大家分享一下,我个人在微服务实施过程中总结的4句方针:</p>
+
+<p><strong>由大到小,由粗到细</strong></p>
+
+<p><strong>关注运维,关注监控</strong></p>
+
+<p><strong>快速反馈,快速修复</strong></p>
+
+<p><strong>循序渐进,增量实现</strong></p>
+
+        
+      </section>
+
+      <footer class="page__meta">
+        
+        
+  
+
+
+  
+  
+  
+
+  <p class="page__taxonomy">
+    <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> Tags: </strong>
+    <span itemprop="keywords">
+    
+      
+      
+      <a href="/tags/#reform-legacy-system" class="page__taxonomy-item" 
rel="tag">Reform legacy system</a>
+    
+    </span>
+  </p>
+
+
+
+
+
+        
+          
+            
+              <p class="page__date"><strong><i class="fa fa-fw fa-calendar" 
aria-hidden="true"></i> Updated:</strong> <time datetime="2017-10-23">October 
23, 2017</time></p>
+            
+          
+        
+      </footer>
+
+      <section class="page__share">
+  
+    <h4 class="page__share-title">Share on</h4>
+  
+
+  <a 
href="https://twitter.com/intent/tweet?via=ServiceComb&text=最头疼的遗留系统该如何改é€
 ï¼Ÿ /docs/how-to-reform-a-legacy-system/" class="btn btn--twitter" 
title="Share on Twitter"><i class="fa fa-fw fa-twitter" 
aria-hidden="true"></i><span> Twitter</span></a>
+
+  <a 
href="https://www.facebook.com/sharer/sharer.php?u=/docs/how-to-reform-a-legacy-system/";
 class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw 
fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+
+  <a 
href="https://plus.google.com/share?url=/docs/how-to-reform-a-legacy-system/"; 
class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw 
fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+
+  <a 
href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/how-to-reform-a-legacy-system/";
 class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw 
fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+</section>
+
+
+      
+  <nav class="pagination">
+    
+      <a href="/cn/docs/distributed_saga_3/" class="pagination--pager" 
title="ServiceComb中的数据最终一致性方案 - part 3
+">Previous</a>
+    
+    
+      <a href="/cn/docs/how-to-reform-a-legacy-system/" 
class="pagination--pager" title="最头疼的遗留系统该如何改造?
+">Next</a>
+    
+  </nav>
+
+
+    </div>
+
+    
+      <div class="page__comments">
+  
+  
+    <section id="static-comments">
+      
+        <!-- Start static comments -->
+        <div class="js-comments">
+          
+        </div>
+        <!-- End static comments -->
+
+        <!-- Start new comment form -->
+        <h4 class="page__comments-title">Leave a Comment</h4>
+        <p class="small">Your email address will not be published. Required 
fields are marked <span class="required">*</span></p>
+        <form id="new_comment" class="page__comments-form js-form form" 
method="post" 
action="https://api.staticman.net/v1/entry/ServiceComb/servicesomb.github.io/master";>
+          <div class="form__spinner">
+            <i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
+            <span class="sr-only">Loading...</span>
+          </div>
+
+          <fieldset>
+            <label for="comment-form-message">Comment <small 
class="required">*</small></label>
+            <textarea type="text" rows="3" id="comment-form-message" 
name="fields[message]" tabindex="1"></textarea>
+            <div class="small help-block"><a 
href="https://daringfireball.net/projects/markdown/";>Markdown is 
supported.</a></div>
+          </fieldset>
+          <fieldset>
+            <label for="comment-form-name">Name <small 
class="required">*</small></label>
+            <input type="text" id="comment-form-name" name="fields[name]" 
tabindex="2" />
+          </fieldset>
+          <fieldset>
+            <label for="comment-form-email">Email address <small 
class="required">*</small></label>
+            <input type="email" id="comment-form-email" name="fields[email]" 
tabindex="3" />
+          </fieldset>
+          <fieldset>
+            <label for="comment-form-url">Website (optional)</label>
+            <input type="url" id="comment-form-url" name="fields[url]" 
tabindex="4"/>
+          </fieldset>
+          <fieldset class="hidden" style="display: none;">
+            <input type="hidden" name="options[slug]" 
value="how-to-reform-a-legacy-system">
+            <label for="comment-form-location">Not used. Leave blank if you 
are a human.</label>
+            <input type="text" id="comment-form-location" 
name="fields[hidden]" autocomplete="off"/>
+          </fieldset>
+          <!-- Start comment form alert messaging -->
+          <p class="hidden js-notice">
+            <strong class="js-notice-text"></strong>
+          </p>
+          <!-- End comment form alert messaging -->
+          <fieldset>
+            <button type="submit" id="comment-form-submit" tabindex="5" 
class="btn btn--large">Submit Comment</button>
+          </fieldset>
+        </form>
+        <!-- End new comment form -->
+      
+    </section>
+  
+</div>
+
+    
+  </article>
+
+  
+  
+    <div class="page__related">
+      <h4 class="page__related-title">You May Also Enjoy</h4>
+      <div class="grid__wrapper">
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/cn/docs/jira_beginner_guide/" rel="permalink">老司机带你
刷任务 - ServiceComb JIRA入门指南
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" itemprop="description">ServiceComb JIRAå…
¥é—¨æŒ‡å—
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  less than 1 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/service-center-ui/" rel="permalink">Service-Center 
Management UI Console
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" itemprop="description">An introduction 
Service-Center Management Console
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  2 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/service-center-ui/" rel="permalink">Service-Center 
Management UI Console
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" itemprop="description">An introduction 
Service-Center Management Console
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  2 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+          
+
+
+
+<div class="grid__item">
+  <article class="archive__item" itemscope 
itemtype="http://schema.org/CreativeWork";>
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/cn/docs/how-to-reform-a-legacy-system/" 
rel="permalink">最头疼的遗留系统该如何改造?
+</a>
+      
+    </h2>
+    <p class="archive__item-excerpt" 
itemprop="description">微服务是否是业界期待已久
的企业架构解决方案?在对遗留系统进行微服务的改造
过程中存在怎样的困难和挑战,应该注意些什么?
+</p>
+    
+      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 
+
+
+
+
+  1 minute read
+
+</p>
+    
+  </article>
+</div>
+
+        
+      </div>
+    </div>
+  
+</div>
+
+
+    <script async 
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+    <div align="center" style="margin: 0 0;">
+    <ins class="adsbygoogle"
+         style="display:block; border-bottom: initial;"
+         data-ad-client="ca-pub-7328585512091257"
+         data-ad-slot="3049671934"
+         data-ad-format="auto"></ins>
+    </div>
+
+    <div class="page__footer">
+      <footer>
+        <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+        <div class="container">
+  <div class="row justify-content-md-center">
+    
+    <div class="col">
+      <ul>
+        <p class="header">Resources</p>
+        <li><a href="/docs/quick-start/">Quick Start</a></li>
+        <li><a href="/users/user-guide/">User Guide</a></li>
+        <li><a href="/slides/">Slides</a></li>
+        <li><a href="/users/faq/">Common Questions</a></li>
+      </ul>
+    </div>
+    <div class="col">
+      <ul>
+        <p class="header">Contribute</p>
+        <li><a 
href="https://github.com/ServiceComb/ServiceComb.github.io/issues/new?title=Issue
 with _posts/2017-10-23-how-to-reform-a-legacy-system.md">Report a Doc 
Issue</a></li>
+        <li><a 
href="https://github.com/ServiceComb/ServiceComb.github.io/edit/master/_posts/2017-10-23-how-to-reform-a-legacy-system.md";>Edit
 This Page on Github</a></li>
+        <li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
+      </ul>
+    </div>
+    <div class="col">
+      <ul class="social-icons">
+        <p class="header">Community</p>
+        <li>
+            <a 
href="https://groups.google.com/forum/#!forum/servicecomb-developers"; 
target="_blank"><span class="group">Dev</span></a> |
+            <a 
href="https://groups.google.com/forum/#!forum/servicecomb-users"; 
target="_blank">User</span></a>
+        </li>
+        <li>
+            <a href="http://github.com/ServiceComb"; target="_blank"><span 
class="github">Github</span></a>
+        </li>
+        <li>
+            <a href="https://twitter.com/ServiceComb"; target="_blank"><span 
class="twitter">Twitter</span></a>
+        </li>
+        <li>
+            <a href="/feed.xml" target="_blank"><span 
class="rss">Feed</span></a>
+        </li>
+      </ul>
+    </div>
+  </div>
+</div>
+<div class="page__footer-bottom">
+  <div>&copy; 2017 Apache incubator ServiceComb. Powered by <a 
href="http://jekyllrb.com"; rel="nofollow">Jekyll</a> &amp; <a 
href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/"; 
rel="nofollow">Minimal Mistakes</a>.</div>
+</div>
+
+      </footer>
+    </div>
+
+    <script src="/assets/js/main.min.js"></script>
+
+
+
+
+  <script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new 
Date();a=s.createElement(o),
+  
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-101622733-1', 'auto');
+  ga('send', 'pageview');
+</script>
+
+
+
+
+
+
+
+  
+  <script>
+    (function ($) {
+    var $comments = $('.js-comments');
+
+    $('#new_comment').submit(function () {
+      var form = this;
+
+      $(form).addClass('disabled');
+      $('#comment-form-submit').html('<i class="fa fa-spinner fa-spin 
fa-fw"></i> Loading...');
+
+      $.ajax({
+        type: $(this).attr('method'),
+        url: $(this).attr('action'),
+        data: $(this).serialize(),
+        contentType: 'application/x-www-form-urlencoded',
+        success: function (data) {
+          $('#comment-form-submit').html('Submitted');
+          $('.page__comments-form .js-notice').removeClass('notice--danger');
+          $('.page__comments-form .js-notice').addClass('notice--success');
+          showAlert('Thanks for your comment! It will show on the site once it 
has been approved.');
+        },
+        error: function (err) {
+          console.log(err);
+          $('#comment-form-submit').html('Submit Comment');
+          $('.page__comments-form .js-notice').removeClass('notice--success');
+          $('.page__comments-form .js-notice').addClass('notice--danger');
+          showAlert('Sorry, there was an error with your submission. Please 
make sure all required fields have been completed and try again.');
+          $(form).removeClass('disabled');
+        }
+      });
+
+      return false;
+    });
+
+    function showAlert(message) {
+      $('.page__comments-form .js-notice').removeClass('hidden');
+      $('.page__comments-form .js-notice-text').html(message);
+    }
+  })(jQuery);
+  </script>
+
+
+
+
+
+
+
+  </body>
+</html>

Reply via email to