• Stars
    star
    713
  • Rank 63,494 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A raft-based java library for building high-available, high-durable, strong-consistent commitlog.

Introduction

Build Status Maven Central Coverage Status License

A raft-based java library for building high-available, high-durable, strong-consistent commitlog, which could act as the persistent layer for distributed storage system, i.e. messaging, streaming, kv, db, etc.

Dledger has added many new features that are not described in the original paper. It has been proven to be a true production ready product.

Features

  • Leader election
  • Preferred leader election
  • Pre-vote protocol
  • High performance, high reliable storage support
  • Parallel log replication between leader and followers
  • Asynchronous replication
  • State machine
  • Multi-Raft
  • High tolerance of symmetric network partition
  • High tolerance of asymmetric network partition
  • Jepsen verification with fault injection

New features waiting to be added

  • Snapshot (working in progress)
  • Dynamic membership & configuration change
  • SSL/TLS support

Quick Start

Prerequisite

  • 64bit JDK 1.8+

  • Maven 3.2.x

How to Build

mvn clean install -DskipTests

Run Command Line

Help

Print Help in Command Line

java -jar example/target/dledger-example.jar

Appender

A high-available, high-durable, strong-consistent, append-only log store.

Start a Standalone Appender Server

java -jar example/target/dledger-example.jar appender

Append Data to Appender

java -jar example/target/dledger-example.jar append -d "Hello World"

After this command, you have appended a log which contains "Hello World" to the appender.

Get Data from Appender

java -jar example/target/dledger-example.jar get -i 0

After this command, you have got the log which contains "Hello World" from the appender.

RegisterModel

A simple multi-register model

Start a Standalone RegisterModel Server

java -jar example/target/dledger-example.jar register

Write Value for a Key

java -jar example/target/dledger-example.jar write -k 13 -v 31

After this command, you have written a key-value pair which is <13, 31> to the register model.

Read Value for a Key

java -jar example/target/dledger-example.jar read -k 13

After this command, you have read the value 31 for the key 13 from the register model.

Contributing

We always welcome new contributions, whether for trivial cleanups, big new features. We are always interested in adding new contributors. What we look for are series of contributions, good taste and ongoing interest in the project. If you are interested in becoming a committer, please let one of the existing committers know and they can help you walk through the process.

License

Apache License, Version 2.0 Copyright (C) Apache Software Foundation

FOSSA Status

More Repositories

1

openmessaging-java

OpenMessaging Runtime Interface for Java
Java
722
star
2

benchmark

OpenMessaging Benchmark Framework
Java
384
star
3

specification

OpenMessaging Specification
281
star
4

openchaos

Chaos Framework proposes a unified API for vendors to provide solutions to various aspects of performing the principles of chaos engineering in cloud-native environment.
Java
149
star
5

openconnect

OpenConnect proposes a specification for messaging, eventing and streaming connect scenario which provides various sources and sinks.
Java
43
star
6

openmessaging-go

OpenMessaging Runtime Interface for Go
Go
30
star
7

openmessaging-dledger-jepsen

Consensus verification, with fault injection
Shell
22
star
8

openmessaging-cpp

OpenMessaging Runtime Interface for C++
C++
20
star
9

openschema

OpenSchema proposes a specification for data schema when exchanging the message and event in cloud-native applications.
19
star
10

openmessaging.github.io

OpenMessaging homepage
SCSS
14
star
11

openconnect-runtime

OpenMessaging connect runtime
Java
13
star
12

openmessaging-python

OpenMessaging Runtime Interface for Python
12
star
13

openmessaging-connect-odar

OpenConnect Runtime Implementation for Open Data Replicator
Java
10
star
14

openmessaging-storage

OpenMessaging Storage Interface
Java
7
star
15

tsc

OpenMessaging Technical Steer Committee (TSC)
6
star
16

openmessaging-cpp-jni

Experimental project for OpenMessaging JNI wrapper
C++
5
star
17

openmessaging-nodejs

OpenMessaging Runtime Interface for nodejs
3
star
18

openmessaging-streams

OpenMessaging streams interface
2
star
19

openmessaging-http

The http binding of openmessaging
1
star
20

openmessaging-spring

OpenMessaging Runtime Interface Spring Integration
1
star