Skip to main content

Published by Addison-Wesley Professional (March 13, 2025) © 2024

Unmesh Joshi
    VitalSource eTextbook (Lifetime access)
    €45,99
    ISBN-13: 9780138222116

    Patterns of Distributed Systems ,1st edition

    Access details

    • Instant access once purchased
    • Fulfilled by VitalSource

    Features

    • Add notes and highlights
    • Search by keyword or page

    Language: English

    Product Information

    A Patterns Approach to Designing Distributed Systems and Solving Common Implementation Problems

    More and more enterprises today are dependent on cloud services from providers like AWS, Microsoft Azure, and GCP. They also use products, such as Kafka and Kubernetes, or databases, such as YugabyteDB, Cassandra, MongoDB, and Neo4j, that are distributed by nature. Because these distributed systems are inherently stateful systems, enterprise architects and developers need to be prepared for all the things that can and will go wrong when data is stored on multiple servers--from process crashes to network delays and unsynchronized clocks.

    Patterns of Distributed Systems describes a set of patterns that have been observed in mainstream open-source distributed systems. Studying the common problems and the solutions that are embodied by the patterns in this guide will give you a better understanding of how these systems work, as well as a solid foundation in distributed system design principles.

    Featuring real-world code examples from systems like Kafka and Kubernetes, these patterns and solutions will prepare you to confidently traverse open-source codebases and understand implementations you encounter "in the wild."

    • Review the building blocks of consensus algorithms, like Paxos and Raft, for ensuring replica consistency in distributed systems
    • Understand the use of logical timestamps in databases, a fundamental concept for data versioning
    • Explore commonly used partitioning schemes, with an in-depth look at intricacies of two-phase-commit protocol
    • Analyze mechanisms used in implementing cluster coordination tasks, such as group membership, failure detection, and enabling robust cluster coordination
    • Learn techniques for establishing effective network communication between cluster nodes.

    Along with enterprise architects and data architects, software developers working with cloud services such as Amazon S3, Amazon EKS, and Azure CosmosDB or GCP Cloud Spanner will find this set of patterns to be indispensable.

    Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

    Foreword xvii
    Preface xix
    Acknowledgments xxiii
    About the Author xxv

    Part I: Narratives 1

    Chapter 1: The Promise and Perils of Distributed Systems 3
    The Limits of a Single Server 3
    Separate Business Logic and Data Layer 5
    Partitioning Data 6
    A Look at Failures 7
    Replication: Masking Failures 9
    Defining the Term "Distributed Systems" 10
    The Patterns Approach 10

    Chapter 2: Overview of the Patterns 13
    Keeping Data Resilient on a Single Server 14
    Competing Updates 15
    Dealing with the Leader Failing 17
    Multiple Failures Need a Generation Clock 21
    Log Entries Cannot Be Committed until They Are Accepted by a Majority Quorum 26
    Followers Commit Based on a High-Water Mark 29
    Leaders Use a Series of Queues to Remain Responsive to Many Clients 34
    Followers Can Handle Read Requests to Reduce Load on the Leader 40
    A Large Amount of Data Can Be Partitioned over Multiple Nodes 42
    Partitions Can Be Replicated for Resilience 45
    A Minimum of Two Phases Are Needed to Maintain Consistency across Partitions 46
    In Distributed Systems, Ordering Cannot Depend on System Timestamps 49
    A Consistent Core Can Manage the Membership of a Data Cluster 58
    Gossip Dissemination for Decentralized Cluster Management 62

    Part II: Patterns of Data Replication 69

    Chapter 3: Write-Ahead Log 71
    Problem 71
    Solution 71
    Examples 76

    Chapter 4: Segmented Log 77
    Problem 77
    Solution 77
    Examples 79

    Chapter 5: Low-Water Mark 81
    Problem 81
    Solution 81
    Examples 83

    Chapter 6: Leader and Followers 85
    Problem 85
    Solution 85
    Examples 92

    Chapter 7: HeartBeat 93
    Problem 93
    Solution 93
    Examples 98

    Chapter 8: Majority Quorum 99
    Problem 99
    Solution 100
    Examples 102

    Chapter 9: Generation Clock 103
    Problem 103
    Solution 104
    Examples 107

    Chapter 10: High-Water Mark 109
    Problem 109
    Solution 109
    Examples 115

    Chapter 11: Paxos 117
    Problem 117
    Solution 117
    Examples 132

    Chapter 12: Replicated Log 133
    Problem 133
    Solution 133
    Examples 158

    Chapter 13: Singular Update Queue 159
    Problem 159
    Solution 159
    Examples 166

    Chapter 14: Request Waiting List 167
    Problem 167
    Solution 167
    Examples 173

    Chapter 15: Idempotent Receiver 175
    Problem 175
    Solution 175
    Examples 181

    Chapter 16: Follower Reads 183
    Problem 183
    Solution 183
    Examples 191

    Chapter 17: Versioned Value 193
    Problem 193
    Solution 193
    Examples 201

    Chapter 18: Version Vector 203
    Problem 203
    Solution 203
    Examples 216

    Part III: Patterns of Data Partitioning 217

    Chapter 19: Fixed Partitions 219
    Problem 219
    Solution 220
    Examples 241

    Chapter 20: Key-Range Partitions 243
    Problem 243
    Solution 244
    Examples 255

    Chapter 21: Two-Phase Commit 257
    Problem 257
    Solution 257
    Examples 297

    Part IV: Patterns of Distributed Time 299

    Chapter 22: Lamport Clock 301
    Problem 301
    Solution 301
    Examples 307

    Chapter 23: Hybrid Clock 309
    Problem 309
    Solution 309
    Examples 316

    Chapter 24: Clock-Bound Wait 317
    Problem 317
    Solution 318
    Examples 332

    Part V: Patterns of Cluster Management 335

    Chapter 25: Consistent Core 337
    Problem 337
    Solution 337
    Examples 342

    Chapter 26: Lease 345
    Problem 345
    Solution 345
    Examples 354

    Chapter 27: State Watch 355
    Problem 355
    Solution 355
    Examples 362

    Chapter 28: Gossip Dissemination 363
    Problem 363
    Solution 363
    Examples 373

    Chapter 29: Emergent Leader 375
    Problem 375
    Solution 375
    Examples 392

    Part VI: Patterns of Communication between Nodes 393

    Chapter 30: Single-Socket Channel 395
    Problem 395
    Solution 395
    Examples 397

    Chapter 31: Request Batch 399
    Problem 399
    Solution 399
    Examples 404

    Chapter 32: Request Pipeline 405
    Problem 405
    Solution 405
    Examples 408

    References 409
    Index 413

    Top