satishd commented on code in PR #641: URL: https://github.com/apache/kafka-site/pull/641#discussion_r1832377617
########## blog.html: ########## @@ -22,6 +22,122 @@ <!--#include virtual="includes/_nav.htm" --> <div class="right"> <h1 class="content-title">Blog</h1> + <article> + <h2 class="bullet"> + <a id="apache_kafka_390_release_announcement"></a> + <a href="#apache_kafka_390_release_announcement">Apache Kafka 3.9.0 Release Announcement</a> + </h2> + 6 November 2024 - Colin P. McCabe + <p>We are proud to announce the release of Apache Kafka 3.9.0. This is a major release, the final one in the 3.x line. This will also be the final major release to feature the deprecated Apache ZooKeeper mode. Starting in 4.0 and later, Kafka will always run without ZooKeeper.</p> + <h3>Dynamic KRaft Quorums</h3> + <p>When in KRaft mode, Kafka relies on a Raft quorum of controller processes to store its metadata log. + Previously, controller quorums were specified by a static configuration that needed to be set on all + brokers and controllers. This made changing the hostnames of controllers, or adding or removing them, + very difficult to do without downtime.</p> + + <p><a + href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-853%3A+KRaft+Controller+Membership+Changes">KIP-853: + KRaft Controller Membership Changes</a> makes quorum membership dynamic. Administrators can now add and + remove controller nodes by running the <b>kafka-metadata-quorum.sh</b> tool or using the associated + AdminClient API. + + <p>This feature has been eagerly awaited by the community, and we are excited to deliver it in 3.9. The + main limitation in 3.9 is that we do not support converting over static metadata quorums to dynamic + ones. However, this ability is coming soon.</p> + + <p>For more information about using the new dynamic quorums feature, see <a + href="https://kafka.apache.org/39/documentation.html#kraft_reconfig">the KIP-853 documentation.</a></p> + + <h3>Improved ZooKeeper Migration</h3> + <p>Users that are using ZooKeeper mode today need to go through a process called ZooKeeper migration + before they will be able to use KRaft mode. The migration process involves running a series of commands + to copy the metadata stored in ZooKeeper into a KRaft quorum.</p> + + <p>ZK migration is not a new feature; indeed, it has been under development since Kafka 3.4. However, I + wanted to highlight that Kafka 3.9 is the final and best iteration of our ZK migration feature. As we + migrated thousands of clusters (big and small), we found and fixed many bugs. We also closed all of the + remaining feature gaps that kept some users tied to ZooKeeper.</p> + + <p>Kafka 4.0 will be fully saying goodbye to ZooKeeper. There will be no support for running in ZK mode, + or migrating from ZK mode. This means that administrators that are still using the deprecated ZK mode + who need to upgrade to 4.0 and beyond will need to make a stop at a "bridge release." + For example, if you wanted to upgrade from Kafka 3.0 to Kafka 4.0, you might do the following:</p> + + <ul> + <li>Upgrade to Kafka 3.9.</li> + <li>Perform ZK migration.</li> + <li>Upgrade to Kafka 4.0.</li> + </ul> + + <p>In this example, Kafka 3.9 serves as the "bridge" to 4.0</p> + + <p>As you migrate your older Kafka clusters, also keep in mind that Kafka 3.5 and later use a version of + ZooKeeper that is not wire-compatible with Kafka versions older than 2.4. Therefore, if you want to migrate + a cluster older than that, you will have to make an additional stop at a release with a ZK version + supported by both Kafkas. See <a + href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-902%3A+Upgrade+Zookeeper+to+3.8.2">KIP-902</a> + for details.</p> + + <p>As an example, if you wanted to migrate from Kafka 1.0 to Kafka 4.0, you might do the following:</p> + <ul> + <li>Upgrade to Kafka 3.4 (a newer version will not work due to ZK incompatibilites)</li> + <li>Upgrade to ZooKeeper 3.8</li> + <li>Upgrade to Kafka 3.9.</li> + <li>Perform ZK migration.</li> + <li>Upgrade to Kafka 4.0.</li> + </ul> + + <p>These multi-step migrations should be quite rare. Running such an old Kafka version raises security concerns, + after all. However, I wanted to mention it for completeness.</p> + + <h3>Tiered Storage</h3> + <p>Tiered storage is a feature that has been under development since Kafka 3.6. It allows Kafka to seamlessly offload data to pluggable external storage systems, such as cloud object stores. (See <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage">KIP-405</a> for more details.)</p> + + <p>Tiered storage is now production-ready in Kafka 3.9. In addition, we added the following + improvements:</p> + <ul> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-950%3A++Tiered+Storage+Disablement">KIP-950: Tiered Storage Disablement</a>: + </b><br>There is now a mechanism for dynamically disabling tiered storage on a per-topic basis. + </li> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-956+Tiered+Storage+Quotas">KIP-956 Tiered Storage Quotas</a>: + </b><br>Administrators can now put upper bounds on tiered storage upload and download rates. + </li> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1005%3A+Expose+EarliestLocalOffset+and+TieredOffset">KIP-1005: Expose EarliestLocalOffset and TieredOffset</a>: + </b><br>Kafka now exposes the highest offset at which partition data is stored in remote storage. + </li> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1057%3A+Add+remote+log+metadata+flag+to+the+dump+log+tool">KIP-1057: Add remote log metadata flag to the dump log tool</a>: + </b><br>The kafka-dump-log.sh tool gained the ability to examine tiered storage records. + </li> + </ul> + + <h3>Kafka Streams</h3> + <p>There are several Kafka Streams improvements in Apache Kafka 3.9.</p> + <ul> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1049%3A+Add+config+log.summary.interval.ms+to+Kafka+Streams">KIP-1049: Add config log.summary.interval.ms to Kafka Streams</a>: + </b><br>Introduce the log.summary.interval.ms to control the frequency of summary logs. + </li> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1040%3A+Improve+handling+of+nullable+values+in+InsertField%2C+ExtractField%2C+and+other+transformations">KIP-1040: Improve handling of nullable values in InsertField, ExtractField, and other transformations</a>: + </b><br>Add more configuration knobs for handling nulls in Kafka streams. + </li> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1033%3A+Add+Kafka+Streams+exception+handler+for+exceptions+occurring+during+processing">KIP-1033: Add Kafka Streams exception handler for exceptions occurring during processing</a>: + </b><br>Improve exception handling in Kafka streams. + </li> + </ul> + + <h3>Kafka Connect</h3> + <p>Kafka Connect received several improvements in 3.9 as well.</p> + <ul> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1031%3A+Control+offset+translation+in+MirrorSourceConnector">KIP-1031: Control offset translation in MirrorSourceConnector</a>: + </b><br>Add the emit.offset-syncs.enabled configuration, which can be used to disable configuration synchronization. + </li> + <li><b><a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1017%3A+Health+check+endpoint+for+Kafka+Connect">KIP-1017: Health check endpoint for Kafka Connect</a>: + </b><br>Add a REST endpoint that can be used to determine if Kafka Connect workers are healthy. + </li> + </ul> + + <h3>Conclusion</h3> + <p>I hope that this post has given you a sense of all the exciting things that are going on in Kafka 3.9. For more details, take a look at the <a href="https://archive.apache.org/dist/kafka/3.7.0/RELEASE_NOTES.html">release notes</a>, or simply <a href="https://kafka.apache.org/downloads">download</a> the release for yourself. Review Comment: `release notes` is pointing to 3.7.0 release, needs to be updated with 3.9.0 link. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org