{"id":13632265,"url":"https://github.com/xline-kv/Xline","last_synced_at":"2025-04-18T02:32:22.487Z","repository":{"id":36989706,"uuid":"488840158","full_name":"xline-kv/Xline","owner":"xline-kv","description":"A geo-distributed KV store for metadata management","archived":false,"fork":false,"pushed_at":"2025-04-07T06:01:37.000Z","size":5442,"stargazers_count":660,"open_issues_count":39,"forks_count":78,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-13T00:46:50.447Z","etag":null,"topics":["cloud-native","distributed-systems","high-availability"],"latest_commit_sha":null,"homepage":"https://xline.cloud","language":"Rust","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/xline-kv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2022-05-05T05:13:54.000Z","updated_at":"2025-04-11T00:05:37.000Z","dependencies_parsed_at":"2023-01-17T11:47:11.374Z","dependency_job_id":"397bae12-1ade-43a9-be67-91a4b6b440b6","html_url":"https://github.com/xline-kv/Xline","commit_stats":null,"previous_names":["xline-kv/xline","datenlord/xline"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xline-kv%2FXline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xline-kv%2FXline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xline-kv%2FXline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xline-kv%2FXline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xline-kv","download_url":"https://codeload.github.com/xline-kv/Xline/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249414252,"owners_count":21267724,"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":["cloud-native","distributed-systems","high-availability"],"created_at":"2024-08-01T22:02:58.144Z","updated_at":"2025-04-18T02:32:20.227Z","avatar_url":"https://github.com/xline-kv.png","language":"Rust","funding_links":[],"categories":["Rust","Databases"],"sub_categories":[],"readme":"# Xline\n\n![Xline-logo](doc/img/xline-horizontal-black.png)\n\n[![Discord Shield][discord-badge]][discord-url]\n[![Apache 2.0 licensed][apache-badge]][apache-url]\n[![FOSSA Status][fossa-shield]][fossa-badge]\n[![Build Status][actions-badge]][actions-url]\n[![codecov][cov-badge]][cov-url]\n[![OpenSSF Best Practices][openssf-badge]](openssf-url)\n\n[fossa-badge]: https://app.fossa.com/projects/git%2Bgithub.com%2Fxline-kv%2FXline?ref=badge_shield\n[fossa-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Fxline-kv%2FXline.svg?type=shield\n[discord-badge]: https://discordapp.com/api/guilds/1110584535248281760/widget.png?style=shield\n[discord-url]: https://discord.gg/hqDRtYkWzm\n[apache-badge]: https://img.shields.io/badge/license-Apache--2.0-brightgreen\n[apache-url]: https://github.com/xline-kv/Xline/blob/master/LICENSE\n[actions-badge]: https://github.com/xline-kv/xline/actions/workflows/pull_request.yml/badge.svg?branch=master\n[actions-url]: https://github.com/xline-kv/xline/actions\n[cov-badge]: https://codecov.io/gh/xline-kv/xline/branch/master/graph/badge.svg\n[cov-url]: https://codecov.io/gh/xline-kv/xline\n[openssf-badge]: https://bestpractices.coreinfrastructure.org/projects/7571/badge\n[openssf-url]: https://bestpractices.coreinfrastructure.org/projects/7571\n\nWelcome to the Xline Project!\n\n`Xline` is meant to provide high-performance, strongly consistent metadata management for data centers in WAN.\n\n## Scope\nAt a high level, we expect the scope of Xline to be restricted to the following functionalities:\n- Cloud-native, compatible with the Kubernetes ecosystem.\n- Support geo-distributed friendly deployment.\n- Supports a rich set of key-value (KV) interfaces, fully compatible with etcd's API.\n- Ensures high performance and strong consistency in a wide-area network environment, using the CURP protocol as the underlying consensus protocol.\n\n![cncf-logo](./doc/img/cncf-logo.png)\n\nXline is a sandbox project of the [Cloud Native Computing Foundation](https://cncf.io/) (CNCF).\n\nIf you have any questions, suggestions, or would like to join the xline's discussions, please feel free to join our [Discord channel][discord-url].\n\n## Motivation\n\nWith the widespread adoption of cloud computing, multi-cloud platforms (multiple public or hybrid clouds) have become the mainstream IT architecture for enterprise customers. However, multi-cloud platform architecture hinders data access between different clouds to some extent.\n\nIn addition, data isolation and data fragmentation due to cloud barriers have become obstacles to business growth. The biggest challenge of multi-cloud architectures is how to maintain strong data consistency and ensure high performance in the competitive conditions of multi-data center scenarios. Traditional single data center solutions cannot meet the availability, performance, and consistency requirements of multi-data center scenarios.\n\nThis project aims to enable a high-performance multi-cloud metadata management solution for multi-cloud scenarios, which is critical for organizations with geo-distributed and multi-active deployment requirements.\n\n## Innovation\n\nCross-datacenter network latency is the most important factor that impacts the\nperformance of geo-distributed systems, especially when a consensus protocol is\nused. We know consensus protocols are popular to use to achieve high\navailability. For instance, Etcd uses the [Raft](https://raft.github.io/)\nprotocol, which is quite popular in recently developed systems.\n\nAlthough Raft is stable and easy to implement, it takes 2 RTTs to complete a\nconsensus request from the view of a client. One RTT takes place between the\nclient and the leader server, and the leader server takes another RTT to\nbroadcast the message to the follower servers. In a geo-distributed environment,\nan RTT is quite long, varying from tens of milliseconds to hundreds of\nmilliseconds, so 2 RTTs are too long in such cases.\n\nWe adopt a new consensus protocol named\n[CURP](https://www.usenix.org/system/files/nsdi19-park.pdf) to resolve the above\nissue. Please refer to the paper for a detailed description. The main benefit of\nthe protocol is reducing 1 RTT when contention is not too high. As far as we\nknow, Xline is the first product to use CURP. For more protocol comparison, please\nrefer to the [blog](https://datenlord.github.io/xline-home/#/blog/2023-01-07-Curp:-Revisit-the-Consensus-Protocol)\n\n## Performance Comparison\n\nWe compared Xline with Etcd in a simulated multi-cluster environment. The\ndetails of the deployment is shown below.\n\n![test deployment](./doc/img/xline_test_deployment.jpg)\n\nWe compared the performance with two different workloads. One is 1 key case, the\nother is 100K key space case. Here's the test result.\n\n![xline key perf](./doc/img/xline-key-perf.png)\n\n\nIt's easy to tell Xline has a better performance than Etcd in a geo-distributed\nmulti-cluster environment.\n\n## Xline client\n\nFor more information about the Xline client SDK, or the Xline client command line tool, please refer to the following documents:\n\n* [Xline client sdk](crates/xline-client/README.md)\n* [xlinectl](crates/xlinectl/README.md)\n\n## Quick Start\n\nTo get started, check out the document [QUICK_START.md](doc/QUICK_START.md) for in-depth information and step-by-step instructions.\n\n## Contribute Guide\n\nOur project welcomes contributions from any member of our community. To get started contributing, please see our [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## Code of Conduct\n\nThe Xline project adheres to [the CNCF Community Code of Conduct](./CODE_OF_CONDUCT.md) . It describes the minimum behavior expected from all contributors.\n\n\n## Roadmap\n\n- v0.1 ~ v0.2\n    - Support all major Etcd APIs\n    - Support configuration file\n    - Pass validation tests (All the supported Etcd APIs and their validation test results can be viewed in [VALIDATION_REPORT.md](./VALIDATION_REPORT.md))\n- v0.3 ~ v0.5\n    - Enable persistent storage\n    - Enable snapshot\n    - Enable cluster membership change\n    - Implement a k8s operator basically\n- v0.6 ~ v0.8\n    - Enable to export metrics to some monitoring and alerting systems\n    - Enable SSL/TLS certificates\n    - Provide clients implementing in different languages, like go, python (not determined). \\[Note: Although the Xline is etcd-compatible, we provide an Xline specific client SDK to users for better performance. Currently this SDK is only in Rust lang, and we plan to extend it to other languages\\]\n\n- v1.0 ~\n  - Enable chaos engineering to validate the system's stability\n  - Integration with other CNCF components\n  - Support Karmada (a Kubernetes management system)\n\n\n## License\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fxline-kv%2FXline.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fxline-kv%2FXline?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxline-kv%2FXline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxline-kv%2FXline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxline-kv%2FXline/lists"}