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