# 标记高可用性

![`smart`](LabelWithHighAvailability_aa_002_20220509.png)

--------------------------------------------------------------------------------
观察图表，其中DC 1 ~ 3 代表 3 个独立的数据中心，Rack 1 ~ 6 代表 6 个机架，TiKV Server-1 ~ TiKV Server-12 代表 12 个主机，每个主机都有一个TiKV实例。接下来，我们看一下 3 种区域的分布，假设它们都是默认的 3 个副本。

1. Region 1 在 DC 3 的 Rack 4 上的 2 个 TiKV Server-7 和 TiKV Server-8 上分别部署了 1 个 Leader 和 1 个 Follower，另外在 Rack 6 上还有一个 Follower。这样的部署风险是，如果 DC 2 出现问题或者 Rack 4 出现问题，就会导致 Region 1 不可用。

2. Region 2的分布是1个Leader和2个Followers在不同的机架上，所以即使单个机柜出现问题，Region 2仍然可以使用，比Region 1更强壮。但是，如果DC 1出现问题，我们的Region 2就不可用了。

3. Region 3有1个Leader和2个Follower分别在不同的DC，所以无论DC、机架还是TiKV出现问题，都不会影响Region 1的可用性。
比较了区域1、区域2和区域3的分布后，我们发现不同的区域分布会对可用性产生影响，尤其是如果数据库的元数据，如信息模式，存储在某些区域，那么一个区域的不可用性会导致整个数据库不可用。
然而，我们知道，Region 的原始分布是由 PD 随机部署的，PD 节点只保证同一个 Region 的多个副本不会被放置在同一个 TiKV 节点上，但 PD 节点不知道 DC、机架和主机等概念。
因此，标签的概念应运而生，这就是我们经常所说的标记。我们可以为每个TiKV实例设置一个标签（标签）来识别它所在的DC，机架和主机。PD节点同意标签的格式，因此，当PD节点最初分发区域时，它们可以根据TiKV节点上设置的标签来感知DC，机架和主机的位置，从而实现最高的分发可用性。
