Xline v0.7.0: 一个用于元数据管理的分布式KV存储

news2024/9/21 10:33:11

Xline是什么?我们为什么要做Xline?

Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低,因此不会对性能产生大的影响。

但是,当跨数据中心部署时,节点之间的延迟可能是几十或几百毫秒,此时 Raft 协议将成为性能瓶颈。Curp 协议就是为了解决这个问题而设计的。它可以在命令不冲突的情况下减少一个RTT,从而提高性能。因此,Xline旨在实现高性能的数据访问和跨数据中心场景下的强一致性。

V0.7.0版本有什么新功能?

v0.7.0新版本修复问题以及重构如下:

⭐ 新功能

[Feature]CURP WAL (Write-Ahead-Log) 实现:我们设计了一个 Write-Ahead-Log 来保存 curp 的日志条目。

[Feature]重复数据删除:使用RIFL论文中的exactly-once语义实现命令重复数据删除。

[Feature]:快照恢复 #630

[Feature]:维护服务器接口#543

[Feature]:支持使用 tls 运行 #328

️ 重构

[Refactor]:为自动更新lock lease添加会话结构#684

[Refactor]:启动流程#629

[Refactor]:重构speculative pool的GC #439

[Refactor]:新的命令执行逻辑:我们删除了cmd workers和相关的命令执行逻辑。现在,Xline 将使用串行执行(通过批处理)来防止锁争用。

[Refactor]:Garbage Collection:我们在dedup实现的基础上重构了garbage collection logic。

[Refactor]:客户端Proposal优化:我们重构了 curp 客户端,以使用 gRPC 流向集群发送提议。这降低了 gRPC 服务器的负载并提高了整体性能。

[Refactor]:冲突检测:我们删除了冲突检查的 mpmc。现在Xline将使用conflict pools(speculative pool和uncommitted pool)来检测命令冲突。

[Refactor]:Read Index:我们实现了 Raft 论文中的 Read Index 机制,用于只读命令。替换了之前的读取状态实现。

[Refactor]:xline-client 重构:我们为 xline-client crate 切换到更直观的用户界面。

[Refactor]:各种性能优化

错误修复

[Bug]:实现 ReadIndex #870

[etcdapi] [Bug]:重复revision #848

[Bug]:测试用例 curp::it server::shutdown_rpc_should_shutdown_the_cluster 失败 #774

[Bug]:Xline 在使用watch功能时会丢失事件#677

[Bug]:xlinectl 不会续订锁定密钥的lease #664

[Bug]:无法将新成员node4添加到三节点xline集群#661

[Refactor]:revision生成期间的只读命令#502

[Bug]:在读取状态期间执行时读取不同的值#501

[Bug]:sync txn 请求未按照子请求的顺序执行 #498

[Bug]:读取状态#497

[Bug]:revision生成#491、#848

[Bug]:单个 txn 中的请求不按顺序执行 #471

[Bug]:raw_curp中的batch_index最终会溢出#368

[Bug]:修复 GC 可能会破坏 CURP 持久性的问题 #159

✍️已知问题

在基准测试期间,如果集群处于高负载下,集群有时可能会由于重复数据删除机制而无法取得进展。

重大变化

etcd 兼容 API 现在将使用 2-RTT 操作来防止revision生成问题。

❤️ 贡献者

我们要感谢所有参与此版本发布的贡献者!

@themanforfree

@iGxnon

@Phoenix500526

@bsbds

相关链接

· Curp相关论文:

https://www.usenix.org/system/files/nsdi19-park.pdf

· Curp相关文章

https://medium.com/@datenlord/curp-revisit-the-consensus-protocol-384464be1600

往期推荐

1. Xline 0.7重构性能分析总述

2. Xline中区间树实现小结

3. Xline v0.6.1: 一个用于元数据管理的分布式KV存储

Xline于2023年6月加入CNCF 沙箱计划,是一个用于元数据管理的分布式KV存储。Xline项目以Rust语言写就。感谢每一位参与的社区伙伴对Xline的帮助和支持,也欢迎更多使用者和开发者参与体验和使用Xline。

GitHub链接:

https://github.com/xline-kv/Xline

Xline官网:www.xline.cloud

Xline Discord: 

https://discord.gg/XyFXGpSfvb

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

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

相关文章

【C++从小白到大牛】C++的隐式和显示类型转换基础知识讲解

目录 1、C语言中的类型转换 2、C语言和C中可以相互转换的类型总结 C语言: CPP: 3. 为什么C需要四种类型转换 4、C四大强制类型转换 4.1static_cast 4.2 reinterpret_cast 4.3 const_cast 4.4dynamic_cast 注…

吴恩达机器学习笔记 四十五 基于内容的过滤的tensorFlow实现

一个user网络,一个item网络 ,使用顺序模型,激活函数选择relu,最后的输出大小都是32。 input_user提取特征,然后把这些特征送给上面的user_NN这个网络得到用户向量vu,再对vu进行标准化(用l2范式&…

【最精简】解决访问GitHub慢的问题

我们通过命令行ping两个网站获取对应的IP地址 在windows中,修改hosts文件,路径一般是C:\Windows\System32\drivers\etc,用记事本打开,输入以下内容即可。 // 配置GitHub加速 199.232.69.194 github.global.ssl.fastly.net 140.8…

数据结构与算法 第3天(栈和队列)

栈和队列也是线性表,限制插入和删除的位置只能在端点 栈(stack) 后进先出 LIFO 表尾进入,表尾删除 一、案例 案例一:进制转换 例子 159转换成八进制 159/819...7 19/82...3 2/80...2 结果为237 案例二:括…

【香橙派系列教程】(二十) 系统移植、交叉编译工具链—OrangePi Zero2 SDK说明

【二十】基于OrangePi Zero2的系统移植—OrangePi Zero2 SDK说明 文章目录 【二十】基于OrangePi Zero2的系统移植—OrangePi Zero2 SDK说明1.使用环境要求2.Linux获取SDK3.首次编译完整SDK 之前我们在使用香橙派时, 都是直接在香橙派上进行代码编译, 但…

联华证券-新手炒股入门指南:学习路径与注意事项

学习炒股是一个循序渐进的过程,以下是入门建议以及需要注意的事项: 学习炒股的入手步骤 掌握基础知识: 股票市场基础:了解什么是股票、股市的运作机制、股票的种类等基本概念。 常用术语:熟悉如市盈率(P/…

8.29c++

仿照string类&#xff0c;实现myString #include <iostream> #include <cstring> using namespace std; class myString { public://无参构造myString():size(10){strnew char[size];//堆区创建空间}//有参构造myString(const char *s){sizestrlen(s);//获取长度s…

TeamTalk消息服务器学习

msg_server发送消息 信令 //service id 0x0003 message IMMsgData{//cmd id: 0x0301required uint32 from_user_id 1; //消息发送方required uint32 to_session_id 2; //消息接受方required uint32 msg_id 3; // 非常重要&#xff1a;由谁产生&#xff1f;答&…

ShenNiusModularity项目源码学习(2:登录页面验证码)

前端登录页面Login.cshtml位于ShenNius.Admin.Mvc项目的Areas\Sys\Views\User内&#xff0c;页面中使用的验证码是调用同项目内UserController的OnGetVCode函数获取验证码图片。   点击验证码图片&#xff0c;会调用wwwroot\js\login.js定义的changeSrcCode函数刷新验证码。…

Qt调用外部exe并嵌入到Qt界面中(验证成功的成功)

http://t.csdnimg.cn/CDsqQ 原作者在这里 本文章主要介绍如何用Qt调用其他应用的exe,并将窗口嵌入到Qt界面中。很多人查到的代码都能成功的将exe调用起来&#xff0c;但是嵌入不到窗口中。主要有两种原因&#xff0c;现在从头到尾的梳理一下。 1.主要代码 1.1启动exe //包含…

keil编译输出的信息program size含义,以及个人使用中的编译内存溢出问题

keil编译后输出的信息含义 data对应的是片内的RAM&#xff0c;xdata对应的是程序中片外扩展的存储器上需要占用的容量&#xff0c;code是编写的程序占用单片机片内的存储程序ROM上的容量。 编译中发现错误 上图中的data值占用了147字节&#xff0c;超过了128字节。 一般解决…

2700+存储过程的超复杂Oracle,国产化怎么办?

前不久部门同事参与了一个关键客户的国产数据库Poc工作。从群里反馈的一些信息来看&#xff0c;难度还是比较大。 我们知道&#xff0c;对于数据库国产改造&#xff0c;其实有几个比较大的难点&#xff0c;其中最让人头疼的无非就是存储过程之类的对象了。 从同时提供的迁移报告…

掌握MySQL就差这一个——超详细讲解Mysql集群技术(包含主从复制,半同步模式,组复制,MHA)

一 Mysql 在服务器中的部署方法 在企业中 90% 的服务器操作系统均为 Linux 在企业中对于 Mysql 的安装通常用源码编译的方式来进行 官网&#xff1a; http://www.mysql.com 1.1 在Linux下部署mysql 1 安装依赖性&#xff1a; [rootmysql_node1 ~]# yum install cmake gcc-c…

django(二):第一个项目

接上文&#xff0c;django&#xff08;一&#xff09;&#xff1a;项目搭建开始开发第一个项目。 1. 新建app 创建一个app应用&#xff0c;取名为company。 python manage.py startapp company注册app到settings.py文件中。 2.实现Model层 settings.py文件中配置数据库&am…

软件测试学习笔记丨静态测试与代码审计 SonarQube

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32049 一&#xff0c;SonarQube 平台搭建 1.1&#xff0c; 介绍 Sonar 是一个用于代码质量管理的开放平台。通过插件机制&#xff0c;Sonar 可以集成不同的测试工具、代码分析工具&#xff…

FATE Board 执行流程探索

背景介绍 FATE Board 是 FATE 提供的一个工程&#xff0c;用于给 FATE 提供可视化能力&#xff0c;方便在联邦学习训练中实时查看执行状态&#xff0c;更好地定位执行中遇到的问题。 查看 FATE 架构可以看到 FATE Board 是建立在 MySQL 和 FATE Flow Server 的基础上的&#…

Unity(2022.3.41LTS) - 着色器

目录 一、着色器的基本概念 二、表面着色器 一、着色器的基本概念 定义与作用&#xff1a; 着色器是一种在图形硬件上运行的程序&#xff0c;用于控制物体的颜色、纹理、光照、透明度等视觉属性。它通过对输入的几何数据&#xff08;如顶点位置、法线、纹理坐标等&#xff09…

某地级市攻防演练突破边界实战

0x1前言 今年某地级市的攻防中&#xff0c;前期通过fofa、google语法、天眼查等待信息收集获取到了某集团的单位后台后台是这样的&#xff0c;当看到这个后台系统时候脸上 不直接也就微笑了起来。最近风声紧&#xff0c;所有厚码希望大家多多理解&#xff08;我也怕死啊呜呜呜…

【MRI基础】k空间基本属性

K 空间本质上是一个矩阵&#xff0c;用于存储从 MRI 扫描仪获得的原始数据。这些数据是在扫描过程中收集的&#xff0c;K 空间中的每个点代表被扫描身体发出的 MRI 信号的不同频率和相位。存储在 K 空间中的数据不是图像形式&#xff0c;而是包含重建图像所需的所有空间频率信息…

灵办 AI:免费智能利器,开启高效办公与智能创作学习新时代

目录 引言一、初识灵办AI—开启智能办公二、灵办 AI 的强大功能解析1. 多语言翻译2. AI 对话功能3. AI 阅读功能4. AI 代码助手功能 三、灵办 AI 的其他优点四、结语 引言 在当今快节奏的时代&#xff0c;技术人员们都在努力寻觅能够提高工作效率、助力学习创作的工具。我同样…