网站首页 > 技术教程 正文
数据库是应用程序运行过程中至关重要的一部分,Cloud Spanner 作为唯一一个企业级、全球分布和强一致性的企业级数据库服务,将关系数据库结构的优点与非关系型数据库的规模完美结合。更独特的是,Spanner 通常将事务、SQL 查询和关系结构与非关系或 NoSQL 数据库的可伸缩性相结合。
(图 1)
Cloud Spanner 是如何工作的?
在图1中,可以看到一个四节点区域云 Spanner 实例,该实例托管两个数据库。节点是 Cloud Spanner 计算的量度标准。节点服务器提供读取和写入/提交事务请求,但它们不存储数据。每个节点在该区域的三个区域进行复制,数据库存储也在三个区域中复制。区域中的节点负责对其区域中的存储进行读写。数据存储在谷歌基础的巨像分布式复制文件系统中,当涉及到重新分配负载时,可提供巨大的优势,因为数据不链接到单个节点。如果一个节点或数据库发生故障,数据库仍然可用,由剩余的节点提供服务,无需手动干预来保持可用性。
Spanner 如何提供高可用性和可扩展性?
数据库中的每个表都按照主键排序存储,按主键的范围划分,即拆分。每个拆分完全有不同的 Spanner 节点独立管理,表的拆分次数根据数据量而变化:空表只有一次拆分。根据数据量和负载,拆分是动态重新平衡的。但是表和节点是跨三个区域复制的,这是如何工作的呢?
所以内容均在三个区域之间复制,拆分管理也是如此。拆分副本与一个跨区域的组(Paxos)相关联,使用 Paxos 共识协议,其中一个区域被认定为领导者。领导者负责管理该拆分的写入事务,而其他副本可用于读取。若领导者失败,则重新确定共识,并可能选择新的领导者。对于不同的拆分,不同的区域可以成为领导者,从而在 Spanner 计算节点之间分配领导角色。某个节点可以是领导者,也可以是其他拆分的副本。通过这种拆分、领导者、副本的分布式机制,Spanner 实现了高可用性与扩展性。
Spanner 中的读取类型
Cloud Spanner 中有两种读取类型。
强读取- 在需要读取绝对最新值时使用。下面是它的工作原理:
Cloud Spanner API 识别拆分,查找用于拆分的 Paxos 组,并将请求路由到其中一个副本(通常与客户端位于同一区域)在此示例中,请求发送到区域 1 中的仅读取副本;
如果可以阅读,则向领导者请求复制副本,并要求提供此行上最新交易的 TrueTime 时间戳;
领导者响应,副本会将响应与其状态进行比较;
如果行是最新的,它可以返回结果。否则,它需要等待领导者发送更新;
响应被返回客户端。
在某些情况下,例如,当行刚刚更新,而读取请求正在传输中,副本的状态足够最新,它甚至不需要向领导者询问最新的事务。
过期读取— 当低读取延迟比获取最新值更重要时,就会使用过期读取,因此可以容忍某些数据过期。在过期读取中,客户端不会请求绝对的最新版本,而只是要求最新的数据(例如,最多为 n 秒)。如果陈旧系数至少为 15 秒,则大多数情况下,副本只需返回数据,甚至不询问领导者,因为其内部状态将显示数据足够最新。您可以看到,在每个读取请求中,无需行锁定 - 任何节点响应读取的能力是 Cloud Spanner 如此快速和可扩展的原因。
Spanner 如何提供全球一致性?
TrueTime 是跨多个数据中心在所有计算机中同步时钟的一种方式。该系统使用 GPS 和原子钟的组合,每个原子钟都针对另一个的故障模式进行矫正,将两个来源进行合并(当然使用多个冗余)为所有 Google 应用程序提供了准确的时间来源。但是,每个单台计算机上的时钟漂移仍然可能发生,即使每 30 秒同步一次,服务器时钟和参考时钟之间的差值也可以高达 2ms。漂移将看起来像一个锯牙图,不确定性增加,直到被时钟同步更正。由于 2ms 的持续时间相当长(至少在计算方面),TrueTime 将此不确定性作为时间信号的一部分。
如果您的应用程序需要一个高度可扩展的关系数据库,可以考虑 Cloud Spanner。要更深入地了解 Cloud Spanner ,请参考官方文档。
官方文档:https://cloud.google.com/spanner/docs
猜你喜欢
- 2024-10-14 《重装机兵XENO》海量新图 角色职业及技能介绍
- 2024-10-14 谷歌Cloud Spanner云端数据库服务Beta测试启动
- 2024-10-14 被赋予个性的:各国“诡异”咖啡 各国咖啡文化差异
- 2024-10-14 数控技巧:数控常用工艺术语(英文名称)
- 2024-10-14 不断做迁移,是在还技术债吗? 迁移科技 融资
- 2024-10-14 Cloud Spanner 完全托管式关系型数据库服务
- 2024-10-14 字节跳动表格存储中的事务 字节跳动 sql
- 2024-10-14 杰夫·迪恩:人工智能的领航者 杰弗里迪恩
- 2024-10-14 有关机械方面的专业名词中英文对照
- 2024-10-14 Codis作者首度揭秘TiKV事务模型,Google Spanner开源实现!(有彩蛋)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)