Patterns of Distributed Systems

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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.

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

Author(s): Unmesh Joshi
Series: Addison-Wesley Signature - A Martin Fowler Signature Book
Edition: 1
Publisher: Addison-Wesley Professional
Year: 2023

Language: English
Commentary: Lacks of copyright information and other introductory material typical in a book: seems to be incomplete. (More interesting info: https://martinfowler.com/articles/patterns-of-distributed-systems/)
City: Boston, MA
Tags: Distributed Systems; Distributed Systems Patterns; Data Replication; Data Partitioning; Distributed Time; Cluster Management; Communication Nodes

Part I. Narratives

Chapter 1. Why Distribute?
Chapter 2. Overview of the Patterns

Part II. Patterns of Data Replication

Chapter 3. Write-Ahead Log
Chapter 4. Segmented Log
Chapter 5. Low-Water Mark
Chapter 6. Leader and Followers
Chapter 7. HeartBeat
Chapter 8. Paxos
Chapter 9. Replicated Log
Chapter 10. Quorum
Chapter 11. Generation Clock
Chapter 12. High-Water Mark
Chapter 13. Singular Update Queue
Chapter 14. Request Waiting List
Chapter 15. Idempotent Receiver
Chapter 16. Follower Reads
Chapter 17. Versioned Value
Chapter 18. Version Vector

Part III. Patterns of Data Partitioning

Chapter 19. Fixed Partitions
Chapter 20. Key-Range Partitions
Chapter 21. Two Phase Commit

Part IV. Patterns of Distributed Time

Chapter 22. Lamport Clock
Chapter 23. Hybrid Clock
Chapter 24. Clock-Bound Wait

Part V. Patterns of Cluster Management

Chapter 25. Consistent Core
Chapter 26. Lease
Chapter 27. State Watch
Chapter 28. Gossip Dissemination
Chapter 29. Emergent Leader

Part VI. Patterns of communication between nodes

Chapter 30. Single Socket Channel
Chapter 31. Request Batch
Chapter 32. Request Pipeline

Bibliography