{"id":13630850,"url":"https://github.com/openmessaging/dledger","last_synced_at":"2026-01-11T16:54:28.330Z","repository":{"id":37019645,"uuid":"158656889","full_name":"openmessaging/dledger","owner":"openmessaging","description":"A raft-based java library for building high-available, high-durable, strong-consistent commitlog.","archived":false,"fork":false,"pushed_at":"2024-12-17T12:18:25.000Z","size":899,"stargazers_count":812,"open_issues_count":42,"forks_count":319,"subscribers_count":42,"default_branch":"master","last_synced_at":"2024-12-17T13:24:12.752Z","etag":null,"topics":["commitlog","java-library","raft"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openmessaging.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-22T07:09:42.000Z","updated_at":"2024-12-09T16:07:26.000Z","dependencies_parsed_at":"2023-01-17T13:45:43.624Z","dependency_job_id":"bc478cef-b02b-4a8e-9974-37dd5d13feeb","html_url":"https://github.com/openmessaging/dledger","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmessaging%2Fdledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmessaging%2Fdledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmessaging%2Fdledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmessaging%2Fdledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openmessaging","download_url":"https://codeload.github.com/openmessaging/dledger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249360020,"owners_count":21257152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["commitlog","java-library","raft"],"created_at":"2024-08-01T22:02:01.083Z","updated_at":"2026-01-11T16:54:28.304Z","avatar_url":"https://github.com/openmessaging.png","language":"Java","readme":"\n## Introduction\n[![Build Status](https://www.travis-ci.org/openmessaging/dledger.svg?branch=master)](https://www.travis-ci.org/search/dledger) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.openmessaging.storage/dledger/badge.svg)](http://search.maven.org/#search%7Cga%7C1%7Copenmessaging-storage-dledger)  [![Coverage Status](https://coveralls.io/repos/github/openmessaging/openmessaging-storage-dledger/badge.svg?branch=master)](https://coveralls.io/github/openmessaging/openmessaging-storage-dledger?branch=master) [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n\nA 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.\n\nDledger has added many new features that are not described in the [original paper](https://raft.github.io/raft.pdf). It has been proven to be a true production ready product. \n\n\n## Features\n\n* Leader election\n* Preferred leader election\n* [Pre-vote protocol](https://web.stanford.edu/~ouster/cgi-bin/papers/OngaroPhD.pdf)\n* High performance, high reliable storage support\n* Parallel log replication between leader and followers\n* Asynchronous replication\n* State machine\n* Multi-Raft\n* High tolerance of symmetric network partition\n* High tolerance of asymmetric network partition\n* [Jepsen verification with fault injection](https://github.com/openmessaging/openmessaging-dledger-jepsen)\n\n### New features waiting to be added ###\n* Snapshot (working in progress)\n* Dynamic membership \u0026 configuration change\n* SSL/TLS support\n\n## Quick Start\n\n### Prerequisite\n\n* 64bit JDK 1.8+\n\n* Maven 3.2.x\n\n### How to Build\n\n```\nmvn clean install -DskipTests\n```\n\n### Run Command Line\n\n#### Help\n\n\u003e Print Help in Command Line\n\n```shell\njava -jar example/target/dledger-example.jar\n```\n\n#### Appender\n\n**A high-available, high-durable, strong-consistent, append-only log store.**\n\n\u003e Start a Standalone Appender Server\n\n```shell\njava -jar example/target/dledger-example.jar appender\n```\n\n\u003e Append Data to Appender\n\n```shell\njava -jar example/target/dledger-example.jar append -d \"Hello World\"\n```\nAfter this command, you have appended a log which contains \"Hello World\" to the appender.\n\n\u003e Get Data from Appender\n\n```shell\njava -jar example/target/dledger-example.jar get -i 0\n```\nAfter this command, you have got the log which contains \"Hello World\" from the appender.\n\n#### RegisterModel\n\n**A simple multi-register model**\n\n\u003e Start a Standalone RegisterModel Server\n\n```shell\njava -jar example/target/dledger-example.jar register\n```\n\n\u003e Write Value for a Key\n\n```shell\njava -jar example/target/dledger-example.jar write -k 13 -v 31\n```\n\nAfter this command, you have written a key-value pair which is \u003c13, 31\u003e to the register model.\n\n\u003e Read Value for a Key\n\n```shell\njava -jar example/target/dledger-example.jar read -k 13\n```\n\nAfter this command, you have read the value 31 for the key 13 from the register model.\n\n## Contributing\nWe 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.\n\n## License\n[Apache License, Version 2.0](https://github.com/openmessaging/openmessaging-storage-dledger/blob/master/LICENSE) Copyright (C) Apache Software Foundation\n \n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fopenmessaging%2Fopenmessaging-storage-dledger.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fopenmessaging%2Fopenmessaging-storage-dledger?ref=badge_large)\n\n\n\n\n\n\n\n\n\n\n\n\n","funding_links":[],"categories":["Java","分布式开发"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmessaging%2Fdledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmessaging%2Fdledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmessaging%2Fdledger/lists"}