Martin Fowler's Blog, page 8
August 19, 2020
Distributed Systems Pattern: Single Socket Channel

When we are using Leader and Followers, we need to ensure that messages
between the leader and each follower are kept in order, with a retry
mechanism for any lost messages. We need to do this while keeping the cost
of new connections low, so that opening new connections doesn't increase
the system's latency. A Single Socket Channel maintains the order of the
requests sent to a server by using a single TCP connection
August 18, 2020
A brief review of the Kinesis Advantage2 ergonomic keyboard

About three-and-a-half years ago I bought a Kinesis Advantage2
ergonomic keyboard. This tool isn't cheap, and it's rather unusual in its
layout. But I use a keyboard all day, so I wanted one that maximized my
comfort and enjoyment at my work. I've found it a worthwhile investment.
A brief review of the Kinesys Advantage2 ergonomic keyboard

About three-and-a-half years ago I bought a Kinesys Advantage2
ergonomic keyboard. This tool isn't cheap, and it's rather unusual in its
layout. But I use a keyboard all day, so I wanted one that maximized my
comfort and enjoyment at my work. I've found it a worthwhile investment.
Distributed Systems Pattern: Low-Water Mark

The write ahead log maintains every update to persistent store. It can
grow indefinitely over time. Segmented Log allows dealing with smaller
files at a time, but total disk storage can grow indefinitely if not
checked. A Low-Water Mark acts an index in the write ahead log showing
which portion of the log can be discarded.
August 13, 2020
Distributed Systems Pattern: Segmented Log

A single log file can grow and become a performance bottleneck while
its read at the startup. Older logs are cleaned up periodically and doing
cleanup operations on a single huge file is difficult to implement. A
Segmented Log splits the logfile into smaller files.
August 11, 2020
Distributed Systems Pattern: Write-Ahead Log

In the latest part of his collection of Patterns of Distributed
Systems, Unmesh faces the problem of a server failing in the middle of a
complex update. A write-ahead log first saves and replicates the data for
expected update in an append-only log, so if a failure occurs, we can
recover the correct state.
Distributed Systems Pattern: Quorum

Distributed systems may get partitioned, when the nodes in the cluster
no longer talk to all the others. Unmesh explains that, because of this,
we need a quorum of nodes within a partition to accept a
change.
August 6, 2020
Distributed Systems Pattern: Leader and Followers

In a distributed system, it's often best to not make all the nodes
equal. Unmesh shows how a leader can simplify coordination
across a cluster, and how choosing that leader is often tricky.
August 5, 2020
Distributed Systems Pattern: High-Water Mark

Unmesh adds High-Water Mark to his collection of patterns. The
high-water mark is an index into the log file that records the last log
entry that is known to have successfully replicated to a Quorum of
followers. The leader also passes on the high-water mark to its followers
during its replication. All servers in the cluster should only transmit
data to clients that reflects updates that are below the high-water
mark.
August 4, 2020
Patterns of Distributed Systems

Over the last few months, my colleague Unmesh Joshi has been running
workshops to teach developers about distributed systems design. In this
work he's been delving into many open-source distributed systems and
identifying patterns. As he writes them up, he's publishing the patterns
on my site.
Today he's publishing an initial narrative article that ties the first
batch of patterns together, and two of these patterns: Heartbeat and
Generation Clock. He has another handful of patterns close to publication
that he hops to publish over the next few weeks, and more will come as he
continues to develop this work.
Martin Fowler's Blog
- Martin Fowler's profile
- 1099 followers
