Книги и журналы » Компьютерная литература » Программирование (книги)
Patterns of Distributed SystemsГод издания: 2024
Автор: Joshi U.
Издательство: Pearson
ISBN: 978-0-13-822198-0
Язык: Английский
Формат: PDF/ePub
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 456
Описание: Learn How to Better Understand Distributed System Design and Solve Common Problems.
Enterprises today rely on a range of distributed software handling data storage, messaging, system management, and compute capability. Distributed system designs need to be implemented in some programming language, and there are common problems that these implementations need to solve. These problems have common recurring solutions. A patterns approach is very suitable to describe these implementation aspects.
Patterns by nature are generic enough to cover a broad range of products from cloud services like Amazon S3 to message brokers like Apache Kafka to infrastructure frameworks like Kubernetes to databases like MongoDB or Actor frameworks like Akka. At the same time the pattern structure is specific enough to be able to show real code. The beauty of this approach is that even if the code structure is shown in one programming language (Java in this case), the structure applies to many other programming languages. Patterns also form a "system of names," with each name having specific meaning in terms of the code structure.
The set of patterns presented in Patterns of Distributed Systems will be useful to all developers--even if they are not directly involved in building these kinds of systems, and mostly use them as a black box. Learning these patterns will help readers develop a deeper understanding of the challenges presented by distributed systems and will also help them choose appropriate cloud services and products. Coverage includes Patterns of Data Replication, Patterns of Data Partitioning, Patterns of Distributed Time, Patterns of Cluster Management, and Patterns of Communication Between Nodes.
We can now define the term distributed systems as used in this book. The software systems which store data, runs as multiple processes across multiple servers to coordinate and have an agreement on the state of that data. There are various kinds of distributed systems. But the ones we will focus on, have following characteristics.
One of the key requirements for finding the patterns is to study actual code bases. To find and document patterns in this book, code base of various systems was studied. Kafka, Cassandra, MongoDB, Pulsar, etcd, Zookeeper, CockroachDB, YugabyteDB, Akka, JGroups to name a few.
The patterns approach used here will help you:
- Learn what a distributed system is and why distributed systems are needed
- Understand the implementation of a wide range of systems such as databases, in-memory data grids, message brokers, and various cloud services
- Prepare you to confidently traverse through open source codebases and discover how patterns and solutions map to real world systems like Kafka and Kubernetes
[spoiler="Примеры страниц (скриншоты)"]

[/spoiler]
[spoiler="Оглавление"]
Foreword xvii
Preface xix
Acknowledgments xxiii
About the Author xxv
Part I: Narratives 1
Chapter 1: The Promise and Perils of Distributed Systems 3
Chapter 2: Overview of the Patterns 13
Part II: Patterns of Data Replication 69
Chapter 3: Write-Ahead Log 71
Chapter 4: Segmented Log 77
Chapter 5: Low-Water Mark 81
Chapter 6: Leader and Followers 85
Chapter 7: HeartBeat 93
Chapter 8: Majority Quorum 99
Chapter 9: Generation Clock 103
Chapter 10: High-Water Mark 109
Chapter 11: Paxos 117
Chapter 12: Replicated Log 133
Chapter 13: Singular Update Queue 159
Chapter 14: Request Waiting List 167
Chapter 15: Idempotent Receiver 175
Chapter 16: Follower Reads 183
Chapter 17: Versioned Value 193
Chapter 18: Version Vector 203
Part III: Patterns of Data Partitioning 217
Chapter 19: Fixed Partitions 219
Chapter 20: Key-Range Partitions 243
Chapter 21: Two-Phase Commit 257
Part IV: Patterns of Distributed Time 299
Chapter 22: Lamport Clock 301
Chapter 23: Hybrid Clock 309
Chapter 24: Clock-Bound Wait 317
Part V: Patterns of Cluster Management 335
Chapter 25: Consistent Core 337
Chapter 26: Lease 345
Chapter 27: State Watch 355
Chapter 28: Gossip Dissemination 363
Chapter 29: Emergent Leader 375
Part VI: Patterns of Communication between Nodes 393
Chapter 30: Single-Socket Channel 395
Chapter 31: Request Batch 399
Chapter 32: Request Pipeline 405
References 409
Index 413
[/spoiler]