Trex: An embeddable Paxos engine for the JVM
Checkout the blog posts for a description of this implementation of Paxos Made Simple. s
Building
# Kick the tires
sbt clean test it:test
sbt coverageReport
See the .travis.yml
for supported jdk and scala versions.
Releasing
Create a release:
sbt> sonatypeDrop comgithubtrex-paxos-1029
sbt> publishSigned
sbt> sonatypeReleaseAll
Status / Work Plan
0.1 - library (released)
- replace pickling
- fix driver
- is retransmission of accepted values actually safe?
- overrideable send methods
- fix the fixmes
- extract a core functional library with no dependencies
- breakup monolithic actor and increase unit test coverage
- java demo
0.2 - Flexible paxos (FPaxos) hooks
- pluggable quorum strategy in the library
0.3 - integrity
- crc32 message integrity
0.4.0 - Remove Akka dependence from core (keep in tests)
- expose more methods for new rsocket code
0.4.1 - Remove Akka dependence from core (keep in tests) #2
- Unpickle byte[] for Java clients
0.5.0 - JPickle for Java Journal
0.a - practical
- dynamic cluster membership with UPaxos
0.b - enhanced
- learners / scale-out multicast
- timeline reads
- noop heartbeats (less duels and partitioned leader detection)
- snapshots and out of band retransmission
- metrics/akka-tracing
- binary tracing
- jumbo UDP packets
- complete the TODOs
0.c - performance
- strong reads
- outdated reads
- optimised journal
- batching
- remove remote actor from client driver
- replica strong reads
- compression
- journal truncation by size
- periodically leader number boosting
0.d
- final API
- hand-off reads?
M1
- transaction demo
- ???
Attribution
The TRex icon is Tyrannosaurus Rex by Raf Verbraeken from the Noun Project licensed under CC3.0