trex-core


License

License

GroupId

GroupId

com.github.trex-paxos
ArtifactId

ArtifactId

trex-core_2.11
Last Version

Last Version

0.2
Release Date

Release Date

Type

Type

jar
Description

Description

trex-core
trex-core
Project URL

Project URL

http://trex-paxos.github.io/trex/
Project Organization

Project Organization

com.github.trex-paxos
Source Code Management

Source Code Management

https://github.com/trex-paxos/trex

Download trex-core_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.trex-paxos/trex-core_2.11/ -->
<dependency>
    <groupId>com.github.trex-paxos</groupId>
    <artifactId>trex-core_2.11</artifactId>
    <version>0.2</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.trex-paxos/trex-core_2.11/
implementation 'com.github.trex-paxos:trex-core_2.11:0.2'
// https://jarcasting.com/artifacts/com.github.trex-paxos/trex-core_2.11/
implementation ("com.github.trex-paxos:trex-core_2.11:0.2")
'com.github.trex-paxos:trex-core_2.11:jar:0.2'
<dependency org="com.github.trex-paxos" name="trex-core_2.11" rev="0.2">
  <artifact name="trex-core_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.trex-paxos', module='trex-core_2.11', version='0.2')
)
libraryDependencies += "com.github.trex-paxos" % "trex-core_2.11" % "0.2"
[com.github.trex-paxos/trex-core_2.11 "0.2"]

Dependencies

compile (7)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.8
com.github.trex-paxos : trex-library_2.11 jar 0.2
com.typesafe.akka : akka-actor_2.11 jar 2.3.15
com.typesafe.akka : akka-testkit_2.11 jar 2.3.15
org.mapdb : mapdb jar 1.0.9
com.typesafe.scala-logging : scala-logging_2.11 jar 3.1.0
com.typesafe.akka : akka-remote_2.11 jar 2.3.15

provided (2)

Group / Artifact Type Version
org.scoverage : scalac-scoverage-runtime_2.11 jar 1.1.0
org.scoverage : scalac-scoverage-plugin_2.11 jar 1.1.0

test (2)

Group / Artifact Type Version
org.scalatest : scalatest_2.11 jar 2.2.5
org.scalamock : scalamock-scalatest-support_2.11 jar 3.2.2

Project Modules

There are no modules declared in this project.

Build Status

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 -

  • expose more methods for new rsocket code

0.4.1 -

  • Unpickle byte[] for Java clients

0.5.0 - JPickle for Java Journal

0.6.0 - MVStore as Journal with backup method

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

com.github.trex-paxos
An Embeddable Multi-Paxos Consensus Engine For The JVM

Versions

Version
0.2
0.1