xline-kv / Xline

A geo-distributed KV store for metadata management
https://xline.cloud
Apache License 2.0
562 stars 70 forks source link
cloud-native distributed-systems high-availability

Xline

Xline-logo

Discord Shield Apache 2.0 licensed FOSSA Status Build Status codecov OpenSSF Best Practices

Welcome to the Xline Project!

Xline is meant to provide high-performance, strongly consistent metadata management for data centers in WAN.

Scope

At a high level, we expect the scope of Xline to be restricted to the following functionalities:

cncf-logo

Xline is a sandbox project of the Cloud Native Computing Foundation (CNCF).

If you have any questions, suggestions, or would like to join the xline's discussions, please feel free to join our Discord channel.

Motivation

With 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.

In 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.

This 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.

Innovation

Cross-datacenter network latency is the most important factor that impacts the performance of geo-distributed systems, especially when a consensus protocol is used. We know consensus protocols are popular to use to achieve high availability. For instance, Etcd uses the Raft protocol, which is quite popular in recently developed systems.

Although Raft is stable and easy to implement, it takes 2 RTTs to complete a consensus request from the view of a client. One RTT takes place between the client and the leader server, and the leader server takes another RTT to broadcast the message to the follower servers. In a geo-distributed environment, an RTT is quite long, varying from tens of milliseconds to hundreds of milliseconds, so 2 RTTs are too long in such cases.

We adopt a new consensus protocol named CURP to resolve the above issue. Please refer to the paper for a detailed description. The main benefit of the protocol is reducing 1 RTT when contention is not too high. As far as we know, Xline is the first product to use CURP. For more protocol comparison, please refer to the blog

Performance Comparison

We compared Xline with Etcd in a simulated multi-cluster environment. The details of the deployment is shown below.

test deployment

We compared the performance with two different workloads. One is 1 key case, the other is 100K key space case. Here's the test result.

xline key perf

It's easy to tell Xline has a better performance than Etcd in a geo-distributed multi-cluster environment.

Xline client

For more information about the Xline client SDK, or the Xline client command line tool, please refer to the following documents:

Quick Start

To get started, check out the document QUICK_START.md for in-depth information and step-by-step instructions.

Contribute Guide

Our project welcomes contributions from any member of our community. To get started contributing, please see our CONTRIBUTING.md.

Code of Conduct

The Xline project adheres to the CNCF Community Code of Conduct . It describes the minimum behavior expected from all contributors.

Roadmap

License

FOSSA Status