Hi all, Just to follow up on this... since we're not quite ready for 3.0 yet, it's probably best if we release a 2.8 next, and then go to 3.0 after that. Sorry for any confusion.
best, Colin On Mon, Jul 20, 2020, at 12:52, Matthias J. Sax wrote: > Did we reach any conclusion on the subject? > > It seems we are aiming for 2.7 after 2.6 and plan the major version bump > to 3.0 after 2.7 (assuming we make progress on ZK removal as planned?) > > > -Matthias > > > On 5/18/20 1:11 PM, Boyang Chen wrote: > > One more thing I would like to see deprecated (hopefully no one mentioned > > before) is the zk based consumer offset support. > > > > On Mon, May 11, 2020 at 2:15 PM Colin McCabe <cmcc...@apache.org> wrote: > > > >> Hi Michael, > >> > >> It would be better to discuss the background behind KIP-500 in a separate > >> thread, since this thread is about the Kafka 3.0 release. As others have > >> said, your questions are answered in the KIP. For example, "what is the > >> actual goal?" is addressed in the motivation section. > >> > >> I agree that Kafka's usage of Apache ZooKeeper could be optimized. But > >> there are fundamental limitations to this approach compared to storing our > >> metadata internally. For example, having to contact a remote server to > >> reload all your metadata on a controller failover simply doesn't scale past > >> a certain point. > >> > >> Apache Curator is a nice API, and if we were starting again today we would > >> certainly consider using it. But it doesn't allow us to do anything more > >> efficiently than ZooKeeper could already do it. > >> > >> Finally, Kafka's core competence is logs. While our replication protocol > >> is not Raft, it shares many similarities with that protocol. So I think > >> it's a bit unfair to say that it is "catastrophic hubris" to believe we can > >> implement the protocol. > >> > >> best, > >> Colin > >> > >> > >> On Sun, May 10, 2020, at 11:02, Michael K. Edwards wrote: > >>> Yes, I've read the KIP. But all it really says to me is "we have never > >>> gotten around to using ZooKeeper properly." To the extent that any of > >> the > >>> distributed-state-maintenance problems discussed in "Metadata as an Event > >>> Log" can be solved — and some of them intrinsically can't, because CAP > >>> theorem — most of them are already implemented very effectively in > >> Curator > >>> recipes. (For instance, Curator's Tree Cache > >>> https://curator.apache.org/curator-recipes/tree-cache.html is a good > >> fit to > >>> some of the state-maintenance needs.) > >>> > >>> Kafka does have some usage patterns that don't map neatly onto existing > >>> Curator recipes. For instance, neither LeaderSelector nor LeaderLatch > >>> implements leader preference in the way that the existing Kafka partition > >>> leadership election procedure does. But why not handle that by improving > >>> and extending Curator? That way, other Curator users benefit, and we get > >>> additional highly experienced reviewers' eyes on the distributed > >>> algorithms, which are very very tricky to get right. > >>> > >>> > >>> On Sun, May 10, 2020 at 10:47 AM Ron Dagostino <rndg...@gmail.com> > >> wrote: > >>> > >>>> 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 > >>>>>>>> > >>>>>> > >>>>>> > >>>> > >>> > >> > > > > > Attachments: > * signature.asc