Xline 源码解读(一) —— 初识 CURP 协议

Xline是一款基于CURP协议的分布式KV存储系统,旨在提供跨数据中心的高性能强一致性。CURP是一种无序复制算法,通过fastpath(1个RTT)和slowpath(2个RTT)实现不同场景下的共识,优化了高延迟环境下的性能。相较于Raft和Multi-Paxos,CURP在无冲突情况下能更快达成共识。

01、Xline是什么

Xline 是一款开源的分布式 KV 存储引擎,其核心目的是实现高性能的跨数据中心强一致性,提供跨数据中心的meatdata 管理。那么 Xline 是怎么实现这种高性能的跨数据中心强一致性的呢?这篇文章就将带领大家一起来一探究竟。

02、Xline 的整体架构

我们先来看看 Xline 的整体架构,如下图所示:

从上至下,Xline 可以大致分为三层,分别是

  • 接入层:采用 gRPC 框架实现,负责接收来自客户端的请求。
  • 中间层:可以分为 CURP 共识模块(左)和业务 Server 模块(右),其中:

◦CURP 共识模块:实现了 CURP 共识算法,代码上则对应了 Xline 中的 curp 这个 crate,相应的 rpc 服务定义在 curp/proto 中。 

◦业务 Server 模块:负责实现 Xline 的上层业务逻辑,如负责 KV 相关请求的 Kv Server 以及负责认证请求的 AuthServer 等。代码上则对应了 xline 这个 crate,相应的 rpc 服务定义文件保存在 xlineapi 这个 crate 中。

  • 存储层:负责持久化相关的工作,向上层提供抽象接口,代码上对应了 engine 这个 crate

03、CURP 协议简介

CURP 是什么?

Xline 中所使用的共识协议,即非 Paxos 而非 Raft,而是一种新的名为 Curp 的共识协议,其全称为 “Consistent Unordered Replication Protocol”。CURP 协议来自于 NSDI 2019 的一篇 Paper 《Exploiting Commutativity For Practical Fast Replication》,其作者是来自斯坦福的博士生Seo Jin Park和John Ousterhout教授,John Ousterhout教授同时也是raft算法的作者。

为什么选择 CURP 协议

那为什么 Xline 要使用 CURP 这样一种新的协议,而非 Raft 或者 Multi-Paxos 来作为底层的共识协议呢?为了说明这个问题,我们不妨先来看看 Raft 以及 Multi-Paxos 都存在什么样的问题?

下图是 Raft 协议达成共识的一个时序流程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达坦科技DatenLord

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值