本文档定义了 Spanner Omni 的核心概念和部署拓扑。本文档介绍了区域、可用区和服务器之间的层次关系,并说明了这些组件如何与部署中的数据复制和存储相关联。
Spanner Omni 概念
以下部分详细定义了整个 Spanner Omni 文档中使用的术语。熟悉这些概念有助于您清楚了解系统的架构和运行行为。
部署
Spanner Omni 的部署,可让您使用数据中心或公有云账号中的数据库。您可根据部署配置中指定的参数创建部署。Spanner Omni 部署相当于Google Cloud中的 Spanner 实例。
部署配置
为 Spanner Omni 部署提供区域、可用区和服务器的放置位置和规范。您可以选择单服务器、单区域或多区域部署配置。
位置
相当于 Google Cloud 中的“区域”。两个区域之间的网络延迟非常明显。对于本地部署,您可以定义自己的区域。对于云部署,区域必须与相应云服务商中的区域保持一致。一个区域可以有多个可用区。
流程
Spanner 服务器会派生并管理多个进程。例如,TimeServer 和 spanserver 都是 Spanner 中的进程。各个进程可能具有 CPU 和内存用量等监控统计信息。进程可以打开端口,以便与部署中的其他服务器通信。
副本
Spanner 会复制数据,以确保数据可用性和地理局部性。概括来讲,Spanner 会将所有数据整理成行。Spanner 会创建这些行的多个副本,然后将这些副本存储在不同的地理区域中。Spanner 使用基于 Paxos 的同步复制方案,其中的投票副本会在将写入提交到数据库之前对每个写入请求进行投票。与 Spanner 类似,Spanner Omni 中有三种副本类型:读写、只读和见证者。如需了解详情,请参阅 Spanner 文档中的副本类型。
服务器
服务器是一种计算资源,例如虚拟机或容器,Spanner Omni 服务器在其中运行。每台服务器都有自己的系统资源:CPU、内存和存储空间。服务器通过存储和提供用户数据来提供 Spanner Omni 的功能。
根服务器
根服务器存储支持该区域的关键元数据。例如,根服务器存储服务器成员资格和其他区域配置信息。根服务器使用法定人数算法来确保一致性,因此一个区域中必须有奇数个根服务器:对于非常小的区域,需要一个根服务器;对于较大的区域,需要三到五个根服务器。在规划部署时,请仔细考虑根服务器的数量。虽然您可以在创建部署后更改其中的根服务器数量,但我们不建议这样做。
非 root 服务器
非根服务器存储和提供用户数据,并提供了一种扩展区域计算容量和存储空间的方法。您可以根据工作负载需求向部署中添加任意数量的非根服务器。创建部署后,您可以更改非根服务器的数量。
拆分
Spanner 分块包含一系列连续的数据行,其中 Spanner 按主键对这些行进行排序。Spanner 会创建每个分块的副本,并将其存储在每个可用区中。
存储
附加到服务器的永久性存储空间。
可用区
一个或多个服务器的群组。对于数据复制,您应为每个副本创建一个可用区。对于本地部署,我们建议尽量减少可用区之间的基础架构(虚拟机、磁盘)共享。对于云部署,请将可用区与 AWS 中的可用区或 Google Cloud中的可用区对齐。