谷歌云 Bigtable#

概述#

Google Cloud Bigtable 是一个 PB 级别的完全托管的 NoSQL 数据库。将 Cloud Bigtable 作为 LMCache 内置的远程存储连接器集成,可以桥接高成本的易失性内存层(Redis)和低成本、高延迟的归档对象存储(S3)。

有关更多信息,请参阅 Cloud Bigtable 概述Cloud Bigtable 定价

架构与负载限制#

  • 块大小优化:将 LMCache 的逻辑 chunk_size 设置为 256 个 token。这将对有效负载进行分组,以最小化顺序 Point-Read gRPC 调用,防止 Python 事件循环 (GIL) 瓶颈。

  • MutateRow 限制:对单个 MutateRow gRPC 请求强制执行严格的 90.0 MB 请求限制

  • 存储层行限制SSD 层的上限为每个单元/行 100 MiB企业增强内存层的限制为每行 1.0 MiB

  • TTLCache 保护: 嵌入一个线程安全的 TTLCache(默认 TTL 为 10 秒),以保护 Bigtable 节点免受并发预取查找峰值的影响。

基础设施设置#

1. 启用 GCP API


gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com --project=your-gcp-project-id

2. 配置 Bigtable 实例

请参阅 gcloud beta bigtable Reference 以获取更多参数详细信息。


gcloud beta bigtable instances create your-bigtable-instance-id \

--display-name="LMCache SSD 实例" \ --edition=ENTERPRISE \ --cluster-storage-type=ssd \ --cluster-config=id=your-cluster-id,zone=us-central1-a,nodes=1 \ --project=your-gcp-project-id

3. 创建数据库表和列族


gcloud bigtable instances tables create lmcache-benchmark-v1 \

--instance=your-bigtable-instance-id \ --column-families=cf \ --project=your-gcp-project-id

4. 安装 LMCache 和 Bigtable SDK


export NO_NATIVE_EXT=1 pip install --no-cache-dir lmcache google-cloud-bigtable

配置#

示例 A:标准 Bigtable SSD 集成(仅限 L2)


chunk_size: 256

local_cpu: true max_local_cpu_size: 10.0 remote_url: "bigtable://your-gcp-project-id/your-bigtable-instance-id"

remote_serde: "naive"

额外配置:

bigtable_project_id: "你的 GCP 项目 ID" bigtable_instance_id: "你的 Bigtable 实例 ID" bigtable_table_name: "lmcache-benchmark-v1"

备注

或者,您可以设置环境变量 BT_PROJECT_IDBT_INSTANCE_IDBT_TABLE_NAME,而不是使用 extra_config

示例 B:3 层多连接器混合(本地 CPU -> Redis L2 -> Bigtable SSD L3)

在热缓存回路中部署 Redis,同时将长尾持久存储卸载到 Bigtable SSD,使用 LMCache 的动态有序字典路由。


chunk_size: 256 local_cpu: true max_local_cpu_size: 15.0

远程存储插件:
  • redis

  • bigtable

额外配置:

remote_storage_plugin.redis.redis_url: "redis://your-redis-host:6379"

remote_storage_plugin.bigtable.bigtable_project_id: "your-gcp-project-id" remote_storage_plugin.bigtable.bigtable_instance_id: "your-bigtable-instance-id" remote_storage_plugin.bigtable.bigtable_table_name: "lmcache-benchmark-v1" remote_storage_plugin.bigtable.bigtable_family_name: "cf" remote_storage_plugin.bigtable.bigtable_column_name: "data"

remote_storage_plugin.bigtable.credentials_path: "/etc/gcp/key.json"

remote_storage_plugin.bigtable.bigtable_max_chunk_size_mb: 90.0 remote_storage_plugin.bigtable.exists_cache_ttl_seconds: 10.0 remote_storage_plugin.bigtable.exists_cache_size: 10000

remote_storage_plugin.bigtable.bigtable_write_timeout_ms: 10000.0 remote_storage_plugin.bigtable.bigtable_read_timeout_ms: 5000.0

身份验证#

  • 应用默认凭据 (ADC):如果 credentials_path 被省略或为 null,连接器将原生调用 ADC。支持通过 gcloud auth application-default login 进行本地开发或 GKE 工作负载身份联合。

  • 显式密钥:将包含挂载的 GCP 服务账户 JSON 密钥的绝对文件系统路径传递给 credentials_path

验证#

确保您已安装所需的依赖项:


pip install cachetools google-cloud-bigtable

运行单元测试:


pytest tests/v1/storage_backend/test_bigtable_connector.py

处理大负载警告#

如果您在日志中看到警告,指示块大小超过限制并被跳过(例如 Bigtable chunk size ... MB exceeds threshold ... MB. Skipping write to prevent hard failures),请选择以下方法之一:

  1. 减少 LMCache 块大小(推荐):序列化块大小取决于 LMCache 的逻辑 chunk_size(每块的令牌数量)和模型形状。您可以在配置文件中将 chunk_size(例如,从 256 减少到 128)来缩小单个块的有效负载。

  2. 增加最大块大小:如果您的 Bigtable 实例使用 SSD 存储层(支持每个单元/行最多 100 MB),您可以在配置中将允许的最大写入阈值提高到 99.0 MB,使用 bigtable_max_chunk_size_mb 配置键(或 BT_MAX_CHUNK_SIZE_MB 环境变量)。

    警告

    请勿将 bigtable_max_chunk_size_mb 设置得高于 100.0 MB。虽然 Cloud Bigtable 支持单行高达 256.0 MB,但单个单元格值(LMCache 用于存储块负载的值)有一个硬限制为 100.0 MB。超过此限制将触发硬 gRPC 异常。