{"id":18950307,"url":"https://github.com/raphadam/dkv","last_synced_at":"2025-07-17T17:43:36.067Z","repository":{"id":251205622,"uuid":"836692248","full_name":"raphadam/dkv","owner":"raphadam","description":"🕸️ Distributed Key-Value store using Raft  for consensus and Serf for peer discovery.","archived":false,"fork":false,"pushed_at":"2024-08-18T07:48:25.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-01T01:45:43.942Z","etag":null,"topics":["consensus","distributed-systems","golang","keyvalue","raft"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raphadam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-08-01T11:08:24.000Z","updated_at":"2024-08-18T07:48:27.000Z","dependencies_parsed_at":"2024-08-19T09:50:10.608Z","dependency_job_id":null,"html_url":"https://github.com/raphadam/dkv","commit_stats":null,"previous_names":["raphadam/dkv"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raphadam%2Fdkv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raphadam%2Fdkv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raphadam%2Fdkv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raphadam%2Fdkv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raphadam","download_url":"https://codeload.github.com/raphadam/dkv/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239946915,"owners_count":19723018,"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":["consensus","distributed-systems","golang","keyvalue","raft"],"created_at":"2024-11-08T13:22:17.421Z","updated_at":"2025-02-21T03:15:09.751Z","avatar_url":"https://github.com/raphadam.png","language":"Go","readme":"![Logo](docs/dkvlogo.png)\n\n## Introduction\n\nSimple yet powerful distributed key-value store written in Go. It uses the Raft consensus algorithm to ensure data consistency across nodes, Serf for node discovery and Prometheus for logging and monitoring. Exposes a RESTful JSON API for client interactions.\n\n## Features\n\n- **Distributed Consensus:** Utilizes the Raft algorithm to ensure consistency and reliability across nodes.\n- **Dynamic Node Discovery:** Implements Serf for efficient peer-to-peer node discovery and communication.\n- **Concurrency:** Nodes handle operations concurrently, ensuring scalability and performance.\n- **RESTful API:** Exposes a simple and intuitive REST/JSON API for client interactions.\n- **Monitoring and Logging:** Integrated with Prometheus for real-time monitoring and logging of metrics.\n\n## Usage\n\n### Dynamic Node Management\n\nThe cluster can dynamically scale, meaning nodes can join or leave at any time. This flexibility allows for easy scaling and fault tolerance.\n\n- **Read Requests:** Clients can send GET requests to any node in the cluster, and it will respond with the correct value, even if it’s not the leader.\n- **Write Requests:** Write operations must be directed to the leader node. If a client attempts to write to a follower node, it will be receive the address of the current leader.\n\n### API Reference\n\n- **Endpoint:** /\n- **Method:** POST\n\n**Request Body:**\n\n```json\n{\n    \"cmd\": \"set|get|delete\",\n    \"key\": \"your key\",\n    \"val\": \"your val\"\n}\n```\n\n**Response:**\n\n```json\n{\n    \"val\": \"val corresponding to the key\",\n}\n```\n\n## Future Work\n\nThis project is still under development with several features planned for future releases:\n\n- **Sharding:** Implementing sharding to distribute data across multiple nodes, enhancing scalability and performance.\n- **Consistent Hashing:** Introducing consistent hashing to ensure an even distribution of data and reduce the impact of node changes.\n- **Improved Load Balancing:** Developing strategies to balance read and write loads more effectively across the cluster.\n\n## Installation\n\n### Prerequisites\n\n- Go 1.22+\n- Git\n\n### Steps\n\nClone the repo:\n\n    git cline https://github.com/raphadam/dkv.git\n    cd dkv\n\nRun the command:\n\n    go run ./cmd\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraphadam%2Fdkv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraphadam%2Fdkv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraphadam%2Fdkv/lists"}