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



more…

 •  0 comments  •  flag
Share on Twitter
Published on August 19, 2020 07:57

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.



more…

 •  0 comments  •  flag
Share on Twitter
Published on August 18, 2020 08:06

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.



more…

 •  0 comments  •  flag
Share on Twitter
Published on August 18, 2020 08:06

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.



more…

 •  0 comments  •  flag
Share on Twitter
Published on August 18, 2020 06:26

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.



more…

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on August 13, 2020 06:58

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.



more…

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on August 11, 2020 07:07

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.



more…

2 likes ·   •  0 comments  •  flag
Share on Twitter
Published on August 11, 2020 07:07

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.



more…

3 likes ·   •  0 comments  •  flag
Share on Twitter
Published on August 06, 2020 06:38

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.



more…

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on August 05, 2020 10:20

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.



more…

2 likes ·   •  0 comments  •  flag
Share on Twitter
Published on August 04, 2020 07:37

Martin Fowler's Blog

Martin Fowler
Martin Fowler isn't a Goodreads Author (yet), but they do have a blog, so here are some recent posts imported from their feed.
Follow Martin Fowler's blog with rss.