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