[HN Gopher] State machine replication, and why you should care
___________________________________________________________________
State machine replication, and why you should care
Author : yminsky
Score : 91 points
Date : 2022-04-20 17:13 UTC (5 hours ago)
(HTM) web link (signalsandthreads.com)
(TXT) w3m dump (signalsandthreads.com)
| lbhdc wrote:
| This was an interesting episode. However, I thought this pattern
| was called actors. Did anyone else get that sense? I have never
| heard that called a state machine.
| samiskin wrote:
| This seems like a more restrictive version where the "Actors"
| must also be entirely deterministic and single threaded without
| really blocking in the middle of processing something.
| caca3 wrote:
| simonpure wrote:
| If you're interested in this topic, I highly suggest some of the
| talks and papers about the LMAX Disruptor [0] and Martin
| Thompson's latest project Aeron [1]. It targets the JVM, but the
| lessons are generally applicable since I don't think Concord/Aria
| are open source.
|
| [0] https://lmax-exchange.github.io/disruptor/ [1]
| https://github.com/real-logic/aeron
| bob1029 wrote:
| The LMAX disruptor (and the principles behind it) are quite
| amazing.
|
| We are using it right now as the foundation for a new business
| administration platform.
|
| It's even more ridiculous in .NET due to enhancements relative
| to value types:
|
| https://medium.com/@ocoanet/improving-net-disruptor-performa...
|
| In .NET6, this is potentially one of the fastest ways to
| serialize an arbitrary # of threads.
| crdrost wrote:
| There's a whole database, Datomic, that works roughly this way --
| not the UDP multicast but the idea of having a slightly more
| nuanced consistency/availability/partition tolerance tradeoff by
| having a thin transaction organizer which is not partition
| tolerant and officially states which one came first and second,
| upstream of the replicas that grant normal availability.
|
| I would have liked the discussion about Raft/Paxos that they said
| they'd leave out of this episode though :(
| michael_j_ward wrote:
| Sounds similar to xtdb
|
| https://github.com/xtdb/xtdb
| tekacs wrote:
| Yeah as I understand it XTDB was built by Juxt after using
| Datomic for a long while, to make a different set of trade-
| off choices.
|
| Whenever one comes up, the other is likely to be mentioned
| close at hand:
|
| https://docs.xtdb.com/resources/faq/#comparisons
| refset wrote:
| CORFU and Tango are interesting research implementations in
| this general area, with emphasis on a dedicated "sequencer" -
| see https://rebeccabilbro.github.io/the-shared-log-abstraction/
|
| Facebook's LogDevice had a similar sequencer component too
| https://engineering.fb.com/2017/08/31/core-data/logdevice-a-...
| jasonwatkinspdx wrote:
| Yeah, and the key idea here is that the sequencer is soft
| state that can be recovered from the log at any time. It acts
| to improve throughput while it's up, but if it's down the
| system can still make progress. The key to this is that the
| log is the ultimate ground source of truth, and individual
| entries in the log are write once. This means racing writers
| can detect and work around each other in the absence of a
| sequencer, via the hole filling protocol.
| bitbckt wrote:
| FaunaDB (fauna.com) is a commercial system based on Calvin.
|
| Disclosure: I work on FaunaDB.
| runevault wrote:
| What's the state of Datomic these days? I stopped keeping up
| with it a while back when I stopped really paying attention to
| the Clojure space in general. Last I remember hearing it was
| still a purely pay to use their instances sort of deal.
| capableweb wrote:
| > What's the state of Datomic these days?
|
| Continuous, minor improvements over time (just like Clojure).
| Nothing too groundbreaking lately AFAIK, but still worthy to
| use if you have the use cases for it. Changelog can be found
| here: https://docs.datomic.com/on-prem/changes.html
___________________________________________________________________
(page generated 2022-04-20 23:00 UTC)