谷歌云 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 限制:对单个
MutateRowgRPC 请求强制执行严格的 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_ID、BT_INSTANCE_ID 和 BT_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),请选择以下方法之一:
减少 LMCache 块大小(推荐):序列化块大小取决于 LMCache 的逻辑
chunk_size(每块的令牌数量)和模型形状。您可以在配置文件中将chunk_size(例如,从256减少到128)来缩小单个块的有效负载。增加最大块大小:如果您的 Bigtable 实例使用 SSD 存储层(支持每个单元/行最多 100 MB),您可以在配置中将允许的最大写入阈值提高到
99.0MB,使用bigtable_max_chunk_size_mb配置键(或BT_MAX_CHUNK_SIZE_MB环境变量)。警告
请勿将
bigtable_max_chunk_size_mb设置得高于100.0MB。虽然 Cloud Bigtable 支持单行高达256.0MB,但单个单元格值(LMCache 用于存储块负载的值)有一个硬限制为100.0MB。超过此限制将触发硬 gRPC 异常。