Every distributed system strives for reliability, performance, and quality, but building such a system is hard. Establishing a set of design patterns enables software developers and system architects to use a common language to describe their systems and learn from the patterns and practices developed by others.
The popularity of containers and Kubernetes paves the way for core distributed system patterns and reusable containerized components. This practical guide presents a collection of repeatable, generic patterns to help guide the systems you build using common patterns and practices drawn from some of the highest performing distributed systems in use today. These common patterns make the systems you build far more approachable and efficient, even if you've never built a distributed system before.
Author Brendan Burns demonstrates how you can adapt existing software design patterns for designing and building reliable distributed applications. Systems engineers and application developers will learn how these long-established patterns provide a common language and framework for dramatically increasing the quality of your system.
This fully updated second edition includes new chapters on AI inference, AI training, and building robust systems for the real world.
• Understand how patterns and reusable components enable the rapid development of reliable distributed systems
• Use the sidecar, adapter, and ambassador patterns to split your application into a group of containers on a single machine
• Explore loosely coupled multinode distributed patterns for replication, scaling, and communication between components
• Learn distributed system patterns for large-scale batch data processing covering work queues, event-based processing, and coordinated workflows
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
Tip the Site
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat Pay
Alipay
Open WeChat or Alipay and scan. No login required.
AI guide
【One-Line Pitch】
A pattern-language guide for building reliable distributed systems on Kubernetes, showing how small reusable container components and proven architectural patterns let teams ship scalable software without reinventing coordination, scaling, and failure handling. Best for application developers and systems architects who already know containers and want a shared vocabulary for designing distributed applications.
【Book Arc】
- **Opening (~0%–10%)**: Frames the problem — distributed systems are hard, and shared design patterns give teams a common language. Introduces the container/Kubernetes context and previews the pattern catalog (sidecar, adapter, ambassador, multinode, batch).
- **Early (~10%–30%)**: Builds foundations: a brief history of software patterns (from Knuth's algorithms to object-oriented design patterns) and core distributed concepts — APIs/RPCs, message delivery semantics, relational integrity, and health checks (liveness vs. readiness).
- **Middle (~30%–55%)**: Covers single-node, multi-container patterns. The sidecar pattern for modularity and reuse; the ambassador pattern for sharding, service brokering, and request splitting/experimentation; the adapter pattern for monitoring, logging, and health normalization.
- **Late (~55%–85%)**: Moves to multinode serving and batch patterns — replicated load-balanced services, sharding, work queues, event-based processing, and coordinated workflows for large-scale data processing.
- **Ending (~85%–100%)**: Addresses real-world robustness: common failure patterns (thundering herd, misleading absence of errors, versioning errors, the "second system" problem) and a closing reflection on where distributed design goes next.
【Key Takeaways】
- **Patterns are a shared language, not just recipes** (Early): The book's core argument is that naming recurring designs lets architects and developers describe systems precisely and learn from each other's experience.
- **Containers make patterns composable** (Middle): Sidecar, ambassador, and adapter patterns split an application into cooperating containers on one machine, each with a clean API, enabling reuse and separation of concerns.
- **Sidecars extend without modifying the app** (Middle): Useful for legacy applications and cross-cutting concerns like introspection (e.g., a shared topz-style resource view), but they trade off some tailoring versus in-process libraries.
- **Ambassadors encapsulate hard infrastructure logic** (Middle): Sharding, service discovery/brokering, and request splitting can be hidden behind a proxy container so application code stays simple and portable.
- **Adapters normalize heterogeneous systems** (Middle): Monitoring, logging, and health checks can be unified across diverse applications by adapting their outputs to a common interface.
- **Health has two meanings** (Early): Liveness (is it running?) and readiness (is it ready for traffic?) drive restarts, load-balancer membership, and rollout decisions — conflating them causes operational mistakes.
- **Delivery semantics and relational integrity are design trade-offs** (Early): Exactly-once delivery is impractical; systems should handle at-most-once or at-least-once. Strong relational integrity across stores costs distributed transactions and parallelism, echoing the SQL vs. NoSQL split.
- **Failure patterns are predictable and worth studying** (Ending): Thundering herds, silent errors, versioning mistakes, and the "second system" problem recur; recognizing them early improves reliability.
【Reading Tips】
- Skim the history-of-patterns section if you already know design patterns; slow down on the concepts chapter (APIs/RPCs, delivery semantics, health checks) since later patterns assume it.
- Treat the hands-on examples (sharded Redis, 10% experiments, Prometheus monitoring, fluentd logging) as templates — adapt the YAML and container APIs rather than copying verbatim.
- Deep-read the failure-patterns chapter near the end; it is the most practical checklist for reviewing your own system design.
- Keep the pattern names (sidecar, ambassador, adapter) as a vocabulary you can use in design reviews and architecture docs.
【Coverage Limits】
The excerpts cover the book's framing, foundational concepts, single-node patterns, and failure patterns, but the multinode serving/batch chapters and the new AI inference and AI training chapters are only referenced, not detailed. Specific implementation depth for those later chapters is not covered here.
Page 1
coordinated workflows 2nd Edition Designing Distributed Systems Patterns and Paradigms for Scalable, Reliable Systems Using Kubernetes Brendan Burns Designin...
s in computer programming led to the development of object- oriented programming languages, which elevated data, reusability, and extensibility to peers of t...
e network. Such an application is alive, it is doing useful work and should not be terminated, but it is not ready until it has successfully down‐ loaded and...
software as a service (SaaS), whereas in a private cloud it might be necessary to dynamically spin up a new virtual machine or container running MySQL. Conse...
ncer. These directions use the Kubernetes container orches‐ trator, but the pattern can be implemented on top of a number of different container orchestrator...
this virtual world are unlikely to interact. Consequently, the world of the game can be sharded across many different machines. The sharding function is keye...
ep a processor continuously active servicing user requests. At this point, the economics of a pay-per-request model start to become bad, and only get worse b...
n’t do this, you may perform computation when you have lost the lock. By adding TTL to our locks, we have actually introduced a bug into our unlock func‐ tio...
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.
Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat PayAlipay
Open WeChat or Alipay and scan. No login required.
Add Tag
Enter tag name (max 50 characters)
Share E-Book
Designing Distributed Systems, 2nd Edition Patterns and Paradigms for Scalable, Reliable Systems Using Kubernetes (Brendan Burns)(Z-Library)
Scan QR code with your phone to access
Copy the link or scan the QR code to access this e-book on your phone
Share E-Book via Email
Please enter email address
Donation Statistics
¥.00
Total Donations
0
Donation Count
Designing Distributed Systems, 2nd Edition Patterns and Paradigms for Scalable, Reliable Systems Using Kubernetes (Brendan Burns)(Z-Library)
Find Your Favorite Books
Only registered users can comment after logging in. Comments need to be reviewed by administrators before being displayed
Loading comments...
Reply to Comment
Edit Comment