前面说到DocDB自下而上分为存储层、数据复制层、数据分布层和事务层。本章节主要介绍数据复制层。

背景

DocDB 自动同步复制数据,以便在发生故障的同时保持数据一致性并避免操作员干预。它使用 Raft 分布式共识协议来实现。

基本概念

故障域

故障域包括一组易于发生相关故障的节点。故障域的示例包括:

  • 区域或机架
  • 区域或数据中心
  • 云供应商

数据通常跨故障域复制,以便在该故障域中的所有节点中断时具有弹性。

容错

yugabyteDB集群的容错(FT)是指能保证数据的正确性继续提供服务的最多故障节点数量。

复制因子

YugabyteDB 跨节点(或容错域)复制数据以容错。复制因子(RF)是在YugabyteDB集群数据的副本的数目。FT 和 RF 是相关的。为了实现k节点的 FT ,集群必须配置有 (2k + 1) 的 RF。

Tablet-peers

DocDB 中的数据复制是在 tablet 级别实现的,使用tablet-peers。每个表都被分片成一组tablets table

而每个tablet由一组tablet-peers组成,每个tablet-peers都存储属于该tablet的数据的一个副本。一个tablet有多少个tablet-peer和replication factor一样多,它们就形成了一个Raft group。tablet-peer 托管在不同的节点上,以允许节点故障时的数据冗余。请注意,tablet-peer 之间的数据复制是 高度一致的。

下图说明了属于一个tablet(tablet1)的三个tablet-peers。tablet-peers 托管在不同的 YB-TServer 上,并形成一个 Raft 组,用于领导者选举、故障检测和预写日志的复制。 table

Raft 复制

当一个 tablet 启动时发生的第一件事是使用Raft协议选择一个 tablet-peer 作为tablet leader。这个tablet leader现在负责处理面向用户的写入请求。它将用户发出的写入转换到 DocDB 的文档存储层,并使用 Raft 在 tablet-peer 之间复制以实现强一致性。撇开Tablet leader,剩下的Raft 组的tablet-peers 被称为tablet follower。

DocDB 更新集取决于用户发出的写入,并且涉及锁定一组键以建立严格的更新顺序,并在读取-修改-写入操作的情况下可选地读取旧值以进行修改和更新。Raft 日志用于确保即使在遇到故障或成员更改时,tablet 的数据库状态机也能在具有严格顺序和正确性保证的 tablet-peer 之间复制。这对于实现强一致性至关重要。

一旦 Raft 日志被复制到大多数 tablet-peer 并成功地持久化到大多数,写入被应用到 DocDB 文档存储层,随后可供读取。一旦写入被文档存储层持久保存在磁盘上,就可以从 Raft 日志中清除写入条目。这是作为受控后台操作执行的,对前台操作没有任何影响。

集群中的复制

数据副本可以跨多个容错域放置。我们以多区域部署为例,看看集群中跨容错域的复制是如何实现的,其中有三个区域,假设复制因子为 3。

多区域部署

在多区域部署的情况下,使用 Raft 共识算法跨多个区域复制节点中每个tablets中的数据。属于给定tablet的行的所有读写查询都由该平板电脑的领导者处理。这如下图所示。 table

作为 Raft 复制的一部分,每个 tablet-peer 首先选举一个负责读写的 tablet-leader。tablet-leader在不同区域的分布由用户指定的数据放置策略决定。上述场景中的放置策略确保在稳定状态下,每个区域都有相同数量的tablet-leader。下图显示了示例场景中tablet-leader的分布情况。 table

容忍区域中断

一旦发生区域中断,YugabyteDB 就会假设该区域中的所有节点同时变得不可用。这导致三分之一的tablets(它们的tablet-leader位于刚刚失败的区域)无法满足任何请求。其他三分之二的tablets不受影响。下图显示了失败的区域中的tablet-peer: table 对于受影响的三分之一,YugabyteDB 会自动将故障转移到其他两个区域中的实例。再一次,被故障转移的tablet均匀地分布在剩下的两个区域中。

区域中断时的 RPO 和 RTO

这些tablets中的每一个的 RPO(恢复点目标)都是 0,这意味着在故障转移到另一个区域时没有数据丢失。RTO(恢复时间目标)为 3 秒,这是完成故障转移并在新区域外开始运行的时间窗口。 table

Follower 读

只有tablet-leader可以处理面向用户的写入和读取请求。请注意,虽然这是强一致性读取的情况,但 YugabyteDB 提供从追随者读取的宽松保证,这在某些部署模型中是需要的。所有其他的tablet-peer 被称为follower,只是复制数据,并且可以作为热备,在leader 发生故障时可以快速接管。

文章来源:[https://docs.yugabyte.com/latest/architecture/docdb-replication/replication/#rpo-and-rto-on-zone-outage]

Copyright © itrunner.cn 2020 all right reserved,powered by Gitbook该文章修订时间: 2022-08-28 07:44:16

results matching ""

    No results matching ""