<!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>[Milestone] Apache ServiceComb (incubating) Release Version 1.0.0 - Apache ServiceComb</title>




<meta name="description" content="Apache ServiceComb (incubating) enters new stage">




<meta name="author" content="Wang Kirin">

<meta property="og:locale" content="en">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="[Milestone] Apache ServiceComb (incubating) Release Version 1.0.0">


  <link rel="canonical" href="https://github.com/pages/apache/incubator-servicecomb-website/docs/release-note-1-0-0/">
  <meta property="og:url" content="https://github.com/pages/apache/incubator-servicecomb-website/docs/release-note-1-0-0/">



  <meta property="og:description" content="Apache ServiceComb (incubating) enters new stage">



  <meta name="twitter:site" content="@ServiceComb">
  <meta name="twitter:title" content="[Milestone] Apache ServiceComb (incubating) Release Version 1.0.0">
  <meta name="twitter:description" content="Apache ServiceComb (incubating) enters new stage">
  <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="2018-08-20T00:00:00+08:00">








  <script type="application/ld+json">
    {
      "@context" : "http://schema.org",
      "@type" : "Person",
      "name" : "Apache ServiceComb",
      "url" : "https://github.com/pages/apache/incubator-servicecomb-website",
      "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 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/vendor/prism/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?v=1">
<link rel="stylesheet" href="/assets/vendor/prism/prism.css?v=1">

<!--[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" onmouseleave="$('#childrenShow').css('display', 'none')">
  <div class="masthead__inner-wrap">
    <div class="masthead__menu">
      <nav id="site-nav" class="greedy-nav">
	      
          <a class="site-title active" href="/"><img src="https://www.apache.org/img/servicecomb.png"></a>
	      
        <ul class="visible-links">
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/">Home</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/developers/">Projects</a>
                
              </li>
            
          
            
          
          
            
            <li class="def-nav-li" onmouseenter="$('#childrenShow').css('display', 'block')">
              
              
              

              
                <a href="/docs/users/">Documentation</a>
              

              <ul id="childrenShow" class="def-children-show" onmouseleave="$('#childrenShow').css('display', 'none')">
                
                <li><a href="/docs/getting-started/" class="">getting started</a></li>
                
                <li><a href="/docs/users/" class="">Docs</a></li>
                
                <li><a href="/slides/" class="">Video</a></li>
                
                <li><a href="/faqs/" class="">FAQ</a></li>
                
              </ul>
            </li>
          
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/developers/contributing">Community</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/year-archive/">Blogs</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a class="active" href="/release/">Downloads</a>
                
              </li>
            
          
        </ul>
        <button><div class="navicon"></div></button>
        <ul class="hidden-links hidden"></ul>
        <div class="nav-lang">
          
            
            <a href=/cn/docs/release-note-1-0-0/>中文</a>
          
        </div>
      </nav>
    </div>
  </div>
</div>


    



<div id="main" role="main">
  
  <div class="sidebar sticky">
      
      <div class="back-to-home"><a href="/">Home</a> > [Milestone] Apache ServiceComb (incubating) Release Version 1.0.0</div>
      
  

<div itemscope itemtype="http://schema.org/Person">

  

  <div class="author__content">
    <h3 class="author__name" itemprop="name">Wang Qilin</h3>
    
      <p class="author__bio" itemprop="description">
	    
        I like opensource!!
	    
      </p>
    
  </div>

  <div class="author__urls-wrapper">
    <button class="btn btn--inverse">Follow</button>
    <ul class="author__urls social-icons">
      

      
        <li>
          <a href="https://github.com/wangkirin" itemprop="url">
            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
          </a>
        </li>
      

      
        <li>
          <a href="mailto:wangqilintech@gmail.com">
            <meta itemprop="email" content="wangqilintech@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="[Milestone] Apache ServiceComb (incubating) Release Version 1.0.0">
    <meta itemprop="description" content="Apache ServiceComb (incubating) enters new stage">
    <meta itemprop="datePublished" content="August 20, 2018">
    <meta itemprop="dateModified" content="June 14, 2018">

    <div class="page__inner-wrap">
      
        
          <header>
            <h1 class="page__title" itemprop="headline">[Milestone] Apache ServiceComb (incubating) Release Version 1.0.0
</h1>
            
              <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  4 minute read

</p>
            
          </header>
        
      

      <section class="page__content" itemprop="text">
        <p>​	Recently,  the Apache Foundation Incubation Project - Apache ServiceComb (incubating) officially released its  1.0.0 version  through community voting. The release this time includes Apache ServiceComb Java-Chassis (hereinafter referred to as Java-chassis) and Apache ServiceComb ServiceCenter (hereinafter referred to as ServiceCenter).</p>

<p>​	ServiceComb has entered the Apache Foundation since December 2017, and version 1.0.0-m1 released in March 2018  , 1.0.0-m2 in  June 2018 . Now in August 2018, the milestone of release -1.0.0  was completed.</p>

<p>​	 At present, 10+ companies have used ServiceComb for commercial use, the ServiceComb team has already participated in 10+ Meetups to give a speech. Besides, the ServiceComb community also  held 3 Meetups. The release of version 1.0.0 this time means that the ServiceComb version has officially entered a stable state on the premise of meeting the requirements of the Apache Software Foundation. The main new features and enhancements of ServiceComb Java-chassis and Service-center after entering the Apache Foundation incubation are as follows:</p>

<h2 id="java-chassis">Java-chassis</h2>

<ul>
  <li>New Metrics module; Added a large number of monitoring indicators; Support Prometheus integration</li>
  <li>Re-org the configuration center, support docking Ctrip Apollo as a configuration center, and easily extend the docking of other three-party configuration centers</li>
  <li>The POJO programming model allows users to use CompletableFuture asynchronous programming</li>
  <li>The POJO programming model allows users to use Object and Generic types as invoke parameters</li>
  <li>Upgrade Zipkin to Zipkin2, and support both v1 and v2 versions of Zipkin server</li>
  <li>Micro-service communication provides file stream capability and supports multimedia scenes such as music and pictures</li>
  <li>Added support for API level QPS control based on service level QPS control;</li>
  <li>Now we support using <code class="highlighter-rouge">servicecomb.flowcontrol.Consumer.qps.limit.[ServiceName].[Schema].[operation]</code> to config the API level QPS control</li>
  <li>Added  <code class="highlighter-rouge">scaffold</code> and <a href="http://start.servicecomb.io">start.servicecomb.io</a> to allow users quickly build projects and provide complete out-of-the-box capabilities
    <ul>
      <li> Now create a ServiceComb microservice can be quickly built by Apache Maven Archetype. For more details, please refer to <a href="https://github.com/apache/incubator-servicecomb-java-chassis/blob/master/archetypes/README.md">ServiceComb Java Chassis Archetypes</a> , or you can directly access <a href="http://start.servicecomb.io">start.servicecomb.io</a>  to use the  <code class="highlighter-rouge">SPRING INITIALIZR UI</code> intergated by ServiceComb .</li>
    </ul>
  </li>
  <li>Added a demonstration of how to build a ServiceComb project using <code class="highlighter-rouge">Gradle</code>
    <ul>
      <li>We added the Gradle configuration to the <a href="https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/bmi">BMI</a> project</li>
    </ul>
  </li>
  <li>
    <p>Asynchronous programming model supports <code class="highlighter-rouge">AsycRestTemplate</code></p>
  </li>
  <li>
    <p>Added support for the <code class="highlighter-rouge">http/2</code> protocol</p>
  </li>
  <li>
    <p>Implemented error injection interface that allows constructing an exception scenario by intercepting a service request. For example, setting the delay and error of a request to a specified microservice and its triggering probability</p>
  </li>
  <li>
    <p>Added service Dev running mode, support contract dynamic modification when Dev mode is enabled</p>
  </li>
  <li>
    <p>Implemented graceful downtime, anti-registration when the service is closed, ensuring that the accepted request is completed and the resources are fully released</p>
  </li>
  <li>
    <p>Extend the micro-service public-private key authentication mechanism and add the  blacklist and whitelist function</p>

    <ul>
      <li>ServiceCenter has already support control the registration of microservices through blacklist and whitelist. However, since microservices are directly connected to each other, the microservices themselves need to have independent blacklist and whitelist authentication.</li>
    </ul>
  </li>
  <li>
    <p>Support Cross-Origin Resource Sharing (CORS);</p>

    <ul>
      <li>For example, Ajax can directly access microservices.</li>
    </ul>
  </li>
  <li>
    <p>Expanded the Access Log mechanism of Rest Endpoint</p>

    <ul>
      <li>Previously users could only set the Access Log’s Pattern. Now users can further customize the Access Log Item.</li>
    </ul>
  </li>
  <li>
    <p>The SpringMVC programming model now also supports class objects as arguments</p>

    <ul>
      <li>Users can use class objects as parameters, for example：</li>
    </ul>

    <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nd">@RequestMapping</span><span class="o">(</span><span class="s">"/address"</span><span class="o">)</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">address</span><span class="o">(</span><span class="nc">Address</span> <span class="n">address</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Address</span> <span class="o">{</span>
	<span class="nc">String</span> <span class="n">country</span><span class="o">;</span>
	<span class="nc">String</span> <span class="n">city</span><span class="o">;</span>
<span class="o">}</span>
</code></pre></div>    </div>

    <p> will be automatically converted to<code class="highlighter-rouge">/address?city={city}&amp;country={country}</code></p>
  </li>
  <li>
    <p>Microservices deployed in web containers such as Tomcat, now support access path request services in conjunction with context path and servlet pattern</p>

    <ul>
      <li>For example,if  the calling path is<code class="highlighter-rouge">cse://service/a/b...</code>，can also  access via <code class="highlighter-rouge">cse://service/{context path}/{servlet pattern}/a/b...</code> after deployed in web containers such as Tomcat</li>
    </ul>
  </li>
  <li>
    <p>Automatically scan the package of the <code class="highlighter-rouge">main</code> function to simplify user configuration</p>
  </li>
  <li>
    <p>Provides a client ping mechanism that can detect if a client cache instance is available through ping extension. This feature is enabled by default, and the instance isolation function is used to isolate instances that fail to detect</p>
  </li>
  <li>When the microservices are downgraded or the instance is isolated, the corresponding event will be triggered, which facilitates third-party integration (reporting)</li>
</ul>

<h2 id="service-center">Service-center</h2>

<ul>
  <li>In total 3 releases has been done till date after incubation of Service-Center in Apache.</li>
  <li>With every release there has been a significant addition of features and improvements.(like PACT Broker, Async Rest Template, Log Rotation, ipv6 support, Backend Store extension, Schema Testing, Self Discovery from Consumer )</li>
  <li>With each release the stability of the Service-Center increased as more and more bugs were fixed.</li>
  <li>Performance has increased significantly as lot of API’s were optimized related to Service Discovery.</li>
  <li>Optimizations were done for Restful Clients and Plugin loaders.</li>
  <li>Seamless integration of metrics &amp; tracing were added in to improve the monitoring capabilities.</li>
  <li>Security was improved in terms of Service Discovery based on rules, default TLS Cipher Suites were added.</li>
  <li>Event driven mechanisms were adopted for Service-Dependency management.</li>
  <li>Better management of data was implemented in case of recovery management.</li>
  <li>Efforts were made to make the ETCD connection resilient and self healing.</li>
  <li>Support for Async rest template and ipv6 supports were added.</li>
  <li>Concrete License Management has been done to give full credits to the authors of third party dependencies used in the project.</li>
  <li>Support for deployement of Service-Centere in multiple infrastructures has been added.</li>
  <li>The Web Management Console was completely re-designed to provide better functionalities and user friendly.</li>
</ul>

        
      </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/#microservice" class="page__taxonomy-item" rel="tag">microservice</a><span class="sep">, </span>
    
      
      
      <a href="/tags/#release" class="page__taxonomy-item" rel="tag">release</a><span class="sep">, </span>
    
      
      
      <a href="/tags/#version" class="page__taxonomy-item" rel="tag">version</a>
    
    </span>
  </p>





        
          
            
              <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2018-06-14">June 14, 2018</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=[Milestone] Apache ServiceComb (incubating) Release Version 1.0.0 /docs/release-note-1-0-0/" 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/release-note-1-0-0/" 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/release-note-1-0-0/" 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/release-note-1-0-0/" 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/release-note-1-0-0" class="pagination--pager" title="[里程碑]Apache ServiceComb 1.0.0版本正式发布
">Previous</a>
    
    
      <a href="/cn/docs/crm-part-I/" class="pagination--pager" title="客户管理系统微服务化实战-PartI
">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/apache/incubator-servicecomb-website/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="release-note-1-0-0">
            <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/playing-on-the-open-source-community-with-Apache-ServiceComb-GDUT/" rel="permalink">与Apache ServiceComb一起玩开源-广工站 (PPT Download)
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">与Apache ServiceComb一起玩开源-广工站 (PPT Download)
</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="/cn/docs/servicecomb-service-center-client/" rel="permalink">使用ServiceComb客户端轻松调用ServiceCenter
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">使用ServiceComb客户端轻松调用ServiceCenter
</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/playing-on-the-open-source-community-with-Apache-ServiceComb-BUPT/" rel="permalink">与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
</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/servicecomb-accept-newcapec-institute-code-donation/" rel="permalink">Apache ServiceComb Accept Code Donation From NewCapec Institute
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">Apache ServiceComb Accept Code Donation From NewCapec Institute
</p>
    
      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  less than 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/getting-started/">Getting started</a></li>
        <li><a href="/docs/users/">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">ASF</p>
        <li><a href="http://www.apache.org">Foundation</a></li>
        <li><a href="http://www.apache.org/licenses/">License</a></li>
        <li><a href="http://www.apache.org/events/current-event">Events</a></li>
        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
      </ul>
    </div>
    <div class="col">
      <ul>
        <p class="header">Contribute</p>
        <li><a href="http://issues.apache.org/jira/browse/SCB">Report a Doc Issue</a></li>
        <li><a href="https://github.com/apache/servicecomb-website/edit/master/_posts/2018-8-20-release-note-1-0-0.md">Edit This Page on Github</a></li>
        <li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
        <li><a href="/security">Security</a></li>
      </ul>
    </div>
    <div class="col">
      <ul class="social-icons">
        <p class="header">Community</p>
        <li>
            <a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">Mailing List</span></a>
        </li>
        <li>
            <a href="https://github.com/apache?q=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; 2019 Apache 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>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</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>
