2026-06-15 16:05:43
AlloyDB 是 Google Cloud 在 Google I/O 2022 大会上发布的兼容 PostgreSQL 标准的云原生数据库,其存储层设计具有诸多亮点,以下从架构、读写流程、弹性伸缩、跨区多活几个方面进行详细解析:
整体架构AlloyDB 分为 Database 层和存储层,DB 层负责兼容 PostgreSQL 协议,解析 SQL 语句并转化为读写请求发送给存储层。存储层细分为三层:


为应对变化负载,LPS 实例数量可伸缩,即调整 LPS 和 block shard 的映射关系。一组 block 集合为一个 shard,一个 shard 最多由一个 LPS 实例处理,一个 LPS 实例可同时处理多个 shards。以餐厅类比,block 是客人,shard 是餐桌,LPS 实例是服务员,负载低时一个服务员照顾所有餐桌客人,负载高时可为每个餐桌分配一个服务员。这种动态调节可完全自动化,无需用户感知和干预,且因 LPS 无状态(Buffer Cache 不算状态)可快速伸缩。

为容忍区域性故障,AlloyDB 将每个 block 分片的多个副本放到不同 zone 中。推测 region 指物理区域,zone 指逻辑区域。当某个 zone 发生故障时,在同一 region 新拉起一个 zone 并进行数据恢复,先使用其他副本的 snapshot 恢复,再将 snapshot 之后的 WAL 回放。正常情况下,每个 zone 可独立服务,跨 zone 流量较少。此外,AlloyDB 还支持逻辑上(如某个 database)的手动和自动备份,防止用户误删数据。

AlloyDB 的存储层基于日志服务实现,分为两层存储和一层计算,利用 LSN 控制并发,动态伸缩 LPS 应对负载,这种设计在分布式数据库领域具有一定创新性和实用性,为云原生数据库的发展提供了新的思路和参考。