RobustIRC
robustirc.net
robustirc.net
> For the entire duration of the partition, users on the smaller half will be paralyzed
No. RobustIRC nodes that are not part of the majority will cancel long-running GetMessages requests and refuse any other requests. The client will switch to a different node.
This is even mentioned as a possibility in a later paragraph:
> I’ll leave the reader to think through some scenarios, such as establishing a temporary domain of consensus on the smaller half, or forcing users to reconnect to the larger half.
Given this piece of information, I’m not sure what the article’s point really is. At least for the current deployments, the RobustIRC design works well in practice. Sure, strictly speaking, RobustIRC cannot _entirely_ eliminate unavailability (nothing can), but in practice you can work around unavailability really well.
Raft dictates a topology where the leader must be able to reach all followers directly, though.
And no one claims, that RobustIRC is AP. It will survive most netsplits without real problems, but of course, if the network splits such that you as a user can't reach any of the serves in the majority partition, you can't participate. But a) this isn't very probable, unless b) you can reach no server at all (in which case, obviously, regular IRC also fails). You might even claim, that the fact that RobustIRC includes the user as a part of the "network" (by not relying on a single identifying TCP connection, but instead offering carrying over a session to a different server) it handles most netsplits better then traditional IRC (because it has less user impact).
tl;dr: RobustIRC makes the conscious choice to sacrifice some availability for consistency. But even then, it can still be available through most netsplits.
There’s also a presentation and presentation slides on http://robustirc.net/docs.html
If you have a suggestion as to how to make it more clear/more succinct (?) what RobustIRC is, I’d be happy to hear it and improve the documentation.