Hi Michael.  This is discussed in the KIP.

https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum#KIP-500:ReplaceZooKeeperwithaSelf-ManagedMetadataQuorum-Motivation

Ron

> On May 10, 2020, at 1:35 PM, Michael K. Edwards <m.k.edwa...@gmail.com> wrote:
> 
> What is the actual goal of removing the ZooKeeper dependency?  In my
> experience, if ZooKeeper is properly provisioned and deployed, it's largely
> trouble-free.  (You do need to know how to use observers properly.)  There
> are some subtleties about timeouts and leadership changes, but they're
> pretty small stuff.  Why go to all the trouble of building a new
> distributed-consensus system that's going to have catastrophic bugs for
> years to come?  It seems like such an act of hubris to me, as well as a
> massive waste of engineering effort.  What is there to be gained?
> 
>> On Fri, May 8, 2020 at 4:11 PM Matthias J. Sax <mj...@apache.org> wrote:
>> 
>> Sure, we can compile a list for Kafka Streams. But the KIP would be for
>> 3.0, so I don't think it's urgent to do it now?
>> 
>> 
>> -Matthias
>> 
>>> On 5/8/20 3:47 PM, Colin McCabe wrote:
>>> Thanks, Guozhang-- sounds like a good plan.
>>> 
>>> I think it would be good to have a list of deprecated streams APIs that
>> we want to remove in 3.0.  Maybe it's easiest to do that as its own KIP?
>>> 
>>> For MirrorMaker 1, we should have a KIP to deprecate its use in 2.6 if
>> we want to remove it in 3.0.  I don't have a good sense of how practical it
>> is to deprecate this now, so I will defer to others here.  But the KIP
>> freeze for 2.6 is coming soon, so if we want to make the case, now is the
>> time.
>>> 
>>> best,
>>> Colin
>>> 
>>> 
>>>> On Thu, May 7, 2020, at 16:28, Guozhang Wang wrote:
>>>> Hey folks,
>>>> 
>>>> Sorry for stating that the bridge release would not break any
>> compatibility
>>>> before, which is incorrect and confused many people.
>>>> 
>>>> I think one way to think about the versioning is that:
>>>> 
>>>> 0) In a 2.x version moving ahead we would deprecate the ZK-dependent
>> tools
>>>> such as --zookeeper flags from various scripts (KIP-555)
>>>> 
>>>> 1) In 3.0 we would at least make one incompatible change for example to
>>>> remove the deprecated ZK flags.
>>>> 
>>>> 2) In a future major version (e.g. 4.0) we would drop ZK entirely,
>>>> including usages such as security credentials / broker registration /
>> etc
>>>> which are via ZK today as well.
>>>> 
>>>> Then for the bridge release(s), it can be any or all of 3.x.
>>>> 
>>>> 
>>>> For 1), I'd love to add a few more incompatibility changes in 3.0 from
>>>> Kafka Streams: we evolve Streams public APIs by deprecating and then
>> remove
>>>> in major releases, and since 2.0 we've accumulated quite a few
>> deprecated
>>>> APIs, and I can compile a list of KIPs that contain those if people are
>>>> interested.
>>>> 
>>>> 
>>>> Guozhang
>>>> 
>>>> 
>>>>> On Thu, May 7, 2020 at 3:53 PM Colin McCabe <cmcc...@apache.org> wrote:
>>>>> 
>>>>> On Wed, May 6, 2020, at 21:33, Ryanne Dolan wrote:
>>>>>>> In fact, we know that the bridge release will involve at least one
>>>>>>> incompatible change.  We will need to drop support for the
>> --zookeeper
>>>>>>> flags in the command-line tools.
>>>>>> 
>>>>>> If the bridge release(s) and the subsequent post-ZK release are _both_
>>>>>> breaking changes, I think we only have one option: the 3.x line are
>> the
>>>>>> bridge release(s), and ZK is removed in 4.0, as suggested by Andrew
>>>>>> Schofield.
>>>>>> 
>>>>>> Specifically:
>>>>>> - in order to _remove_ (not merely deprecate) the --zookeeper args, we
>>>>> will
>>>>>> need a major release.
>>>>>> - in oder to drop support for ZK entirely (e.g. break a bunch of
>> external
>>>>>> tooling like Cruise Control), we will need a major release.
>>>>>> 
>>>>>> I count two major releases.
>>>>> 
>>>>> Hi Ryanne,
>>>>> 
>>>>> I agree that dropping ZK completely will need a new major release after
>>>>> 3.0.  I think that's OK and in keeping with how we've handled
>> deprecation
>>>>> and removal in the past.  It's important for users to have a smooth
>> upgrade
>>>>> path.
>>>>> 
>>>>> best,
>>>>> Colin
>>>>> 
>>>>>> 
>>>>>> Ryanne
>>>>>> 
>>>>>> -
>>>>>> 
>>>>>> On Wed, May 6, 2020 at 10:52 PM Colin McCabe <cmcc...@apache.org>
>> wrote:
>>>>>> 
>>>>>>>> On Mon, May 4, 2020, at 17:12, Ryanne Dolan wrote:
>>>>>>>> Hey Colin, I think we should wait until after KIP-500's "bridge
>>>>>>>> release" so there is a clean break from Zookeeper after 3.0. The
>>>>>>>> bridge release by definition is an attempt to not break anything, so
>>>>>>>> it theoretically doesn't warrant a major release.
>>>>>>> 
>>>>>>> Hi Ryanne,
>>>>>>> 
>>>>>>> I think it's important to clarify this a little bit.  The bridge
>>>>> release
>>>>>>> (really, releases, plural) allow you to upgrade from a cluster that
>> is
>>>>>>> using ZooKeeper to one that is not using ZooKeeper.  But, that
>> doesn't
>>>>>>> imply that the bridge release itself doesn't break anything.
>> Upgrading
>>>>>>> to the bridge release itself might involve some minor
>> incompatibility.
>>>>>>> 
>>>>>>> Kafka does occasionally have incompatible changes.  In those cases,
>> we
>>>>>>> bump the major version number.  One example is that when we went from
>>>>>>> Kafka 1.x to Kafka 2.0, we dropped support for JDK7.  This is an
>>>>>>> incompatible change.
>>>>>>> 
>>>>>>> In fact, we know that the bridge release will involve at least one
>>>>>>> incompatible change.  We will need to drop support for the
>> --zookeeper
>>>>>>> flags in the command-line tools.
>>>>>>> 
>>>>>>> We've been preparing for this change for a long time.  People have
>>>>> spent
>>>>>>> a lot of effort designing new APIs that can be used instead of the
>> old
>>>>>>> zookeeper-based code that some of the command-line tools used.  We
>> have
>>>>>>> also deprecated the old ZK-based flags.  But at the end of the day,
>> it
>>>>>>> is still an incompatible change.  So it's unfortunately not possible
>>>>> for
>>>>>>> the
>>>>>>> bridge release to be a 2.x release.
>>>>>>> 
>>>>>>>> If that's not the case (i.e. if a single "bridge release" turns out
>>>>> to
>>>>>>>> be impractical), we should consider forking 3.0 while maintaining a
>>>>>>>> line of Zookeeper-dependent Kafka in 2.x. That way 3.x can evolve
>>>>>>>> dramatically without breaking the 2.x line. In particular, anything
>>>>>>>> related to removing Zookeeper could land in pre-3.0 while every
>> other
>>>>>>>> feature targets 2.6.
>>>>>>> 
>>>>>>> Just to be super clear about this, what we want to do here is support
>>>>>>> operating in __either__ KIP-500 mode and legacy mode for a while.  So
>>>>> the
>>>>>>> same branch will have support for both the old way and the new way of
>>>>>>> managing metadata.
>>>>>>> 
>>>>>>> This will allow us to get an "alpha" version of the KIP-500 mode out
>>>>> early
>>>>>>> for people to experiment with.  It also greatly reduces the number of
>>>>> Kafka
>>>>>>> releases we have to make, and the amount of backporting we have to
>> do.
>>>>>>> 
>>>>>>>> 
>>>>>>>> If you are proposing 2.6 should be the "bridge release", I think
>> this
>>>>>>>> is premature given Kafka's time-based release schedule. If the
>> bridge
>>>>>>>> features happen to be merged before 2.6's feature freeze, then sure
>>>>> --
>>>>>>>> let's make that the bridge release in retrospect. And if we get all
>>>>>>>> the post-Zookeeper features merged before 2.7, I'm onboard with
>>>>> naming
>>>>>>>> it "3.0" instead.
>>>>>>>> 
>>>>>>>> That said, we should aim to remove legacy MirrorMaker before 3.0 as
>>>>>>>> well. I'm happy to drive that additional breaking change. Maybe 2.6
>>>>>>>> can be the "bridge" for MM2 as well.
>>>>>>> 
>>>>>>> I don't have a strong opinion either way about this, but if we want
>> to
>>>>>>> remove the original MirrorMaker, we have to deprecate it first,
>>>>> right?  Are
>>>>>>> we ready to do that?
>>>>>>> 
>>>>>>> best,
>>>>>>> Colin
>>>>>>> 
>>>>>>>> 
>>>>>>>> Ryanne
>>>>>>>> 
>>>>>>>> On Mon, May 4, 2020, 5:05 PM Colin McCabe <cmcc...@apache.org>
>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Hi all,
>>>>>>>>> 
>>>>>>>>> We've had a few proposals recently for incompatible changes.  One
>>>>> of
>>>>>>>>> them is my KIP-604: Remove ZooKeeper Flags from the Administrative
>>>>>>>>> Tools.  The other is Boyang's KIP-590: Redirect ZK Mutation
>>>>>>>>> Protocols to the Controller.  I think it's time to start thinking
>>>>>>>>> about Kafka 3.0. Specifically, I think we should move to 3.0 after
>>>>>>>>> the 2.6 release.
>>>>>>>>> 
>>>>>>>>> From the perspective of KIP-500, in Kafka 3.x we'd like to make
>>>>>>>>> running in a ZooKeeper-less mode possible (but not yet the
>>>>> default.)
>>>>>>>>> This is the motivation behind KIP-590 and KIP-604, as well as some
>>>>>>>>> of the other KIPs we've done recently.  Since it will take some
>>>>> time
>>>>>>>>> to stabilize the new ZooKeeper-free Kafka code, we will hide it
>>>>>>>>> behind an option initially. (We'll have a KIP describing this all
>>>>> in
>>>>>>>>> detail soon.)
>>>>>>>>> 
>>>>>>>>> What does everyone think about having Kafka 3.0 come up next after
>>>>>>>>> 2.6? Are there any other things we should change in the 2.6 -> 3.0
>>>>>>>>> transition?
>>>>>>>>> 
>>>>>>>>> best, Colin
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> --
>>>> -- Guozhang
>>>> 
>> 
>> 

Reply via email to