Guess I can provide more details on the project Gary is referring to.
Raft library was implemented from scratch (at the time none of
available libraries seemed robust enough, mostly sync academic
exercises) in Java (sub 500us matching times, occasional GC in order
of 1-5ms max).
The inter-machine transport was off the shelf serialization over netty
(over 10ge point to point links across three machines) and raft logs -
to pcie SSD's.
Notably we implemented raft so that it operated in 'async' mode (e.g.
things like transport and serialization to disk was handled in batches
that inherently scaled with the load on the system) - this is where
disruptor's endOfBatch flag was a perfect match to our requirements.
And yes, it was pretty robust. One lesson learned was that in a
distributed system like this doing 48 hours long chaos monkey tests
(dropping interfaces, packets, packet loss, delays, simulating
hardware failures) in an automated fashion was a godsend. Couple of
really really tricky edge conditions were caught thanks to that.
K