[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)