apache / bookkeeper

Apache BookKeeper - a scalable, fault tolerant and low latency storage service optimized for append-only workloads
https://bookkeeper.apache.org/
Apache License 2.0
1.9k stars 901 forks source link

Incomplete implementation for etcd driver for metadata (Missing LedgerUnderreplicationManager and LedgerAuditorManager) #3441

Open davemasterdave opened 2 years ago

davemasterdave commented 2 years ago

FEATURE REQUEST

  1. Please describe the feature you are requesting.

I would like to use the etcd driver to run Bookie servers in a production Kubernetes environment, using the cluster's built in etcd service, instead of running an extra Zookeeper cluster. However, it appears the driver implementation is incomplete, there is no implementation provided for LedgerUnderreplicationManager and LedgerAuditorManager. Furthermore, the MetadataClientDriver didn't implement setSessionStateListener(SessionStateListener sessionStateListener), which appears should be a no-op because the etcd client is stateless?

in EtcdLedgerManagerFactory

   @Override
    public LedgerUnderreplicationManager newLedgerUnderreplicationManager()
        throws KeeperException, InterruptedException, CompatibilityException {
        throw new UnsupportedOperationException();
    }

    @Override
    public LedgerAuditorManager newLedgerAuditorManager() throws IOException, InterruptedException {
        throw new UnsupportedOperationException();
    }
  1. Indicate the importance of this issue to you (blocker, must-have, should-have, nice-to-have). Are you currently using any workarounds to address this issue?

This issue is a blocker to being able to use Bookkeeper in Kubernetes environment without having to deploy a Zookeeper cluster.

  1. Provide any additional detail on your proposed use case for this feature.

We are trying to reduce the complexity and number of moving parts in our server application architecture, and it seems most logical to utilize the etcd cluster for metadata instead of running and maintaining a standalone cluster of Zookeeper.

There was an old project that is a proxy service which translates the Zookeeper API to etcd calls, but it appears this project is stale/abandoned https://github.com/etcd-io/zetcd

liangyuanpeng commented 1 year ago

One option is to use the bookkeeper etcd metadata implemented in pulsar.