References

These are the published works the book cites: papers, books, standards, and the Kafka Improvement Proposals that define the features it explains. They’re numbered in alphabetical order of their first author. A number in square brackets in the text, such as [1], points to the entry with that number, and on the web it links here.

[1]
2019. Principles of Chaos Engineering. Retrieved September 28, 2026 from https://principlesofchaos.org
[2]
John Allspaw. 2012. Fault injection in production: Making the case for resilience testing. Queue 10, 8 (2012), 30–35. https://doi.org/10.1145/2346916.2353017
[3]
Ahmed Alquraan, Hatem Takruri, Mohammed Alfatafta, and Samer Al-Kiswany. 2018. An analysis of network-partitioning failures in cloud systems. In 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18), 2018. USENIX Association, 51–68. Retrieved from https://www.usenix.org/conference/osdi18/presentation/alquraan
[4]
David Arthur. 2021. KIP-778: KRaft to KRaft Upgrades. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=188746840
[5]
Aditya Auradkar. 2015. KIP-13: Quotas. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51812210
[6]
Peter Bailis and Kyle Kingsbury. 2014. The network is reliable. Communications of the ACM 57, 9 (2014), 48–55. https://doi.org/10.1145/2643130
[7]
Ali Basiri, Niosha Behnam, Ruud de Rooij, Lorin Hochstein, Luke Kosewski, Justin Reynolds, and Casey Rosenthal. 2016. Chaos engineering. IEEE Software 33, 3 (2016), 35–41. https://doi.org/10.1109/MS.2016.60
[8]
Ali Basiri, Lorin Hochstein, Nora Jones, and Haley Tucker. 2019. Automating chaos experiments in production. In 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP), 2019. IEEE, 31–40. https://doi.org/10.1109/ICSE-SEIP.2019.00012
[9]
Alan Bateman. 2023. JEP 444: Virtual threads. JDK Enhancement Proposal. Retrieved September 28, 2026 from https://openjdk.org/jeps/444
[10]
Betsy Beyer, Chris Jones, Jennifer Petoff, and Niall Richard Murphy (Eds.). 2016. Site reliability engineering: How Google runs production systems. O’Reilly Media.
[11]
Axel Boldt-Christmas. 2024. JEP 474: ZGC: Generational mode by default. JDK Enhancement Proposal. Retrieved September 28, 2026 from https://openjdk.org/jeps/474
[12]
Boyang Chen. 2019. KIP-429: Kafka Consumer Incremental Rebalance Protocol. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103090108
[13]
Jeffrey Dean and Luiz André Barroso. 2013. The tail at scale. Communications of the ACM 56, 2 (2013), 74–80. https://doi.org/10.1145/2408776.2408794
[14]
Ryanne Dolan. 2018. KIP-382: MirrorMaker 2.0. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95650722
[15]
Satish Duggana, Sriharsha Chintalapani, Ying Zheng, and Suresh Srinivas. 2018. KIP-405: Kafka Tiered Storage. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=97554472
[16]
Chris Egerton. 2020. KIP-618: Exactly-Once Support for Source Connectors. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=153816406
[17]
Andy Georges, Dries Buytaert, and Lieven Eeckhout. 2007. Statistically rigorous Java performance evaluation. In Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA ’07), 2007. ACM, 57–76. https://doi.org/10.1145/1297027.1297033
[18]
Brendan Gregg. 2010. Visualizing system latency. Communications of the ACM 53, 7 (2010), 48–54. https://doi.org/10.1145/1785414.1785435
[19]
Brendan Gregg. 2013. Thinking methodically about performance. Communications of the ACM 56, 2 (2013), 45–51. https://doi.org/10.1145/2408776.2408791
[20]
Neil J. Gunther. 2007. Guerrilla capacity planning: A tactical approach to planning for highly scalable applications and services. Springer. https://doi.org/10.1007/978-3-540-31010-5
[21]
Jason Gustafson. 2020. KIP-595: A Raft Protocol for the Metadata Quorum. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=148647470
[22]
Mor Harchol-Balter. 2013. Performance modeling and design of computer systems: Queueing theory in action. Cambridge University Press.
[23]
Gregor Hohpe and Bobby Woolf. 2003. Enterprise integration patterns: Designing, building, and deploying messaging solutions. Addison-Wesley.
[24]
Nikolay Izhikov. 2019. KIP-553: Disable all SSL protocols except TLSV1.2 by default. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=142641956
[25]
Nikolay Izhikov. 2020. KIP-573: Enable TLSv1.3 by default. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=148638811
[26]
David Jacot. 2022. KIP-848: The Next Generation of the Consumer Rebalance Protocol. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=217387038
[27]
Raj Jain. 1991. The art of computer systems performance analysis: Techniques for experimental design, measurement, simulation, and modeling. Wiley.
[28]
Ismael Juma. 2021. KIP-724: Drop support for message formats v0 and v1. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177047878
[29]
Ismael Juma. 2022. KIP-896: Remove old client protocol API versions in Kafka 4.0. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=235838251
[30]
Sergey Kanzhelev, Morgan McLean, Alois Reitbauer, Bogdan Drutu, Nik Molnar, and Yuri Shkuro (Eds.). 2021. Trace Context. W3C Recommendation. Retrieved from https://www.w3.org/TR/2021/REC-trace-context-1-20211123/
[31]
Konstantine Karantasis. 2019. KIP-415: Incremental Cooperative Rebalancing in Kafka Connect. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=100828003
[32]
Stefan Karlsson. 2023. JEP 439: Generational ZGC. JDK Enhancement Proposal. Retrieved September 28, 2026 from https://openjdk.org/jeps/439
[33]
Kyle Kingsbury. 2013. Jepsen: Kafka. Jepsen analysis, aphyr.com. Retrieved September 28, 2026 from https://aphyr.com/posts/293-call-me-maybe-kafka
[34]
Martin Kleppmann. 2017. Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems. O’Reilly Media.
[35]
Jay Kreps, Neha Narkhede, and Jun Rao. 2011. Kafka: A distributed messaging system for log processing. In NetDB ’11, June 12, 2011. Athens, Greece. Retrieved from https://www.microsoft.com/en-us/research/wp-content/uploads/2017/09/Kafka.pdf
[36]
Calvin Liu. 2023. KIP-966: Eligible Leader Replicas. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=263426970
[37]
Mickael Maison. 2021. KIP-716: Allow configuring the location of the offset-syncs topic with MirrorMaker2. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=173087775
[38]
Colin McCabe. 2019. KIP-500: Replace ZooKeeper with a Self-Managed Metadata Quorum. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=123898922
[39]
Colin McCabe. 2020. KIP-631: The Quorum-based Kafka Controller. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=158864865
[40]
Colin McCabe. 2022. KIP-833: Mark KRaft as Production Ready. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211882739
[41]
Apurva Mehta. 2016. KIP-98: Exactly Once Delivery and Transactional Messaging. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=66854913
[42]
Chris Newman, Abhijit Menon-Sen, Alexey Melnikov, and Nicolas Williams. 2010. Salted challenge response authentication mechanism (SCRAM) SASL and GSS-API mechanisms. RFC 5802. RFC Editor. https://doi.org/10.17487/RFC5802
[43]
Diego Ongaro and John Ousterhout. 2014. In search of an understandable consensus algorithm. In 2014 USENIX Annual Technical Conference (USENIX ATC 14), 2014. USENIX Association, 305–319. Retrieved from https://www.usenix.org/conference/atc14/technical-sessions/presentation/ongaro
[44]
Anna Povzner. 2018. KIP-279: Fix log divergence between leader and follower after fast leader fail over. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=75978352
[45]
Eric Rescorla. 2018. The transport layer security (TLS) protocol version 1.3. RFC 8446. RFC Editor. https://doi.org/10.17487/RFC8446
[46]
Chris Richardson. 2018. Microservices patterns: With examples in Java. Manning Publications.
[47]
Jesse Robbins, Kripa Krishnan, John Allspaw, and Thomas A. Limoncelli. 2012. Resilience engineering: Learning to embrace failure. Queue 10, 9 (2012), 20–28. https://doi.org/10.1145/2367376.2371297
[48]
Casey Rosenthal and Nora Jones. 2020. Chaos engineering: System resiliency in practice. O’Reilly Media.
[49]
Jerome H. Saltzer and Michael D. Schroeder. 1975. The protection of information in computer systems. Proceedings of the IEEE 63, 9 (1975), 1278–1308. https://doi.org/10.1109/PROC.1975.9939
[50]
Arjun Satish. 2018. KIP-298: Error Handling in Connect. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=80453065
[51]
Andrew Schofield. 2023. KIP-932: Queues for Kafka. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=255070434
[52]
Bianca Schroeder, Adam Wierman, and Mor Harchol-Balter. 2006. Open versus closed: A cautionary tale. In 3rd Symposium on Networked Systems Design and Implementation (NSDI 06), 2006. USENIX Association. Retrieved from https://www.usenix.org/conference/nsdi-06/open-versus-closed-cautionary-tale
[53]
Benjamin H. Sigelman, Luiz André Barroso, Mike Burrows, Pat Stephenson, Manoj Plakal, Donald Beaver, Saul Jaspan, and Chandan Shanbhag. 2010. Dapper, a large-scale distributed systems tracing infrastructure. Technical report. Google, Inc. Retrieved from https://research.google/pubs/dapper-a-large-scale-distributed-systems-tracing-infrastructure/
[54]
Rajini Sivaram. 2016. KIP-84: Support SASL SCRAM mechanisms. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65873453
[55]
Rajini Sivaram. 2018. KIP-294: Enable TLS hostname verification by default. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=80452840
[56]
Ben Stopford. 2016. KIP-101: Alter Replication Protocol to use Leader Epoch rather than High Watermark for Truncation. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=67634337
[57]
Marianne Swanson, Pauline Bowen, Amy Phillips, Dean Gallup, and David Lynes. 2010. Contingency planning guide for federal information systems. NIST Special Publication 800-34 Rev. 1. National Institute of Standards and Technology. https://doi.org/10.6028/NIST.SP.800-34r1
[58]
Cheng Tan. 2020. KIP-679: Producer will enable the strongest delivery guarantee by default. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=165221843
[59]
Arseniy Tashoyan. 2018. KIP-635: GetOffsetShell: support for multiple topics and consumer configuration override. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85473664
[60]
Gil Tene. 2013. How NOT to measure latency. Presentation, InfoQ. Retrieved September 28, 2026 from https://www.infoq.com/presentations/latency-pitfalls/
[61]
Kuan Po Tseng. 2025. KIP-1124: Providing a clear Kafka Client upgrade path for 4.x. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=337676747
[62]
Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall. 1997. A note on distributed computing. In Mobile Object Systems: Towards the Programmable Internet. Springer, 49–64. https://doi.org/10.1007/3-540-62852-5_6
[63]
Allen Wang. 2015. KIP-36: Rack aware replica assignment. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=61321028
[64]
Guozhang Wang, Lei Chen, Ayusman Dikshit, Jason Gustafson, Boyang Chen, Matthias J. Sax, John Roesler, Sophie Blee-Goldman, Bruno Cadonna, Apurva Mehta, Varun Madan, and Jun Rao. 2021. Consistency and completeness: Rethinking distributed stream processing in Apache Kafka. In Proceedings of the 2021 International Conference on Management of Data (SIGMOD ’21), 2021. ACM, 2602–2613. https://doi.org/10.1145/3448016.3457556
[65]
Guozhang Wang, Joel Koshy, Sriram Subramanian, Kartik Paramasivam, Mammad Zadeh, Neha Narkhede, Jun Rao, Jay Kreps, and Joe Stein. 2015. Building a replicated logging system with Apache Kafka. Proceedings of the VLDB Endowment 8, 12 (2015), 1654–1655. https://doi.org/10.14778/2824032.2824063
[66]
Ning Zhang. 2019. KIP-545: support automated consumer offset sync across clusters in MM 2.0. Kafka Improvement Proposal. Retrieved September 28, 2026 from https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=133632115