<!DOCTYPE html>
<html>
  <head>
    <title>Apache BookKeeper&trade; - BP-38: Publish Bookie Service Info on Metadata Service</title>

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

<link rel="stylesheet" href="/css/normalize.css">
<link rel="stylesheet" href="/css/tippy.css">
<link rel="stylesheet" href="/css/style.css">

<link rel="shortcut icon" href="/img/favicon.ico">

<script src="/js/tippy.min.js"></script>

<script type="text/javascript">
  var shiftWindow = function() { scrollBy(0, -25); };
  window.addEventListener("hashchange", shiftWindow);
  window.addEventListener("pageshow", shiftWindow);
  function load() { if (window.location.hash) shiftWindow(); }
</script>
  </head>
  <body class="body">
    <main class="main">
      
<nav class="navbar bk-topnav">
  <div class="navbar-brand">
    <a class="navbar-item bk-brand" href="/">
      Apache BookKeeper&trade;
    </a>

    <div class="navbar-burger burger" data-target="bkNav">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </div>

  <div id="bkNav" class="navbar-menu">
    <div class="navbar-start">
      <div class="navbar-item has-dropdown is-hoverable">
        <a class="navbar-link">Documentation</a>
        <div class="navbar-dropdown is-boxed">
          <a class="navbar-item" href="/docs/latest/overview/overview">
            Version 4.15.0-SNAPSHOT
            <span class="tag is-warning">Development</span>
          </a>
          <a class="navbar-item" href="/docs/latest/api/javadoc">
            <span class="icon bk-javadoc-icon">
              <img src="/img/java-icon.svg">
            </span>
            Javadoc
          </a>
          <hr class="dropdown-divider">
          
          <a class="navbar-item" href="/docs/4.14.0/overview/overview">
            Release 4.14.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.13.0/overview/overview">
            Release 4.13.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.12.1/overview/overview">
            Release 4.12.1
            
          </a>
          
          <a class="navbar-item" href="/docs/4.12.0/overview/overview">
            Release 4.12.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.11.1/overview/overview">
            Release 4.11.1
            
              <span class="tag is-success">Stable</span>
            
          </a>
          
          <a class="navbar-item" href="/docs/4.11.0/overview/overview">
            Release 4.11.0
            
          </a>
          
          <a class="navbar-item" href="/docs/4.10.0/overview/overview">
            Release 4.10.0
            
          </a>
          
          
          <a class="navbar-item" href="/archives/docs/r4.9.2">
            Release 4.9.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.9.1">
            Release 4.9.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.9.0">
            Release 4.9.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.8.2">
            Release 4.8.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.8.1">
            Release 4.8.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.8.0">
            Release 4.8.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.3">
            Release 4.7.3
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.2">
            Release 4.7.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.1">
            Release 4.7.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.7.0">
            Release 4.7.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.6.2">
            Release 4.6.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.6.1">
            Release 4.6.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.6.0">
            Release 4.6.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.5.1">
            Release 4.5.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.5.0">
            Release 4.5.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.4.0">
            Release 4.4.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.3.2">
            Release 4.3.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.3.1">
            Release 4.3.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.3.0">
            Release 4.3.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.4">
            Release 4.2.4
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.3">
            Release 4.2.3
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.2">
            Release 4.2.2
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.1">
            Release 4.2.1
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.2.0">
            Release 4.2.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.1.0">
            Release 4.1.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
          <a class="navbar-item" href="/archives/docs/r4.0.0">
            Release 4.0.0
            
              <span class="tag is-warning">EOL</span>
            
          </a>
          
        </div>
      </div>

      <div class="navbar-item has-dropdown is-hoverable">
        <a class="navbar-link">Community</a>
        <div class="navbar-dropdown is-boxed">
          <a class="navbar-item" href="/community/mailing-lists">Mailing lists</a>
          <a class="navbar-item" href="/community/slack">Slack</a>
          <a class="navbar-item" href="https://github.com/apache/bookkeeper/issues">Github Issues</a>
          <a class="navbar-item" href="/community/releases">Release Management</a>
          <a class="navbar-item" href="/community/meeting">Community Meetings</a>
          <hr class="dropdown-divider">
          <a class="navbar-item" href="/community/contributing">Contribution Guide</a>
          <a class="navbar-item" href="/community/coding_guide">Coding Guide</a>
          <a class="navbar-item" href="/community/testing">Testing Guide</a>
          <a class="navbar-item" href="/community/issue-report">Issue Report Guide</a>
          <a class="navbar-item" href="/community/release_guide">Release Guide</a>
          <hr class="dropdown-divider">
          <a class="navbar-item" href="/community/presentations">Presentations</a>
          <a class="navbar-item" href="/community/bookkeeper_proposals">BookKeeper Proposals</a>
        </div>
      </div>

      <div class="navbar-item has-dropdown is-hoverable">
        <a class="navbar-link">Project</a>
        <div class="navbar-dropdown is-boxed">
          <a class="navbar-item" href="/project/who">Who are we?</a>
          <a class="navbar-item" href="/project/bylaws">Bylaws</a>
          <a class="navbar-item" href="http://www.apache.org/licenses/">License</a>
          <hr class="dropdown-divider">
          <a class="navbar-item" href="/project/privacy">Privacy policy</a>
          <a class="navbar-item" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
          <a class="navbar-item" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
        </div>
      </div>
    </div>

    <div class="navbar-end">
      <div class="navbar-item">
        <div class="field is-grouped">
          <p class="control">
            <a class="button bk-twitter" href="https://twitter.com/asfbookkeeper">
              <span class="icon">
                <i class="fa fa-twitter"></i>
              </span>
              <span>Twitter</span>
            </a>
          </p>
          <p class="control">
            <a class="button" href="https://github.com/apache/bookkeeper">
              <span class="icon">
                <i class="fa fa-github"></i>
              </span>
              <span>GitHub</span>
            </a>
          </p>
          <p class="control">
            <a class="button is-primary" href="/releases">
              <span class="icon">
                <i class="fa fa-download"></i>
              </span>
              <span>Download</span>
            </a>
          </p>
        </div>
      </div>
    </div>
  </div>
</nav>


      <div class="bk-community-container">
  <div class="columns">
    <div class="column is-12">
      <header class="docs-title">
        <nav class="level">
          <div class="level-left">
            <div class="level-item">
              <h1 class="title">BP-38: Publish Bookie Service Info on Metadata Service</h1>
            </div>
          </div>
          
        </nav>

        
      </header>

      <hr />

      <div class="content is-medium">
        <section class="bk-community-content">
          <h3 id="motivation">Motivation</h3>

<p>Bookie server exposes several services and some of them are optional: the binary BookKeeper protocol endpoint, the HTTP service, the StreamStorage service, a Metrics endpoint.</p>

<p>Currently (in BookKeeper 4.10) the client can only discover the main Bookie endpoint:
the main BookKeeper binary RPC service.
Discovery of the TCP address is implicit, because the <em>id</em> of the bookie is made of the same host:port that point to the TCP address of the Bookie service.</p>

<p>With this proposal we are now introducing a way for the Bookie to advertise the services it exposes, basically the Bookie will be able to store on the Metadata Service a structure that describes the list of  <em>available services</em>.</p>

<p>We will also allow to publish a set of additional unstructured properties in form of a key-value pair that will be useful for futher implementations.</p>

<p>This information will be also useful for Monitoring and Management services as it will enable full discovery of the capabilities of all of the Bookies in a cluster just by having read access to the Metadata Service.</p>

<h3 id="public-interfaces">Public Interfaces</h3>

<p>On the Registration API, we introduce a new data structure that describes the services
exposed by a Bookie:</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>interface BookieServiceInfo {
    class Endpoint {
        String name;
        String hostname;
        int port;
        String protocol; // "bookie-rpc", "http", "https"....      
    }
    List&lt;Endpoint&gt; endpoints;
    Map&lt;String, String&gt; properties; // additional properties
}

</code></pre></div></div>

<p>In RegistrationClient interface we expose a new method:</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CompletableFuture&lt;Versioned&lt;BookieServiceInfo&gt;&gt; getBookieServiceInfo(String bookieId)
</code></pre></div></div>

<p>The client can derive bookieId from a BookieSocketAddress. He can access the list of available bookies using <strong>RegistrationClient#getAllBookies()</strong> and then use this new method to get the details of the services exposed by the Bookie.</p>

<p>On the Bookie side we change the RegistrationManager interface in order to let the Bookie
advertise the services:</p>

<p>in RegistrationManager class the <strong>registerBookie</strong> method</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>void registerBookie(String bookieId, boolean readOnly)
</code></pre></div></div>

<p>becomes</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>void registerBookie(String bookieId, boolean readOnly, BookieServiceInfo bookieServieInfo)
</code></pre></div></div>

<p>It will be up to the implementation of RegistrationManager and RegistrationClient to serialize
the BookieServiceInfo structure.</p>

<p>For the ZooKeeper based implementation we are going to store such information in Protobuf binary format, as currently this is the format used for every other kind of metadata (the example here is in JSON-like for readability purposes):</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
    "endpoints": [
        {
         "name": "bookie",
         "hostname": "localhost",
         "port": 3181,
         "protocol": "bookie-rpc"
        },
        {
         "name": "bookie-http-server",
         "hostname": "localhost",
         "port": 8080,
         "protocol": "http"
        }
    ],
    properties {
        "property": "value",
        "property2": "value2"
    }
}
</code></pre></div></div>
<p>Such information will be stored inside the ‘/REGISTRATIONPATH/available’ znode (or /REGISTRATIONPATH/available/readonly’ in case of readonly bookie), these paths are the same used in 4.10, but in 4.10 we are writing empty znodes.</p>

<p>The rationale around this choice is that the client is already using these znodes in order to discover available bookies services.</p>

<p>It is possible that such endpoint information change during the lifetime of a Bookie, like after rebooting a machine and the machine gets a new network address.</p>

<p>It is out of the scope of this proposal to change semantics of ledger metadata, in which we  are currently storing directly the network address of the bookies, but with this proposal we are preparing the way to have an indirection and separate the concept of Bookie ID from the Network address.</p>

<p><strong>Endpoint structure</strong></p>
<ul>
  <li><strong>name</strong>: this is an id for the service type, like ‘bookie’</li>
  <li><strong>hostname</strong>: the hostname (or a raw IP address)</li>
  <li><strong>port</strong>: the TCP port (int)</li>
  <li><strong>protocol</strong>: the type of service (bookie-rpc, http, https)</li>
</ul>

<p><strong>Well known additional properties</strong></p>
<ul>
  <li><strong>autorecovery.enabled</strong>: ‘true’ case of the presence of the auto recovery daemon</li>
</ul>

<p>The GRPC service would use this mechanism as well.</p>

<h4 id="which-kind-of-properties-should-be-stored-in-bookieserviceinfo-">Which kind of properties should be stored in BookieServiceInfo ?</h4>

<p>We should store here only the minimal set of information useful to reach the bookie in an efficient way.
So we are not storing on the Metadata Service information about the internal state of the server: if you know the address of an HTTP endpoint you can use the REST API to query the Bookie for its state.</p>

<p>These properties may change during the lifetime of a Bookie, think about a configuration (change network address) or a dynamic assigned DNS name.</p>

<p>It is better not to expose the version of the Bookie, if the client wants to use particular features of the Bookie this should be implemented on the protocol itself, not just by using the version. The version of the Bookie could be exposed on the HTTP endpoint.</p>

<h3 id="proposed-changes">Proposed Changes</h3>

<p>See the ‘Public interfaces’ section.</p>

<h3 id="compatibility-deprecation-and-migration-plan">Compatibility, Deprecation, and Migration Plan</h3>

<p>The proposed change will be compatible with all existing clients.</p>

<p>In case a new client is reading an empty znode it will assume a default configuration with a single ‘bookie-rpc’ endpoint, like in this example:</p>

<p>{
    “endpoints”: [
        {
         “name”: “bookie”,
         “hostname”: “hostname-from-bookieid”,
         “port”: port-from-bookieid,
         “protocol”: “bookie-rpc”
        }
    ]
}</p>

<p>This information is enough in order to use the RPC service.</p>

<h3 id="test-plan">Test Plan</h3>

<p>New unit tests will be added to cover all of the code changes.
No need for additional integration tests.</p>

<h3 id="rejected-alternatives">Rejected Alternatives</h3>

<h4 id="adding-a-new-set-of-znodes">Adding a new set of znodes</h4>
<p>For the ZooKeeper implementation we are not introducing a new znode to store BookieServiceInfo. Adding such new node will increase complexity and the usage of resources on ZooKeeper.</p>

<h4 id="storing-information-inside-the-cookie">Storing information inside the Cookie</h4>
<p>The <em>Cookie</em> stores information about the <em>identity</em> of the bookie and it is expected not to change.
It is exceptional to rewrite the Cookie, like when adding a new data directory.
In some environments it is common to have a new network address after a restart or to change the configuration and enable a new service or feature, and you cannot rewrite the Cookie at each restart: by design every change to the Cookie should be manual or controlled by an external entity other than the Bookie itself.</p>

        </section>

        
      </div>
    </div>
  </div>
</div>
    </main>

    <footer class="footer">
  <div class="container">
    <div class="content has-text-centered">
      <p>
        Copyright &copy; 2016 - 2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>,<br /> licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.
      </p>
      <p>
        Apache BookKeeper, BookKeeper®, Apache®, the Apache feature logo, and the Apache BookKeeper logo are either registered trademarks or trademarks of The Apache Software Foundation.
      </p>
    </div>
  </div>
</footer>

  </body>

  <script src="/js/app.js"></script>

  
  <!--
    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.
-->
<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-104419626-1', 'auto');
  ga('send', 'pageview');

</script>

  
</html>
