<!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>Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day - Apache ServiceComb</title>




<meta name="description" content="Real time updated information of Apache ServiceComb (incubating) Day">




<meta name="author" content="Zen Lin">

<meta property="og:locale" content="en">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day">


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



  <meta property="og:description" content="Real time updated information of Apache ServiceComb (incubating) Day">



  <meta name="twitter:site" content="@ServiceComb">
  <meta name="twitter:title" content="Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day">
  <meta name="twitter:description" content="Real time updated information of Apache ServiceComb (incubating) Day">
  <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-06-14T00: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-en" 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 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/apache-servicecomb-incubating-day/>中文</a>
          
        </div>
      </nav>
    </div>
  </div>
</div>


    



<div id="main" role="main">
  
  <div class="sidebar sticky">
      
      <div class="back-to-home"><a href="/">Home</a> > Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day</div>
      
  

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

  

  <div class="author__content">
    <h3 class="author__name" itemprop="name">Zen Lin</h3>
    
      <p class="author__bio" itemprop="description">
	    
        To enjoy in opensource community.
	    
      </p>
    
  </div>

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

      
        <li>
          <a href="http://zenlintechnofreak.github.io" itemprop="url">
            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
          </a>
        </li>
      

      
        <li>
          <a href="mailto:zenlintechnofreak@gmail.com">
            <meta itemprop="email" content="zenlintechnofreak@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="Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day">
    <meta itemprop="description" content="Real time updated information of Apache ServiceComb (incubating) Day">
    <meta itemprop="datePublished" content="June 14, 2018">
    <meta itemprop="dateModified" content="June 14, 2018">

    <div class="page__inner-wrap">
      
        
          <header>
            <h1 class="page__title" itemprop="headline">Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day
</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><strong>Apache ServiceComb (incubating) Day</strong></p>

<p>​  <br />
​  <br />
The microservice open source project - Apache ServiceComb (incubating) will host a Open Day Meetup at the China National Convention Center (Beijing, China) from 11.00am to 17.30pm on Wednesday, June 27th.</p>

<p>The Open Day will focus on the following aspects and discuss the technology and direction of microservices with enterprises, users and developers.</p>

<p>​</p>

<p>- Interpretation of the Apache community</p>

<p>- Business Microservices Commercial Case Sharing</p>

<p>- Overview of ServiceComb Community and Technology Sharing</p>

<p>- Domain-Driven Design (DDD) in Microservices</p>

<p>​  <br />
​</p>

<p><strong>Event Date/Time</strong>: Wednesday, June 27, 2018, 11:00 – 17:30</p>

<p><strong>Event Location</strong>: Room 211, China National Convention Center, Beijing, China</p>

<p><strong>Event Cost</strong>: Complimentary, go up to the Room 211 using the elevators to level 2.</p>

<p>​  <br />
​</p>

<p><strong><em>About Apache ServiceComb (incubating) project:</em></strong></p>

<p>​         <em>The main code of the Apache ServiceComb (incubating) Project was donated by Huawei Cloud. The project is dedicated to help enterprises easily build cloud native applications and help build microservices from traditional enterprise business. By providing a series of solutions, Apache ServiceComb (incubating) helps users to develop microservices quickly and operate maintenance efficiently of these microservices applications, with a full microservices technology stack, without vendor lock-in. Currently, ServiceComb is following the “Apache Way”. It is used in HUAWEI businesses such as Consumer Cloud, Cloud EI, Cloud Security, Cloud Core Network, also popular in non-HUAWEI users, such as iSoftStone, pactera, hulingwulian Technology, ceewa, medsci, Hang Ling Technology, Gaomaizhiyuan Technology, etc. The developers are also increasingly diversified.</em></p>

<p>This is a free Open Meetup organized by the Apache ServiceComb (incubating) community and sponsored by Huawei Cloud. We have invited several experts and engineers from commercial enterprises, Apache Foundation, ServiceComb community and HUAWEI to share their experiences. Detailed agenda as follows:</p>

<p>​</p>

<p><strong>How Apache Works</strong></p>

<p><strong>Time:</strong> 1100-1200</p>

<p><strong>Speaker</strong>: Jean-Baptiste Onofré; Apache Member, fellow of Talend, who started work on the Apache Software Foundation in 2004, and PMC member of 20+ Apache projects such as Karaf, Camel, and Carbondata.</p>

<p><strong>Abstract:</strong></p>

<p>In-depth interpretation of the world’s largest open source software foundation – Apache Software Foundation. Introduce what is the “Apache Way” and its attraction, the whole process from open source to incubation and then graduated combined with actual project. Besides, it will introduce the current incubating status of ServiceComb.</p>

<p><strong>ServiceComb Roadmap</strong></p>

<p><strong>Time:</strong> 1330-1345</p>

<p><strong>Speaker:</strong> Jiang Ning, Apache Member, Huawei Opensource Expert.</p>

<p><strong>Abstract</strong>:</p>

<p>Introduce Vision, current status, technology Roadmap and community activities of Apache ServiceComb (incubating) community.</p>

<p>​</p>

<p><strong>How Smart City Microserviced Based on ServiceComb from iSoftStone</strong></p>

<p><strong>Time:</strong> 1345-1415</p>

<p><strong>Speaker</strong>: Bao Yongwei; VP of iSoftStone Smart City Business, focusing on implementation and innovations in smart city related to cloud computing and big data.</p>

<p><strong>Abstract</strong>:</p>

<p>iSoftStone Smart City Business involves a large number of systems with complex interactions. During the process of microservices implementation, it faced inappropriate microservices granularity, high code duplication rate, and difficulty in deployment of large application microservices. This speech will introduce how iSoftStone use ServiceComb, especially ServiceComb’s Swagger API, to resolve the pain points of microservices process, enable interoperability and decoupled chimney  systems to meet the challenges of microservices diversity in smart city.</p>

<p>​</p>

<p><strong>Detailed Introduction of Java SDK and Service  Center</strong></p>

<p><strong>Time:</strong> 1415-1445</p>

<p><strong>Speaker:</strong> Wu Jiminm,  Apache ServiceComb (incubating) PPMC, Original Author of Huawei Cloud Service Engine</p>

<p><strong>Abstract:</strong> </p>

<p>Introduce technical details of Java SDK and Service  Center from ServiceComb.</p>

<p>​</p>

<p>​</p>

<p><strong>Millions Users Solution Based on ServiceComb Microservices from Huawei Consumer Cloud</strong></p>

<p><strong>Time:</strong> 1445-1515</p>

<p><strong>Speaker</strong>: Li Linfeng, microservices architect for Huawei’s Consumer Cloud application market, who has years of experience in designing and developing platform middleware, cloud platforms, and microservices. Author of “Netty authoritative guide” and “The principle and practice of distributed service framework”.</p>

<p><strong>Abstract</strong>:</p>

<p>Huawei Consumer Cloud services provide high-quality cloud services for hundreds of millions of Huawei end users in more than 100 countries. In order to support the rapid development of the business, it is necessary to drive delivery of value requirements efficiently and agilely through the microservices architecture. By using SpringMVC and transparent RPC development model from ServiceComb, the existing business code can be migrated to the new microservices architecture at a low cost. Besides, the business implements full-stack asynchronous transformation using the Reactive asynchronous programming model from ServiceComb. Compared with the traditional synchronous blocking service call, the performance is improved several times, but the resource loss is greatly reduced. More practical cases will be shown on this topic.</p>

<p>​</p>

<p><strong>Domain Driven Design (DDD) in Microservices</strong></p>

<p><strong>Time:</strong> 1525-1555</p>

<p><strong>Speaker</strong>: Wang Lei, pioneer of microservices in China, author of “Microservices Architecture and Practice”, Huawei Microservices Expert, and former ThoughtWorks Chief Consultant.</p>

<p><strong>Abstract</strong>:</p>

<p>As a new architecture style, microservice has been widely adopted by the industry. It has become a fulfillment tool for the concept of DDD-driven design. This topic shares how to practice microservice with Domain Driven Design philosophy friendly.</p>

<p>​</p>

<p><strong>Detailed Introduction of Transaction Consistency Solution from ServiceComb-Saga</strong></p>

<p><strong>Time</strong>: 1555-1625</p>

<p><strong>Speaker:</strong>  Jiang Ning Apache Member, Huawei Opensource Expert.</p>

<p><strong>Abstract</strong>:</p>

<p>Share ServiceComb’s distributed transaction Saga solution and best practices.</p>

<p>​</p>

<p><strong>Thinking about ServiceMesh in ServiceComb</strong></p>

<p><strong>Time:</strong> 1625-1730</p>

<p><strong>Speaker</strong>: Tian Xiaoliang, Architect in Service Mesh from Huawei Cloud.</p>

<p><strong>Abstract</strong>:</p>

<p>Share ServiceComb’s latest thinking on Service Mesh, and ServiceMesh’s practice in Huawei Cloud.</p>

<p>​</p>

<p>​   <br />
<strong>If you want to freely visit the LC3 booth except attending the meet up , please go to our Gitter to inquire:</strong> <br />
<a href="https://gitter.im/ServiceCombUsers/Lobby">ServiceComb Gitter Room</a></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/#meetup" class="page__taxonomy-item" rel="tag">Meetup</a><span class="sep">, </span>
    
      
      
      <a href="/tags/#microservice" class="page__taxonomy-item" rel="tag">microservice</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=Microservice Meetup: Detailed Agenda of Apache ServiceComb (incubating) Day /docs/apache-servicecomb-incubating-day/" 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/apache-servicecomb-incubating-day/" 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/apache-servicecomb-incubating-day/" 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/apache-servicecomb-incubating-day/" 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/how-to-grow-up-to-be-an-apache-committer/" class="pagination--pager" title="如何从一名开源小白成长为Apache Committer
">Previous</a>
    
    
      <a href="/cn/docs/apache-servicecomb-incubating-day/" class="pagination--pager" title="微服务 Meetup：Apache ServiceComb (incubating) Day 详细议程
">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="apache-servicecomb-incubating-day">
            <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-06-14-apache-servicecomb-incubating-day.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; 2020 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>
