<!DOCTYPE html>
<html lang="en">

  <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>Apache DistributedLog Documentation</title>
  <meta name="description" content="Apache DistributedLog is an high performance replicated log.
">

  <link rel="stylesheet" href="/distributedlog/docs/0.4.0-incubating/styles/site.css">
  <link rel="stylesheet" href="/distributedlog/docs/0.4.0-incubating/css/theme.css">
  <!-- JQuery -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <script src="/distributedlog/docs/0.4.0-incubating/js/bootstrap.min.js"></script>
  <link rel="canonical" href="http://bookkeeper.apache.org/distributedlog/distributedlog/docs/0.4.0-incubating/" data-proofer-ignore>
  <link rel="alternate" type="application/rss+xml" title="Apache DistributedLog (incubating)" href="http://bookkeeper.apache.org/distributedlog/distributedlog/docs/0.4.0-incubating/feed.xml">
  <!-- Font Awesome -->
  <script src="//cdnjs.cloudflare.com/ajax/libs/anchor-js/3.2.0/anchor.min.js"></script>
  <!-- Google Analytics -->
  <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-83870961-1', 'auto');
  ga('send', 'pageview');
  </script>
  <!-- End Google Analytics -->
  <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
</head>


  <body role="document">

    
<nav class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <a href="/distributedlog" class="navbar-brand" >
        <img alt="Brand" style="height: 28px" src="/distributedlog/docs/0.4.0-incubating/images/distributedlog_logo_navbar.png">
      </a>
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
    </div>
    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav">
        <!-- Overview -->
        <li><a href="/distributedlog/docs/0.4.0-incubating/">V0.4.0</a></li>
        <!-- Concepts -->
        <li><a href="/distributedlog/docs/0.4.0-incubating/basics/introduction">Concepts</a></li>
        <!-- Quick Start -->
        <li>
          <a href="/distributedlog/docs/0.4.0-incubating/start" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Start<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/start/building.html">
                Build DistributedLog from Source
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/start/download.html">
                Download Releases
              </a>
            </li>
            
            <li role="separator" class="divider"></li>
            <li class="dropdown-header"><strong>Quickstart</strong></li>
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/start/quickstart.html">
                Setup & Run Example
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-1.html">
                API - Write Records (via core library)
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-2.html">
                API - Write Records (via write proxy)
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-5.html">
                API - Read Records
              </a>
            </li>
            
            <li role="separator" class="divider"></li>
            <li class="dropdown-header"><strong>Deployment</strong></li>
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/deployment/cluster.html">
                Cluster Setup
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/deployment/global-cluster.html">
                Global Cluster Setup
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/deployment/docker.html">
                Docker
              </a>
            </li>
            
          </ul>
        </li>
        <!-- API -->
        <li>
          <a href="/distributedlog/docs/0.4.0-incubating/start" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">API<span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu">
            <li><a href="/distributedlog/docs/0.4.0-incubating/api/java">Java</a></li>
          </ul>
        </li>
        <!-- User Guide -->
        <li class="dropdown">
		      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">User Guide<span class="caret"></span></a>
          <ul class="dropdown-menu">
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/basics/introduction.html">
                Introduction
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/considerations/main.html">
                Considerations
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/architecture/main.html">
                Architecture
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/api/main.html">
                API
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/configuration/main.html">
                Configuration
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/design/main.html">
                Detail Design
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/globalreplicatedlog/main.html">
                Global Replicated Log
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/implementation/main.html">
                Implementation
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/user_guide/references/main.html">
                References
              </a>
            </li>
            
          </ul>
        </li>
        <!-- Admin Guide -->
        <li class="dropdown">
		      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Admin Guide<span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="/distributedlog/docs/0.4.0-incubating/deployment/cluster">Cluster Setup</a></li>
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/operations.html">
                Operations
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/loadtest.html">
                Load Test
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/performance.html">
                Performance Tuning
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/hardware.html">
                Hardware
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/monitoring.html">
                Monitoring
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/zookeeper.html">
                ZooKeeper
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/bookkeeper.html">
                BookKeeper
              </a>
            </li>
            
          </ul>
        </li>
        <!-- Tutorials -->
        <li class="dropdown">
		      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Tutorials<span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li class="dropdown-header"><strong>Basic</strong></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-1">Write Records (via Core Library)</a></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-2">Write Records (via Write Proxy)</a></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-3">Write Records to multiple streams</a></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-4">Atomic Write Records</a></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-5">Tailing Read Records</a></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-6">Rewind Read Records</a></li>
            <li role="separator" class="divider"></li>
            <li class="dropdown-header"><strong>Messaging</strong></li>
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/messaging-1.html">
                Write records to partitioned streams
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/messaging-2.html">
                Write records to multiple streams (load balancer)
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/messaging-3.html">
                At-least-once Processing
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/messaging-4.html">
                Exact-Once Processing
              </a>
            </li>
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/messaging-5.html">
                Implement a kafka-like pub/sub system
              </a>
            </li>
            
            <li role="separator" class="divider"></li>
            <li class="dropdown-header"><strong>Replicated State Machines</strong></li>
            
            
            <li>
              <a href="/distributedlog/docs/0.4.0-incubating/tutorials/replicatedstatemachines.html">
                Build replicated state machines
              </a>
            </li>
            
            <li role="separator" class="divider"></li>
            <li class="dropdown-header"><strong>Analytics</strong></li>
            <li><a href="/distributedlog/docs/0.4.0-incubating/tutorials/analytics-mapreduce">Process log streams using MapReduce</a></li>
          </ul>
        </li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</nav>


<link rel="stylesheet" href="">


    <div class="container" role="main">

      <div class="row">
        
        <!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<div class="col-md-8 col-md-offset-2">
  <!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<h1 id="overview">Overview</h1>

<p>This documentation is for Apache DistributedLog version 0.4.0-incubating.</p>

<p>Apache DistributedLog is a high-throughput, low-latency replicated log service, offering durability,
replication and strong consistency as essentials for building reliable real-time applications.</p>

<h2 id="first-steps">First Steps</h2>

<ul>
  <li>
    <p><strong>Concepts</strong>: Start with the <a href="/distributedlog/docs/0.4.0-incubating/basics/introduction">basic concepts</a> of DistributedLog.
This will help you to fully understand the other parts of the documentation, including the setup, integration,
and operation guides. It is highly recommended to read this first.</p>
  </li>
  <li>
    <p><strong>Quickstarts</strong>: <a href="/distributedlog/docs/0.4.0-incubating/start/quickstart">Run DistributedLog</a> on your local machine or follow the tutorial to <a href="/distributedlog/docs/0.4.0-incubating/tutorials/basic-1">write a simple program</a> to interact with <em>DistributedLog</em>.</p>
  </li>
  <li>
    <p><strong>Setup</strong>: The <a href="/distributedlog/docs/0.4.0-incubating/deployment/docker">docker</a> and <a href="/distributedlog/docs/0.4.0-incubating/deployment/cluster">cluster</a> setup guides show how to deploy DistributedLog Stack.</p>
  </li>
  <li>
    <p><strong>Programming Guide</strong>: You can check out our guides about <a href="/distributedlog/docs/0.4.0-incubating/basics/introduction">basic concepts</a> and the <a href="/distributedlog/docs/0.4.0-incubating/user_guide/api/core">Core Library API</a> or <a href="/distributedlog/docs/0.4.0-incubating/user_guide/api/proxy">Proxy Client API</a> to learn how to use DistributedLog to build your reliable real-time services.</p>
  </li>
</ul>

<h2 id="next-steps">Next Steps</h2>

<ul>
  <li>
    <p><strong>Design Documents</strong>: Learn about the <a href="/distributedlog/docs/0.4.0-incubating/user_guide/architecture/main">architecture</a>, <a href="/distributedlog/docs/0.4.0-incubating/user_guide/design/main">design considerations</a> and <a href="/distributedlog/docs/0.4.0-incubating/user_guide/implementation/main">implementation details</a> of DistributedLog.</p>
  </li>
  <li>
    <p><strong>Tutorials</strong>: You can check out the <a href="/distributedlog/docs/0.4.0-incubating/tutorials/main">tutorials</a> on how to build real applications.</p>
  </li>
  <li>
    <p><strong>Operation Guide</strong>: You can check out our guides about how to <a href="/distributedlog/docs/0.4.0-incubating/admin_guide/main">operate</a> the DistributedLog Stack.</p>
  </li>
</ul>

</div>



      </div>


    <hr>
  <div class="row">
      <div class="col-xs-12">
          <footer>
              <p class="text-center">&copy; Copyright 2016
                  <a href="http://www.apache.org">The Apache Software Foundation.</a> All Rights Reserved.
              </p>
              <p class="text-center">
                  <a href="/distributedlog/docs/0.4.0-incubating/feed.xml">RSS Feed</a>
              </p>
          </footer>
      </div>
  </div>
  <!-- container div end -->
</div>


    <script>
  (function () {
    'use strict';
    anchors.options.placement = 'right';
    anchors.add();
  })();
</script>

  </body>

</html>
