@cloudbitmaps/gcs

中文文档
0.27.0发布于 2026/11/03Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 1824

用于 CloudBitmaps 的谷歌云存储

中文使用文档
文档目录5 节
  1. 安装
  2. 使用
  3. 生产前
  4. 文档
  5. 许可证

@ cloudbitmaps/ gcs (英语)

谷歌云存储 云位图。 。 。 . 一桶能撑住你们世代和他们的指针 所以没有 第二次服务要运行.

仅限无害环境管理,节点22.12. 使用 import; 用于 require()时标和类型脚本,参见 常见的JS、快取和类型脚本。 。 。 .

前1.0:API和上盘格式仍然可以更改. 在npm上,这些文件与它们所运送的版本相符;在GitHub上,它们描述 main,更改日志则说每个版本都改变了什么.

安装

pnpm add @cloudbitmaps/roaring @cloudbitmaps/gcs

安装每张的同版本 @cloudbitmaps/* 软件包:它们一起发行,每个包都标出准确的版本 core 它是与建造的.

@google-cloud/storage (单位:千美元)^8.1.0)是这个包的真正依赖性,所以安装是整个步骤. A 类 client 必须在8.1.0或以后: 驾驶员自己的测试通过8.1.0, 并且每一次尝试的旧释放都失败(8.0.1、8.0.0和7.x从7.0.0到7.22.0)。 在8.0.1上,单位测试通过,但针对仿真器的可复用上传机尾大小的集成测试却以重置连接失败. 在8.0.0和7.x的测试失败:读取驾驶员在 readTimeoutMs 其连接开通,其首个解答被截断了部分通道的读取没有被重试成功(该调取从未解决),而读取司机拒绝的读取并不能解除其请求. @cloudbitmaps/core引擎在下面,随它而来,而你却不给它起名.

使用

import { CloudRoaring } from '@cloudbitmaps/roaring';
import { GcsStorage } from '@cloudbitmaps/gcs';

const store = new CloudRoaring({
  storage: new GcsStorage({ bucket: 'bitmaps', prefix: 'cr' }),
});

await store.load({ segment: 'active-users' }, [1, 2, 3]);
await store.segment('active-users').has(2); // true

它从应用程序默认身份建立自己的客户端. 任何其他密钥都会被姓名拒绝.

选项它会做什么
bucket (必须)桶头
prefix此商店所写每件事的密钥前缀
client你们自己 Storage 客户端。 通过它作为 client· ; storage 拒绝,因为 CloudRoaring 这个词的意思是后端 它的下载经过了它的双胞胎,SDK的重试关闭了,它的单请求有条件的写作在没有它们的情况下发送;一个客户端无法安全地从一个测试根来构建双胞胎,比如一个测试根被拒绝(见下文)
projectId, (中文(简体) ), apiEndpoint为您创建客户端, 例如为假 gcs- server 创建客户端; 拒绝 client
simpleUploadThresholdBytes, (中文(简体) ), maxObjectBytes一个对象的大小是简单的请求(默认为8 MiB)和最大的对象(默认为5 TiB,GCS的最大)
readTimeoutMsa. 以毫秒计,切断一个读数; 0,默认值,不设定超时
conditionalDelete服务是否适用 ifGenerationMatch 在对象删除时:然后登记册删除被删除的一行,而不是留下墓碑,每一份完整的列表都读取,而存储的半部分只删除被删除的持有者。 默认关闭, 在公共端点: 是否适用真实的GCS ifGenerationMatch 至删除未通过针对服务的运行验证,而假gcs-server忽略它,因此CI无法显示. 设定 true 将行永久删除,并在GCS上关闭一个已删除的已删除的窗口,需要一代人在数字下加载,因为:当它关闭时,窗口仍然打开。 需要删除注册前缀上的许可

生产前

  • 此后端位于已验证的信封外. 它通过与S3相同的套房,但证明 缩放和校正在S3上完成。 你是一个早期用户.
  • 运行 await store.preflight() 第一次载货之前. 它会写、试图再写、读、列出和删除一个探测器 对象,并读取注册簿和桶的生命周期规则(storage.buckets.get 和答案 { ok, checks }。它不检查删除或版本后的读取,除其他外: 完整列表第一次是八次请求.
  • 授予水桶的物体权限. 库创建、读取、列出和删除对象: roles/storage.objectAdmin 盖取四相.
  • 即刻写保证通过GCS先决条件 (单位:千美元)ifGenerationMatch)),所以不需要其他的帮助.
  • 永不添加过期当前对象或 registry/ 前缀.
  • 检查桶的生命周期规则 await backend.checkLifecycle()。 。 。 . 它读出一个桶的元数据 请求 readTimeoutMs和答案 problem (单位:千美元) Delete 适用于活对象并能匹配前缀的规则, ok,或 unchecked它需要 storage.buckets.get负载从来不用, store.preflight()生命周期步骤有,而且 roles/storage.objectAdmin 已经 不包括:没有答案是: unchecked,命名权限 (单位:千美元)从代码中检查生命周期规则) (中文(简体) ).
  • SDK不重试下载;驱动程序有. 单位 @google-cloud/storage 8.x(在8.1.0上检查)和7.x(在8.1.0上检查) 7.22.0,此驱动程序范围之外的发布),在任何状态重试后下载SDK重试(408,429,500,502,503或504)可以崩溃进程 与 ERR_STREAM_UNABLE_TO_PIPE尽管重审请求成功, 客户 GcsStorage 因此,构建将每次下载发送一次,驱动程序自己再次运行一次下载,最多还有三次 在连接断层(重排、重置、超时、DNS故障、身体被切断)或408,429后, 500,502,503或504,再无其他(不是缺失的证书文件或TLS故障). 这对每一个 包括一家商店 retry: false。客户端的列表、删除、可更新的上传和 读取解决写入的元数据保留其重试设置( SDK 在其中不设先决条件的情况下发送删除) ; 单请求有条件的写入(一个注册行,一个小的一代),在没有它们的情况下发送. 一个客户你 通过为 client 对这些请求保留自己的回覆:它的下载通过它的双胞胎,由它自己建造 具有相同证书对象、终点、项目、用户代理、超时、校验和生成器和截取器的类 和SDK的回击关闭。 A 类 Storage 客户端总是通过它的双胞胎使用,双胞胎必须使用以下设置: 决定下载地点和方式:相同的证书对象、 URL 和端点, 以及重试自己的设置, 然后,他们将被关闭在他们所有的等级之上。 后端在建成后拒绝一个双胞胎的客户端 (一个从自己的选项建立起来的子类),一个其类凌驾于它之上的子类 bucket (作为测试的双倍 建立在 Storage 和谁的 bucket 在实例中被替换(如测试根节)。 稳住 Storage.prototype (或 Bucket.prototype, (中文(简体) ), File.prototype),它到达了双胞胎;客户身上的根不是. A 类 测试双倍,不是 Storage 客户端被使用时的状态 retryOptions: { autoRetry: false },以及 在SDK的模块被嘲笑的情况下,通过模拟器 client。后端后端对客户端设置什么 除了拦截器外,其他设备不带给双胞胎.
  • 一个客户 timeout 不绑定下载于 @google-cloud/storage 8.x 电话,所以读取其服务器站等待 对于它。 对一个从未回答的本地服务器进行测量:12 s之后仍未答复 timeout: 2000。 。 。 . readTimeoutMs 是的,它关闭,除非你设置它. 它将每个读作整体:一代人尾巴(与 读取的元数据会返回到空对象、其中的某个范围或一个注册行。 一个期限涵盖每个 尝试驾驶员和他们之间的后退,从呼叫到驾驶员(证书获取器和任何 等待插座计数)到身体末端. 计算进程花费的时间也繁忙: 节点运行一个适当的计时器 在它读出插座之前, 同步的长度比超时的长度长, 飞行中的读取失败, 即使他们 答复已经到来。 当它通过, 读出 TransientError 命名读取和超时,没有 进一步尝试开始; 商店的读取重试再次运行它, 因此 readTimeoutMs: 2_000 读取一个摊位 每一次尝试在大约8.35 s(4×2 s+可达0.35 s后退;测量:8.1至8.2 s)后都失败. 上传, 删除和列表没有定时.
  • 在它的服务器回答之前读出的时间会打开它的连接 . SDK 无法取消请求 其响应尚未开始,所以该请求在服务器回答或关闭之前一直保持连接,直到 然后不让节点进程退出:每个司机读出一个,通过商店的再试,每个调用最多四个,所以 n的断电量每秒增加大约4N的连接量。 每个版本的司机范围都承认 (8.1.0和后一) 答复开始关闭之后的读取断接;8.0.0和7.x(7.2.2.),两者均关闭 在范围外,它保持开放。 一个404的 错误体到达之后 截止日期报告为 TransientError没有 NotFoundError。 。 。 .
  • 在Node的全球代理上下载出去,所以一个驱动程序切断或拒绝任何其它的重新发送. 当a 下载部分失败 SDK摧毁了它出去的HTTP代理, 并且它自己的代理是 保持- 静电池 整个流程共享,所以飞行中的所有其它请求都会与它重置,包括上传. SDK从来没有 摧毁全球特工。 用8.1.0测量,没有超时: 身体被截断 半程重置一个64字节上传和一个 登记员在SDK的代理的第二个后端上写作,并在全球代理上写作全部完成. 费用: 全局代理关闭一个闲置的连接 5 秒( SDK 的自有池没有), 因此在较长暂停后读取 打开一个新的连接, 与其 TCP 和 TLS 握手, 下载时与任何其他人共享此代理 http 或者说 https 请求。 抚养 https.globalAgent.options.timeout 保持闲置的连接更长.
  • 写作的瞬间失败 TransientError,而写作可能已经着陆,也可能没有着陆. 重开电话, 或检查 store.generations(ref)驱动程序 发送每个注册文件 一次; 负载得到否 回复 读取行并发送新的比较和扫描 这个,最多3个 时间。 一代人的目标 simpleUploadThresholdBytes 重复发送,最多再发送三次, 只有在 429 或者说 503;每个对象在其元数据中都带有随机的id,所以第一个登陆的发件是从另一个发送的 作家对象. 排行写字的负载都会被解答 TransientError 并保持它的对象。 等待着 在对象的再发送使用实时计时器之前:商店的注入时钟没有到达它们,以及 GcsStorage 采取不 时钟,所以一个测试 节流器一个物体写出三次 最多等待3.5秒左右( 出版者等待 a) 新鲜行写确实使用商店的时钟).

这个 生产清单 覆盖每个项目,以及每个后端共享的项目:数据备份和注册,以及您负载的时间表.

  • 驾驶员在丢弃前会校正其识别出的错误的证书 . SDK保持反应 获取错误( e)response和它通过它发出的要求,及其无记名的迹象 Authorization 信头和 HTTP 代理机与其他呼叫共享; 重复上传或符号请求错误保留 请求的 config。在下载时,只要一个身体没有列出任何错误,SDK就会使反应机构产生错误 消息,所以一个代理的页面或引用请求的JSON正文将符号放入消息中. 在错误中 驱动程序投掷,证书名称下的值被替换 [redacted] (单位:千美元)authorization, (中文(简体) ), x-goog-encryption-key, (中文(简体) ), x-goog-api-key, (中文(简体) ), X-Goog-Signature, (中文(简体) ), X-Goog-Credential, (中文(简体) ), access_token, (中文(简体) ), refresh_token, (中文(简体) ), client_secret, (中文(简体) ), private_key 等;服务账户的 client_email 财务报告和审定财务报表 private_key_id 保存),因此 是在页眉列表中或地图下的一个之后的值,是记录中一个旁边的值(a) { name, value } 双对, a { th, td } 行; 数字、布尔和 message, (中文(简体) ), reason 财务报告和审定财务报表 location google 错误项目为 (a) 其文本中的任何一处,都有一个证书头行 Authorization 值, 加密密钥, API密钥, oAuth 令牌或客户端秘密, 或签名的 URL 签名或证书后的名称; 饼干头的值 名称后; 计划后无记名标志; 谷歌访问标志(ya29.)或单用JWT 网页 Signature=; PEM 私人密钥的正文; 为证书命名的元素的正文, 如 <CanonicalRequest> 服务引用回; 单元格的文本取自命名证书的单元格后( a) <th>编号 :<td> 单行, a <dt>编号 :<dd> ,在标题或标题之后。 另一种形式的证书不是 已识别( 按列、 用户和密码写入 URL、 冒号写为 HTML 的页眉表) 实体,例如 &colon; 这些步骤无法完成的文字将被替换 整个。 SDK错误,它载运或显示证书,以及它所达到的每一个错误(它) cause 链条, a 一个 AggregateError是因为 errors),被抛出为复制:一个原型,名称,消息,堆栈, code, (中文(简体) ), status 财务报告和审定财务报表 errors,与 response 减为状态和状态文本,所以分类不变, 无 config、请求、其代理人或套接字、任何函数或存取器财产,或比 10级。 直播错误从未改变, 仅保存纯数据且未显示证书的错误会被丢弃 如来相.

文档

许可证

阿帕奇 - 2.0

版本与发布记录

@cloudbitmaps/gcs 共发布 25 个版本,首次发布于 2026/09/22;过去 12 个月发布了 25 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.27.0latest2026/11/037 天前
0.26.02026/11/028 天前
0.25.02026/10/3011 天前
0.24.02026/10/2417 天前
0.23.02026/10/2120 天前
0.22.02026/10/1823 天前

关于 @cloudbitmaps/gcs 的常见问题

@cloudbitmaps/gcs 是什么?

用于 CloudBitmaps 的谷歌云存储

如何安装 @cloudbitmaps/gcs?

在项目目录运行 npm install @cloudbitmaps/gcs,或使用 pnpm add / yarn add / bun add。

@cloudbitmaps/gcs 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cloudbitmaps/gcs 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cloudbitmaps/gcs 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.12。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cloudbitmaps/gcs 可以商用吗?

@cloudbitmaps/gcs 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cloudbitmaps/gcs 的下载量有多少?

根据 npm 官方下载统计,@cloudbitmaps/gcs 在 2026/10/10 – 2026/11/08 这 30 天内被下载 1,824 次,日均约 61 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cloudbitmaps/gcs 还在维护吗?

最新版本 0.27.0 发布于 2026/11/03(7 天前);至今共发布 25 个版本,其中过去 12 个月发布了 25 个;首次发布于 2026/09/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。