<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"/>
  <title>highlights - Gearpump 0.7.2 Documentation</title>
  
   <meta name="description" content="Gearpump Technical Highlights">
  

  

  <link rel="stylesheet" href="css/bootstrap-3.3.5.min.css">
  <style>
    body {
      padding-top: 60px;
      padding-bottom: 40px;
    }
  </style>
  <link rel="stylesheet" href="css/main.css">
  <link rel="stylesheet" href="css/pygments-default.css">
  <script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
</head>
<body>
  <!--[if lt IE 7]>
    <p class="chromeframe">You are using an outdated browser. <a href="http://browsehappy.com/">Upgrade your browser today</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to better experience this site.</p>
  <![endif]-->

  <div class="navbar navbar-inverse navbar-fixed-top" id="topbar">
    <div class="container">
      <div class="navbar-header">
        <a class="navbar-brand" href="http://gearpump.io">Gearpump
          <span class="label label-primary" style="font-size: .6em">0.7.2</span>
        </a>
      </div>
      <div class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
          <li><a href="index.html">Overview</a></li>

          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="submit-your-1st-application.html">Submit Your 1st Application</a></li>
              <li><a href="commandline.html">Client Command Line</a></li>
              <li class="divider"></li>
              <li><a href="basic-concepts.html">Basic Concepts</a></li>
              <li><a href="features.html">Technical Highlights</a></li>
              <li><a href="message-delivery.html">Reliable Message Delivery</a></li>
              <li><a href="performance-report.html">Performance</a></li>
              <li><a href="gearpump-internals.html">Gearpump Internals</a></li>
            </ul>
          </li>

          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Deploying<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li class="dropdown-header">Deployment</li>
              <li><a href="deployment-docker.html">Docker</a><li>
              <li><a href="deployment-local.html">Local</a><li>
              <li><a href="deployment-standalone.html">Standalone</a></li>
              <li><a href="deployment-yarn.html">YARN</a></li>
              <li class="divider"></li>
              <li><a href="deployment-ha.html">High Availability</a></li>
              <li><a href="deployment-msg-delivery.html">Reliable Message Delivery</a></li>
              <li><a href="deployment-configuration.html">Configuration</a></li>
              <li class="divider"></li>
              <li><a href="deployment-security.html">Security</a></li>
            </ul>
          </li>

          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Programming Guide<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="dev-write-1st-app.html">Write Your 1st App</a></li>
              <li><a href="dev-custom-serializer.html">Customized Message Passing</a></li>
              <li class="divider"></li>
              <li><a href="api/scala/index.html">Scala API</a></li>
              <li><a href="api/java/index.html">Java API</a></li>
              <li><a href="dev-rest-api.html">RESTful API</a></li>
              <li class="divider"></li>
              <li><a href="dev-connectors.html">Gearpump Connectors</a></li>
              <li class="divider"></li>
              <li><a href="dev-storm.html">Storm Compatibility</a></li>
              <!--
              <li><a href="dev-samoa.html">Samoa Compatibility</a></li>
              <li class="divider"></li>
              <li><a href="dev-iot.html">Gearpump with IoT</a></li>
              -->
            </ul>
          </li>

          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="how-to-contribute.html">How to Contribute</a></li>
              <li><a href="coding-style.html">Coding Style</a></li>
              <li class="divider"></li>
              <li><a href="faq.html">FAQ</a><li>
              <li><a href="about.html">About</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="container" id="content">
   
    <h1 class="title">Gearpump Technical Highlights</h1>
   

   <h3 id="technical-highlights-of-gearpump">Technical highlights of Gearpump</h3>

<p>Gearpump is a performant, flexible, fault-tolerant, and responsive streaming platform with a lot of nice features, its technical highlights include:</p>

<h4 id="actors-everywhere">Actors everywhere</h4>

<p>The Actor model is a concurrency model proposed by Carl Hewitt at 1973. The Actor model is like a micro-service which is cohesive in the inside and isolated from other outside actors. Actors are the cornerstone of Gearpump, they provide facilities to do message passing, error handling, liveliness monitoring. Gearpump uses Actors everywhere; every entity within the cluster that can be treated as a service.</p>

<p><img src="img/actor_hierarchy.png" alt="Actor Hierarchy" /></p>

<h4 id="exactly-once-message-processing">Exactly once Message Processing</h4>

<p>Exactly once is defined as: the effect of a message will be calculated only once in the persisted state and computation errors in the history will not be propagated to future computations.</p>

<p><img src="img/exact.png" alt="Exact Once Semantics" /></p>

<h4 id="topology-dag-dsl">Topology DAG DSL</h4>

<p>User can submit to Gearpump a computation DAG, which contains a list of nodes and edges, and each node can be parallelized to a set of tasks. Gearpump will then schedule and distribute different tasks in the DAG to different machines automatically. Each task will be started as an actor, which is long running micro-service.</p>

<p><img src="img/dag.png" alt="DAG" /></p>

<h4 id="flow-control">Flow control</h4>

<p>Gearpump has built-in support for flow control. For all message passing between different tasks, the framework will assure the upstream tasks will not flood the downstream tasks.
<img src="img/flowcontrol.png" alt="Flow Control" /></p>

<h4 id="no-inherent-end-to-end-latency">No inherent end to end latency</h4>

<p>Gearpump is a message level streaming engine, which means every task in the DAG will process messages immediately upon receiving, and deliver messages to downstream immediately without waiting. Gearpump doesn&#8217;t do batching when data sourcing.</p>

<h4 id="high-performance-message-passing">High Performance message passing</h4>

<p>By implementing smart batching strategies, Gearpump is extremely effective in transferring small messages. In one test of 4 machines, the whole cluster throughput can reach 11 million messages per second, with message size of 100 bytes.
<img src="img/dashboard.png" alt="Dashboard" /></p>

<h4 id="high-availability-no-single-point-of-failure">High availability, No single point of failure</h4>

<p>Gearpump has a careful design for high availability. We have considered message loss, worker machine crash, application crash, master crash, brain-split, and have made sure Gearpump recovers when these errors may occur. When there is message loss, the lost message will be replayed; when there is a worker machine crash or application crash, the related computation tasks will be rescheduled on new machines. For master high availability, several master nodes will form a Akka cluster, and CRDTs (conflict free data types) are used to exchange the state, so as long as there is still a quorum, the master will stay functional. When one master node fails, other master nodes in the cluster will take over and state will be recovered.</p>

<p><img src="img/ha.png" alt="HA" /></p>

<h4 id="dynamic-computation-dag">Dynamic Computation DAG</h4>

<p>Gearpump provides a feature which allows the user to dynamically add, remove, or replace a sub graph at runtime, without the need to restart the whole computation topology.</p>

<p><img src="img/dynamic.png" alt="Dynamic DAG" /></p>

<h4 id="able-to-handle-out-of-order-messages">Able to handle out of order messages</h4>

<p>For a window operation like moving average on a sliding window, it is important to make sure we have received all messages in that time window so that we can get an accurate result, but how do we handle stranglers or late arriving messages? Gearpump solves this problem by tracking the low watermark of timestamp of all messages, so it knows whether we&#8217;ve received all the messages in the time window or not.</p>

<p><img src="img/clock.png" alt="Clock" /></p>

<h4 id="customizable-platform">Customizable platform</h4>

<p>Different applications have different requirements related to performance metrics, some may want higher throughput, some may require strong eventual data consistency; and different applications have different resource requirements profiles, some may demand high CPU performance, some may require data locality. Gearpump meets these requirements by allowing the user to arbitrate between different performance metrics and define customized resource scheduling strategies.</p>

<h4 id="built-in-dashboard-ui">Built-in Dashboard UI</h4>

<p>Gearpump has a built-in dashboard UI to manage the cluster and visualize the applications. The UI uses REST calls to connect with backend, so it is easy to embed the UI within other dashboards.</p>

<p><img src="img/dashboard.gif" alt="Dashboard" /></p>

<h4 id="data-connectors-for-kafka-and-hdfs">Data connectors for Kafka and HDFS</h4>

<p>Gearpump has built-in data connectors for Kafka and HDFS. For the Kafka connector, we support message replay from a specified timestamp.</p>


  </div> <!-- /container -->

  <script src="js/vendor/jquery-2.1.4.min.js"></script>
  <script src="js/vendor/bootstrap-3.3.5.min.js"></script>
  <script src="js/vendor/anchor-1.1.1.min.js"></script>
  <script src="js/main.js"></script>

  <!-- MathJax Section -->
  <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      TeX: { equationNumbers: { autoNumber: "AMS" } }
    });
  </script>
  <script>
    // Note that we load MathJax this way to work with local file (file://), HTTP and HTTPS.
    // We could use "//cdn.mathjax...", but that won't support "file://".
    (function(d, script) {
      script = d.createElement('script');
      script.type = 'text/javascript';
      script.async = true;
      script.onload = function(){
        MathJax.Hub.Config({
          tex2jax: {
            inlineMath: [ ["$", "$"], ["\\\\(","\\\\)"] ],
            displayMath: [ ["$$","$$"], ["\\[", "\\]"] ],
            processEscapes: true,
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
          }
        });
      };
      script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') +
        'cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
      d.getElementsByTagName('head')[0].appendChild(script);
    }(document));
  </script>
</body>
</html>
