These are chat archives for atomix/atomix
The refactoring for Copycat 2.0 is just about complete. But there's still a long way to go in terms of stability, and it will likely take some time considering my limited availability these days.
None of the critical components of the Raft implementation were touched, but plenty was still changed:
TransportAPI was replaced with a Copycat specific
ProtocolAPI that facilitates plugging in different types of protocols, e.g. TCP, HTTP, or web sockets (for Atomix)
Buffers and state machine input, output and events are
Buffers as well. This allows for better memory management and for the user (and Atomix) to handle serialization themselves. This also significantly reduces the amount of unnecessary serialization/deserialization that takes place inside the server.
LogReaderthat tracks that node's position in the leader's log. Log compaction was also redesigned to reduce memory consumption and improve efficiency.
Querys were replaced with
Buffers. Copycat is unopinionated about how state machines handle those operations.
So, overall Copycat has been simplified significantly. And while Copycat has become decidedly less opinionated, Atomix will become a bit more opinionated in some respects. That phase of refactoring is currently in progress and I should start pushing to the Atomix 2.0 branch some time this week. As I mentioned previously, Atomix 2.0 will have: