<!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.loli.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>
