These are chat archives for atomix/atomix
Atomix initially started as a set of strongly consistent replicated state machines multiplexed on top of Copycat. But the long term goal for Atomix has always been to develop a more broadly applicable distributed systems platform, integrating a number distributed systems protocols/algorithms from messaging to fault detection to partitioning to eventual consistency. That time has now come.
Copycat and Atomix have been used in ONOS for some time. Since it was integrated into ONOS, precisely the types of protocols/algorithms mentioned above have been built on top of Atomix in ONOS's distributed core. As part of a refactoring effort in ONOS, much of that work will now be migrated back into Atomix 2.0.
Atomix 2.0 will include the following features:
• Messaging layer
• Failure detection
• Generalized distributed systems protocols
• Phi accrual
• Consistent hashing
• Logical time utilities
• A larger library of distributed primitives
• Partitioned consistent data structures (map, set, way better collections, etc)
• Eventually consistent in-memory replicated data structures (anti-entropy, consistent hashing)
• Multiple Raft partitions for greater scalability
• In-memory partitions for optionally faster writes
• Cross-partition, cross-primitive transactions for grouping operations with various isolation levels (serializable, repeatable reads, read committed, etc)
As part of this effort, Copycat itself has undergone significant refactoring and has been merged back into Atomix:
• Clients have been rearchitected to support multiple logical sessions per client for greater parallelism and encapsulation across Atomix primitives
• State machines have been simplified to use only in-memory copies/on-disk snapshots for log compaction
• The log has been completely rewritten for lower memory consumption, faster reads/writes, and concurrent access
• Serialization has been replaced by Kryo
For a sneak peak at the code that will soon be merged back into Atomix
This branch represents the initial phase of refactoring, which involves refactoring/merging Copycat and implementing the low level protocol framework. Once that work is stable and well tested, partitions and primitives will be merged back into Atomix and the Atomix API will be restored. This effort is likely to take a couple more months of refactoring before an official release.
In the meantime, all continued development on Copycat & Atomix 1.x has stopped, and the Copycat project will eventually be abandoned. I simply don't have the time to continue work on those versions while taking on this effort in such a short time frame. But I'll still be here for questions and to review/merge PRs, and older versions of Copycat and Atomix will remain cursorily supported for minor bug fixes until around the end of the year.