RAMCloud Project
ramcloud.atlassian.net
ramcloud.atlassian.net
Right now, I think that the algo is used in RAMCloud via LogCabin (https://github.com/logcabin/logcabin).
Raft is more practical (as in "well specified") than Paxos and closest to its lesser known cousin, VR (Viewstamped Replication). Beyond the academic genealogy of the project, what is interesting here is the fact that usability is a first-class concern. Clearly the fact that it was born out of a real/breathing project was a driving factor.
It wasn't just an academic being creative. To pick a notorious example, have a quick look at Leslie Lamport's paper on Paxos: you are never quite sure whether what you are reading is a distributed systems paper or a vintage edition of the Holy Bible.
So Raft had great timing too. It came after decades of clumsy (because novel!) systems research on consensus algos and from a laboratory of practitioners, hence its designers knew exactly how previous attempts were deficient with respect to their own needs. And it turns out these overlapped with a lot of people's. There is wisdom to be learnt from this.
Also, on another note I think that's funny because this narrative reads exactly like a startup-story!
For one thing, implementing Raft in a performant way is incredibly difficult. Where paxos has very fine-grained units of consensus (e.g., ballots), in Raft, everything happens through leases, and is totally linear. This is one of the major reasons a bunch of (all?) major Raft implementations do unprincipled things like non-quorum reads. This sort of problem also makes it very difficult to get Raft to do anything on an unreliable network. Raft is also super noisy, so you have to do stuff like piggy back heartbeats in other RPC calls.
One way of thinking about this is: in paxos much of the complexity is in the specification itself. Performant Raft pushes this complexity into external systems. Both of these are extremely hard problems. There is no free lunch.
If the problem is really just verifying the model, then I think you are better off writing a simple modeling language, writing paxos in it, and then compiling that to c++ or something. This was the approach Google took in paxos made live[1] for example.
[1]: http://www.read.seas.harvard.edu/~kohler/class/08w-dsi/chand...
[0] https://atscaleconference.com/videos/scale-2018-run-your-dat...
I once implemented a MariaDB storage engine that used RAMCloud for storage, and it was an eye-opening experience. With blazingly fast reads and writes, latency was the number one performance issue for us.
How does this work if someone is doing multiple sequential writes? Doesn't backup-ing to disk take a lot longer than writing to _RAM_ meaning some writes could get lost?
I'm thinking there must be a delay during which loss of power will result in loss of data that was acknowledged as written. Is this something that RAMCloud overcomes in a novel way, or is the answer simply that the data is replicated across many nodes?
How about the problem of raw bandwidth? If you keep sending writes to a node that exceeds the bandwidth of the persistent storage medium but is well within the capabilities of DRAM, the storage medium will never be able to catch up even if we allow a generous delay. Maybe this is a non-issue right now because you can't send more than a few dozen Gbps over the network anyway, and we just need to hope that flash performance will improve faster than 100GbE goes mainstream.
It's not by Atlassian...
If they're blogging about some tech, maybe they need to dogfood that first.. especially when it's due to performance
This is a stanford.edu project wiki page, hosted by Atlassian. Nothing more.
By the same logic, any performance improvement that Github might see from random projects hosted on Github, should be "dogfooded" in the same way.
It's not dogfooding when it's someone else's work.
Let's break this apart a bit more slowly.
They did not blog about this.
Their users did.
Atlassian, the company hosting it, did not write the post.
Their customers, the people using Atlassian's servers, did write the post.
https://twitter.com/justincormack/status/1059540644245295105
The NAND SSD (dark blue line) is still hitting good performance but at ~250K queries per second hits P99 latencies above 1ms (a typical SLA Netflix calls out for their own caching using extstore). The Optane SSD (light blue line) stays well below 1ms P99 latencies up to ~500K queries per second.
DRAM alone can handle more throughput but by then you have to take into account what your network can handle.
Edit: Double checked, and it is - somewhat - for sure. Including "2009" in the title would be misleading.
Domain.com: Congratulations! your domain is available. l1cache.net $12.99