{"id":13441052,"url":"https://github.com/JDRaftKeeper/RaftKeeper","last_synced_at":"2025-03-20T11:35:01.815Z","repository":{"id":153285195,"uuid":"605938979","full_name":"JDRaftKeeper/RaftKeeper","owner":"JDRaftKeeper","description":"RaftKeeper is a high-performance distributed consensus service.","archived":false,"fork":false,"pushed_at":"2024-05-28T08:51:55.000Z","size":288538,"stargazers_count":104,"open_issues_count":30,"forks_count":35,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-29T00:02:18.343Z","etag":null,"topics":["coordination","kv-storage","raft"],"latest_commit_sha":null,"homepage":"","language":"C++","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/JDRaftKeeper.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":"2023-02-24T08:25:30.000Z","updated_at":"2024-07-25T07:20:08.780Z","dependencies_parsed_at":"2023-10-17T07:43:11.643Z","dependency_job_id":"986a3204-a8fb-4f35-8917-a5f95a12fda2","html_url":"https://github.com/JDRaftKeeper/RaftKeeper","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDRaftKeeper%2FRaftKeeper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDRaftKeeper%2FRaftKeeper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDRaftKeeper%2FRaftKeeper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDRaftKeeper%2FRaftKeeper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JDRaftKeeper","download_url":"https://codeload.github.com/JDRaftKeeper/RaftKeeper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221752230,"owners_count":16874949,"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":["coordination","kv-storage","raft"],"created_at":"2024-07-31T03:01:29.364Z","updated_at":"2025-03-20T11:35:01.799Z","avatar_url":"https://github.com/JDRaftKeeper.png","language":"C++","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"**RaftKeeper** is a high-performance distributed consensus service. \n\nIt is fully compatible with Zookeeper and can be accessed through the Zookeeper \nclient. It implements most of the functions of Zookeeper (except: Container node, \nTTL node, quota etc.) and provides some additional functions, such as more \nmonitoring indicators, manual Leader switching and so on. \n\nRaftKeeper provides same consistency guarantee:\n1. Responses must be returned in order in one session.\n2. All committed write requests must be handled in order, across all sessions.\n\nRaftKeeper stores its data in memory, while also offering robust data persistence \nthrough a combination of snapshots and operation logs. To enhance system efficiency, \nthe execution framework leverages a pipelined and batch processing approach, \nsignificantly boosting overall throughput. Crafted in C++, the system has undergone \nextensive low-level optimization to deliver superior performance, ensuring that it \noperates at peak efficiency.\n\nThe main features of RaftKeeper are its performance and query stability. \n1. The TPS is more than 2x higher than Zookeeper\n2. TP99 is smoother than Zookeeper\n\nSee [benchmark](benchmark%2FREADME.md) for details.\n\nRaftKeeper is derived from [ClickHouse](https://github.com/ClickHouse/ClickHouse) \nand take [NuRaft](https://github.com/eBay/NuRaft) as Raft implementation. \nWe really appreciate the excellent work of the ClickHouse and NuRaft teams.\n\n\n# How to start?\n\n## 1. Build RaftKeeper\n\n### Build on Ubuntu\n\nRequirement: Ubuntu 20.04+, Clang 17+, Cmake 3.20+\n```\n# install tools\nsudo apt-get install cmake llvm-17\n \n# clone project\ngit clone https://github.com/JDRaftKeeper/RaftKeeper.git\ngit submodule sync \u0026\u0026 git submodule update --init --recursive\n \n# build project\nexport CC=`which clang-17` CXX=`which clang++-17`\ncd RaftKeeper \u0026\u0026 /bin/bash build.sh\n\n# build for ClickHouse usage (for ClickHouse client is slightly incompatible with zookeeper)\ncd RaftKeeper \u0026\u0026 /bin/bash build.sh 'clickhouse'\n\n# now you can find built files in director 'build/'\n```\n\nNow RaftKeeper support build on Linux and Mac OX both x86 and arm64, details see [how-to-build](docs%2Fhow-to-build.md)\n\n## 2. Deploy RaftKeeper\n\nTo deploy a RaftKeeper cluster you can see [how-to-deploy](docs%2Fhow-to-deploy.md).\n\n## 3. Access RaftKeeper\n\nYou can use ZooKeeper's shell client [zkCli.sh](https://zookeeper.apache.org/doc/r3.6.0/zookeeperCLI.html) \nto access to RaftKeeper, or you can use Java, python or C ZooKeeper clients to access it.\nThe following is a `zkCli.sh` demo\n\n```\n./zkCli.sh -server localhost:8101\n```\nAlso, RaftKeeper supports Zookeeper's [4lw command](https://zookeeper.apache.org/doc/r3.6.0/zookeeperAdmin.html#sc_zkCommands).\n4lw command provide the ability to monitor and manage RaftKeeper, details see [how-to-monitor-and-manage](docs%2Fhow-to-monitor-and-manage.md)\n\n# How to migrate from Zookeeper?\n\nRaftKeeper provides a tool to translate Zookeeper data to RaftKeeper format. So you can \nsimply move the translated data into RaftKeeper, detail is in [how-to-migrate-from-zookeeper](docs%2Fhow-to-migrate-from-zookeeper.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJDRaftKeeper%2FRaftKeeper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJDRaftKeeper%2FRaftKeeper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJDRaftKeeper%2FRaftKeeper/lists"}