首个跨云元数据KV存储Xline正式进入CNCF沙箱

news2024/11/20 1:47:12

2023年6月13日,云原生计算基金会(CNCF)宣布Xline正式被纳入CNCF沙箱(Sandbox)项目。Xline是由达坦科技(DatenLord)于2022年年底推出的开源项目,是一个用Rust语言写就的,用于元数据管理的分布式KV存储。

Xline是CNCF首个跨云元数据KV存储项目。Xline进入CNCF沙箱项目充分表明,在跨云领域,达坦科技(DatenLord)的开源技术被全球顶级开源基金会所认可。而Xline作为一个开源中立的项目,将与CNCF社区共同发展,助力云原生生态体系稳步迈入跨云时代。

Xline的诞生

在单数据中心场景下,元数据的管理已经有很多成熟的解决方案,etcd就是其中的佼佼者,但是在多数据中心场景下,etcd的性能受Raft共识协议的限制,它的性能和稳定性都大打折扣。随着互联网和云计算的业务规模越来越大,单个数据中心已经无法满足业务的需求,业务系统从单数据中心向多数据中心发展,多地多中心多活部署的需求也越来越普遍。

多数据中心架构最大的挑战是,如何保证数据跨数据中心访问的一致性和性能。比如索引、权限、配置等这类需要跨数据中心共享访问的元数据,如何在多中心竞争修改的场景下,仍然能保持一致性,并且保证访问性能。Xline由此应运而生。Xline是一个开源的分布式的KV存储,用来管理少量的关键性数据,并在跨云跨数据中心的场景下仍然保证高性能和数据强一致性。

Xline的特点

  • 一个分布式多集群KV存储引擎:在多集群场景下实现统一数据管理,使相互访问、发现和修改变得简单和方便。
  • 一个统一的元数据管理系统:通过在内存中缓存热数据实现跨云数据访问,并通过提供统一的数据管理来实现自动数据迁移和备份。
  • 一个高性能的多数据中心共识协议:它是第一个基于广域网共识协议的跨数据中心一致性管理服务器,解决了跨云融合和一致性的挑战。
  • 兼容etcd接口:提供KV接口,多版本并发控制,同时与K8S兼容,让用户使用和迁移更加流畅。

Xline的核心:Curp共识协议

CURP共识协议( Curp 共识协议的重新思考)的优势是将非冲突的proposal达成共识所需要的RTT从2个降为1,对于冲突的proposal仍然需要两个RTT,而etcd等主流分布式系统采用的Raft协议在任何情况下都需要两个RTT。

尽管Raft很稳定,也很易于实现,但从客户的角度来看,它需要2个RTT来完成一个共识请求。一个RTT发生在客户端和领导者服务器之间,而领导者服务器需要另一个RTT将消息广播给跟随者服务器。在广域网下的高延迟环境中,一个RTT的运行时间从几十到几百毫秒不等,两个RTT将是两个费时的过程。

两个RTT降为一个RTT所带来的性能提升在单数据中心场景下体现的并不明显,但是在多数据中心或者跨云场景下,RTT一般在几十到几百ms的数量级上,这时一个RTT的性能提升则相当明显。

Xline版本持续迭代

2023年5-6月刚发布的新版本实现如下改进:

  • 通过引入批处理机制提高网络带宽利用率;
  • 为CURP共识协议实现快照功能;
  • 实现快照相关API,且与etcdctl兼容。其余etcdctl维护中的API会在未来实现。
  • 添加watch进度通知机制

在对 Xline 做 benchmark 测试中,我们将 Xline 运行在多个 docker 镜像中,并通过 tc 来设置不同节点之间的网络延迟,模拟真实世界下广域网的延迟情况,具体的网络拓扑及 latency 大小可参考 Xline 测试网络拓扑。

基准测试报告也显示,Xline 在高网络延迟的场景下,针对无冲突的并发 PUT 请求,Xline 在吞吐量接近 etcd 的两倍,而在完全冲突的情况下,Xline 的吞吐量则略低于 etcd。这足以证明 Xline 在高延迟的广域网环境下能够比 etcd 有更好的性能表现。目前 Xline 还处在开发的早期阶段,我们也会在接下来的开发过程中,不断完善 benchmark 的测试用例,并提升 Xline 在冲突状态下的性能。

在下一个版本 v0.5.0 当中,我们计划增加如下特性:

  • 开始提供第一个基于 rust 版本 cmd line tool
  • 为 Xline 提供 k8s operator 来使其融入到 K8S 的生态当中
  • 提升 Xline 相关 TXN 操作的性能

Together We Grow!

在此感谢每一位参与的社区伙伴对Xline的帮助和支持,也欢迎更多使用者和开发者参与体验和使用Xline。我们希望得到你的参与和支持,你可以:

  • 加入Xline Discord: 

https://discord.gg/XyFXGpSfvb

  • 在GitHub上点颗星:

https://github.com/datenlord/Xline

  • 作为贡献者加入Xline: 

https://github.com/datenlord/Xline/blob/master/CONTRIBUTING.md

  • 去Xline官网,的技术干货:

www.xline.cloud

达坦科技(DatenLord)专注下一代云计算——“天空计算”的基础设施技术,致力于拓宽云计算的边界。达坦科技打造的新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云间壁垒,实现数据高效跨云访问,建立海量异地、异构数据的统一存储访问机制,为云上应用提供高性能安全存储支持。以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。

公众号:达坦科技DatenLord

DatenLord官网:http://www.datenlord.io

知乎账号:

达坦科技DatenLord - 知乎

B站

https://space.bilibili.com/2017027518

往期推荐

1. Xline 持久化存储设计与实现

2.如何优雅地组织Rust项目中的异步代码?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hello算法笔记之图

一、图的基础知识 图是一种非线性数据结构,由「顶点 Vertex」和「边 Edge」组成。 1.图的类型: 根据边是否具有方向可以分为有向图,无向图 根据所有顶点是否连通可以分为连通图(对于连通图,从某个顶点出发&#xf…

gdb系列-入门篇-day01

gdb基础命令 一个程序要被调试&#xff0c;编译的时候要加上-g选项&#xff0c;例如gcc -g … 先准备一个调试的小代码 #include <stdio.h>int hello() {printf("hello\n");return 0; }int main() {int a[5] {1,2,3,4,5};hello();for(int i0; i<5; i){pri…

springboot使用@Valid 和 @Validated 注解校验详解以及编写一个自定义全局异常类

package com.test.springvalid.config;import lombok.Data; import java.util.HashMap; import java.util.Map;/*** 通用返回结果&#xff0c;服务端响应的数据最终都会封装成此对象* param <T>*/ Data public class R<T> {private Integer code; //编码&#xff1…

Mybatis源码分析_Mapper接口是如何实例化的 (2)

我们在使用Springmybatis的时候&#xff0c;经常都是直接写一个接口和一个对应的 ***Mapper.xml文件&#xff0c;然后业务代码就可以直接注入这个接口了。它是如何做到的呢&#xff1f; 接口&#xff1a; xml 想搞清楚这个问题&#xff0c;那还是要从Mybatis底层源码进行分析的…

智能小车使用IIC屏幕做动作显示界面

一、简介 使用0.96寸IIC屏幕作为遥控动作的显示界面。 外设引脚 stm32f103c8t6单片机IIC引脚有两组 使用I2C1&#xff0c;对应的时钟与数据线分别为PB6、PB7。 IIC屏幕指令 // OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel // OLED_WR_Byte(0x00,OLED_CMD);//---se…

07- c语言指针 (C语言)

一 指针的引入 1、一般把内存中的一个字节称为一个内存单元。 2、为了正确地访问这些内存单元&#xff0c;必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址&#xff0c;通常也把这个地址称为指针。 3、如果在程序中定义…

车载网络测试 - CANCANFD - 基础篇_03

十、发送方式与过滤方式 1、广播发送及规则 我们以小组讨论现场为例来说明CAN总线广播发送规则&#xff1a; 1&#xff09;一个房间代表同一路CAN总线&#xff0c;每一个小组代表一个CAN Node&#xff0c;每一个小组成员发言代表发送一帧CAN报文&#xff0c;对所有的小组成员进…

生成对抗网络

1 GAN基本概念 1.1 GAN介绍 GAN的英文全称是Generative Adversarial Network&#xff0c;中文名是生成对抗网络。它由两个部分组成&#xff0c;生成器和鉴别器&#xff08;又称判别器&#xff09;&#xff0c;生成网络&#xff08;Generator&#xff09;负责生成模拟数据&…

【Python】异常处理 ④ ( 异常处理 else 语句 | 异常处理 finally 语句 )

文章目录 一、Python 异常捕获 else 语句1、异常捕获 else 语句2、代码示例 - 没有触发 else 语句的情况3、代码示例 - 触发 else 语句的情况 二、Python 异常捕获 finally 语句1、异常捕获 finally 语句2、代码示例 - 出现异常后执行 finally 语句 一、Python 异常捕获 else 语…

展示和标注图像:探索Gradio AnnotatedImage模块的功能

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

代码生成器原理分析

代码生成器原理分析 理解代码生成器的需求和实现思路掌握freemaker的使用 理解数据库中的元数据完成环境搭建工作 浅谈代码生成器 概述 在项目开发过程中&#xff0c;关注点更多是在业务功能的开发及保证业务流程的正确性上&#xff0c;对于重复性的代码编写占据了程 序员…

指标综合评价(定性指标定量化、指标正相关化、赋权重)

目录 一、定性指标定量化 二、将指标同型化 线性比例变换法 极差变换法 二、评价指标赋予权重 三、综合评价 战斗机性能的综合评价问题 例&#xff1a;战斗机的性能指标主要包括最大速度、飞行半径、最大负载、隐身性能、垂直起降性能、可靠性、灵敏度等指标和相关费用。…

Vue+Element UI 生鲜管理系统简介及项目搭建,页面布局(一)

文章目录 浅谈一、背景二、搭建创建vue项目vue项目结构简介安装Element UI库安装axios安装querystring安装normalize.css安装echarts运行删除无用组件基础css样式导入 三、页面布局配置路由布局flex布局&#xff08;弹性盒子&#xff09;固定布局固定布局配置路由 浅谈 自从入…

【Rust】2、实战:文件、网络、时间、进程-线程-容器、内核、信号-中断-异常

文章目录 七、文件和存储7.2 serde 与 bincode 序列化7.3 实现一个 hexdump7.4 操作文件7.4.1 打开文件7.4.2 用 std::fs::Path 交互 7.5 基于 append 模式实现 kv数据库7.5.1 kv 模型7.5.2 命令行接口 7.6 前端代码7.6.1 用条件编译定制要编译的内容 7.7 核心&#xff1a;LIBA…

【Java高级语法】(十五)lambda表达式:给你一颗语法糖Lambda,解析函数式编程的杰作~

Java高级语法详解之lambda表达式 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法结构3.2 案例3.2.1 无参Lambda3.2.2 带有一个参数3.2.3 带有多个参数3.2.4 方法引用的简化形式 4️⃣ 应用场景5️⃣ 优化技巧6️⃣ 原理7️⃣ 注意性能问题&#x1f33e; 总结 1️⃣ 概念 Java …

架构设计第十一讲:架构之高并发:限流

架构设计第十一讲&#xff1a;架构之高并发&#xff1a;限流 每个系统都有服务的上线&#xff0c;所以当流量超过服务极限能力时&#xff0c;系统可能会出现卡死、崩溃的情况&#xff0c;所以就有了降级和限流。限流其实就是&#xff1a;当高并发或者瞬时高并发时&#xff0c;为…

rabbitmq第三课-RabbitMQ高级功能详解以及常用插件实战

一、选择合适的队列. 实际上是可以选择三种队列类型的&#xff0c;classic经典队列&#xff0c;Quorum仲裁队列&#xff0c;Stream流式队列。 后面这两种队列也是RabbitMQ在最近的几个大的版本中推出的新的队列类型。3.8.x推出了Quorum仲裁队列&#xff0c;3.9.x推出了Stream流…

MyBatis何时使用一级缓存,何时使用二级缓存?

Mybatis设计2级缓存来提升数据检索效率&#xff0c;避免每次都查询数据库。 一、一级缓存 一级缓存 Mybatis 的一级缓存是指 SQLSession&#xff0c;一级缓存的作用域是 SQlSession , Mabits 默认开启一级缓存。 在同一个SqlSession中&#xff0c;执行相同的SQL查询时&#x…

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X(2)----修改测量范围

概述 当使用VL6180传感器进行测距时&#xff0c;可以通过修改缩放因子来改变可测量的距离范围。VL6180是一种基于飞行时间原理的传感器&#xff0c;通过测量光信号的往返时间来确定物体与传感器之间的距离。 默认情况下&#xff0c;VL6180传感器的测距范围约为0至200毫米。然…

显卡检测工具:GPU-Z

今天小编为大家测试了一款轻量级的GPU显卡的测试工具&#xff0c;可以查看GPU的详细信息&#xff0c;以供各位同学们学习。 一、简单介绍 GPU-Z是一款方便实用的软件工具&#xff0c;专门为用户提供视频卡和GPU的详尽信息。它具有轻巧的特点&#xff0c;不需要安装即可使用&am…