Designing Distributed Systems

[desc]Brendan Burns[/desc][img]71197-Designing_Distributed_Systems.webp[/img][bookmark]{“51″: [1,”Part II. Serving Patterns”,55],”125″: [3,”Hands On: Building an Event-Driven Flow for New User Sign-Up”,142],”14″: [2,”A Brief History of Systems Development”,15],”71″: [4,”Replicated, Sharded Caches”,76],”103″: [4,”Hands On: Deploying etcd”,111],”136″: [1,”Index”,159],”24″: [1,”Part I. Single-Node Patterns”,21],”35″: [4,”Define Each Container’s API”,31],”45″: [3,”Monitoring”,46],”25″: [2,”Motivations”,21],”40″: [4,”Hands On: Implementing a Sharded Redis”,37],”36″: [4,”Documenting Your Containers”,32],”101″: [3,”Determining If You Even Need Master Election”,108],”80″: [3,”Scatter/Gather with Root Distribution”,88],”87″: [3,”Determining When FaaS Makes Sense”,96],”106″: [4,”Implementing Ownership”,115],”10″: [2,”O’Reilly Safari”,12],”29″: [3,”Dynamic Configuration with Sidecars”,26],”78″: [3,”Hot Sharding Systems”,84],”42″: [3,”Using an Ambassador to Do Experimentation or Request Splitting”,40],”60″: [4,”Deploying Your Cache”,64],”41″: [3,”Using an Ambassador for Service Brokering”,39],”33″: [3,”Designing Sidecars for Modularity and Reusability”,30],”118″: [2,”Chapter 11. Event-Driven Batch Processing”,135],”6″: [2,”Navigating This Book”,10],”100″: [2,”Chapter 9. Ownership Election”,107],”0″: [1,”Copyright”,4],”98″: [4,”Event-Based Pipelines”,103],”104″: [4,”Implementing Locks”,112],”123″: [4,”Sharder”,139],”13″: [1,”Chapter 1. Introduction”,15],”54″: [3,”Stateless Services”,59],”84″: [4,”Choosing the Right Number of Leaves”,92],”20″: [3,”Standing on the Shoulders of Giants”,18],”16″: [3,”Formalization of Algorithmic Programming”,17],”68″: [3,”Sharded Caching”,73],”73″: [3,”An Examination of Sharding Functions”,80],”9″: [2,”Using Code Examples”,12],”27″: [2,”Chapter 2. The Sidecar Pattern”,25],”75″: [4,”Consistent Hashing Functions”,82],”119″: [3,”Patterns of Event-Driven Processing”,136],”32″: [3,”Building a Simple PaaS with Sidecars”,29],”76″: [4,”Hands On: Building a Consistent HTTP Sharding Proxy”,83],”130″: [3,”Reduce”,149],”48″: [4,”Hands On: Normalizing Different Logging Formats with Fluentd”,49],”44″: [2,”Chapter 4. Adapters”,45],”93″: [3,”Patterns for FaaS”,98],”94″: [4,”The Decorator Pattern: Request or Response Transformation”,99],”28″: [3,”An Example Sidecar: Adding HTTPS to a Legacy Service”,25],”96″: [4,”Handling Events”,101],”120″: [4,”Copier”,136],”4″: [2,”Why I Wrote This Book”,9],”77″: [3,”Sharded, Replicated Serving”,84],”67″: [2,”Chapter 6. Sharded Services”,73],”56″: [4,”Hands On: Creating a Replicated Service in Kubernetes”,61],”15″: [2,”A Brief History of Patterns in Software Development”,16],”5″: [2,”The World of Distributed Systems Today”,10],”137″: [1,”About the Author”,164],”129″: [3,”Join (or Barrier Synchronization)”,148],”49″: [3,”Adding a Health Monitor”,50],”138″: [1,”Colophon”,164],”47″: [3,”Logging”,48],”107″: [4,”Hands On: Implementing Leases in etcd”,116],”66″: [3,”Summary”,71],”92″: [4,”The Costs of Sustained Request-Based Processing”,98],”26″: [2,”Summary”,22],”79″: [2,”Chapter 7. Scatter/Gather”,87],”55″: [4,”Readiness Probes for Load Balancing”,60],”90″: [4,”The Need for Background Processing”,97],”38″: [2,”Chapter 3. Ambassadors”,35],”12″: [2,”Acknowledgments”,13],”50″: [4,”Hands On: Adding Rich Health Monitoring for MySQL”,51],”82″: [3,”Scatter/Gather with Leaf Sharding”,90],”46″: [4,”Hands On: Using Prometheus for Monitoring”,47],”59″: [3,”Introducing a Caching Layer”,63],”23″: [2,”Summary”,20],”121″: [4,”Filter”,137],”126″: [3,”Publisher/Subscriber Infrastructure”,143],”97″: [4,”Hands On: Implementing Two-Factor Authentication”,101],”110″: [2,”Chapter 10. Work Queue Systems”,123],”89″: [4,”The Challenges of FaaS”,96],”17″: [3,”Patterns for Object-Oriented Programming”,17],”22″: [3,”Shared Components for Easy Reuse”,19],”37″: [3,”Summary”,33],”58″: [3,”Application-Layer Replicated Services”,63],”64″: [4,”SSL Termination”,68],”111″: [3,”A Generic Work Queue System”,123],”102″: [3,”The Basics of Master Election”,109],”114″: [4,”The Shared Work Queue Infrastructure”,127],”21″: [3,”A Shared Language for Discussing Our Practice”,19],”65″: [4,”Hands On: Deploying nginx and SSL Termination”,69],”109″: [1,”Part III. Batch Computational Patterns”,121],”86″: [2,”Chapter 8. Functions and Event-Driven Processing”,95],”52″: [2,”Introduction to Microservices”,55],”128″: [2,”Chapter 12. Coordinated Batch Processing”,147],”34″: [4,”Parameterized Containers”,31],”19″: [2,”The Value of Patterns, Practices, and Components”,18],”95″: [4,”Hands On: Adding Request Defaulting Prior to Request Processing”,100],”53″: [2,”Chapter 5. Replicated Load-Balanced Services”,59],”99″: [4,”Hands On: Implementing a Pipeline for New-User Signup”,103],”105″: [4,”Hands On: Implementing Locks in etcd”,114],”113″: [4,”The Worker Container Interface”,126],”127″: [3,”Hands On: Deploying Kafka”,144],”39″: [3,”Using an Ambassador to Shard a Service”,36],”85″: [3,”Scaling Scatter/Gather for Reliability and Scale”,93],”7″: [2,”Conventions Used in This Book”,11],”74″: [4,”Selecting a Key”,81],”3″: [2,”Who Should Read This Book”,9],”69″: [4,”Why You Might Need a Sharded Cache”,74],”132″: [4,”Sum”,151],”135″: [2,”Chapter 13. Conclusion: A New Beginning?”,157],”72″: [4,”Hands On: Deploying an Ambassador and Memcache for a Sharded Cache”,77],”43″: [4,”Hands On: Implementing 10% Experiments”,41],”31″: [4,”Hands On: Deploying the topz Container”,28],”134″: [3,”Hands On: An Image Tagging and Processing Pipeline”,152],”70″: [4,”The Role of the Cache in System Performance”,75],”122″: [4,”Splitter”,138],”116″: [3,”Dynamic Scaling of the Workers”,131],”81″: [4,”Hands On: Distributed Document Search”,89],”88″: [4,”The Benefits of FaaS”,96],”131″: [4,”Hands On: Count”,150],”1″: [1,”Table of Contents”,5],”62″: [3,”Expanding the Caching Layer”,67],”18″: [3,”The Rise of Open Source Software”,17],”61″: [4,”Hands On: Deploying the Caching Layer”,65],”11″: [2,”How to Contact Us”,13],”8″: [2,”Online Resources”,11],”2″: [1,”Preface”,9],”133″: [4,”Histogram”,151],”63″: [4,”Rate Limiting and Denial-of-Service Defense”,68],”83″: [4,”Hands On: Sharded Document Search”,91],”57″: [3,”Session Tracked Services”,62],”30″: [3,”Modular Application Containers”,28],”112″: [4,”The Source Container Interface”,124],”91″: [4,”The Need to Hold Data in Memory”,97],”108″: [3,”Handling Concurrent Data Manipulation”,117],”117″: [3,”The Multi-Worker Pattern”,132],”115″: [3,”Hands On: Implementing a Video Thumbnailer”,129],”124″: [4,”Merger”,141]