本文档介绍了如何创建、查看和删除 Pub/Sub Lite 主题。
精简版主题概览
Pub/Sub Lite 服务需要一个主题,发布者可以向其发送 消息,以便订阅者可以接收这些消息。介于 Pub/Sub Lite,您可以选择创建可用区级或区域级精简版 主题。
可用区级精简版和区域级精简版主题仅在复制方式上有所不同 数据。其他所有主题属性与 本文档。
精简版主题中的数据复制
Pub/Sub Lite 区域级主题将数据存储在两个可用区中 单个区域中的情况Pub/Sub 精简版可用区级主题复制 在一个可用区内存储数据Pub/Sub Lite 复制数据 异步执行。
Pub/Sub Lite 的可用性取决于 包括应用前端和 storage。
Pub/Sub Lite 可用区级主题的可用性取决于 应用前端和存储的可用性 可用区。如果应用前端或存储遇到可用区级故障, 可用区级精简版主题在服务中断期间将无法使用。
Pub/Sub 精简版区域级主题的可用性取决于 应用前端和存储空间在其配置区域中的可用性。 可能出现以下类型的失败:
如果应用前端或存储发生可用区级故障,则区域精简版主题 仍然可用
如果应用前端和存储都发生可用区级故障, 只要两个组件不会开始出现相同的故障,区域级精简版主题就仍然可用 。
如果应用前端和存储同时发生故障,则 区域级精简版主题在服务中断期间仍然不可用。在此期间 客户端可能无法发布或使用消息,但消息 按正确的顺序投放
区域级精简版主题可防范大多数类型的单可用区 错误。不过,在极少数情况下,复制的异步性质 会导致单个可用区中的多个组件同时发生故障。作为 因此区域级精简版主题变得不可用。
精简版主题的属性
精简版主题具有以下属性:
分区数。分区是并行处理的基本单元, Pub/Sub Lite。一个精简版主题可以有一个或多个分区。
分区的容量。分区的容量由 以下三个属性:
发布吞吐量 (MiBps)。允许的最大速率 发布消息。
订阅吞吐量 (MiBps)。最大速率 将消息转发到精简版订阅。
存储空间 (GiB)。分区中消息的大小上限。 分区的可配置容量下限为 30 GiB。
精简版主题的存储空间容量。精简版主题中的所有分区都具有 存储容量不变Lite 的总存储容量 主题是该主题中所有分区的存储空间容量总和。对于 例如,如果精简版主题有 8 个分区,每个分区的大小 30 GiB,则精简版主题的总存储容量为 240 GiB (8 x 30)。
精简版主题的吞吐量容量。吞吐量容量由 集群中所有分区的总发布和订阅吞吐量容量 精简版主题。即使你的某个主题总体上能支持 发布吞吐量为 1 GiBps,即每个分区的发布限制 可有效限制吞吐量
订阅者客户端和订阅的限制。Pub/Sub 精简版 支持单个分区和单个分区的单个订阅者客户端 订阅。例如,对具有 5 个分区的主题的订阅可以具有: 最多有 5 个订阅者客户端从它接收消息。如果订阅人数增加 已配置客户端,则多余的客户端将保持空闲状态。同一主题,还有 2 人 订阅最多可以有 10 个订阅者客户端,每个客户端有 5 个客户端 订阅。
预留。预留是预配和管理的最简单方法 对多个主题的吞吐量容量进行测试。预配吞吐量容量 对于区域级精简版而言,包含预留是必需属性;对于可用区级精简版,是可选属性 精简版主题。
如果您不将预留用于可用区级精简版主题,则必须明确 预配主题的发布和订阅吞吐量容量。 如果没有预留,精简版主题中的所有分区都具有相同的 配置的吞吐量容量如需了解详情,请参阅配置吞吐量容量(无预留)。
存储配置。要配置存储空间,您必须同时指定 存储容量以及消息保留期限(可选)
消息保留期限。Lite 允许的最大 主题存储消息。如果您未指定邮件保留期限, 精简版主题会存储消息,直至您超出存储容量。
存储空间容量。Pub/Sub Lite 主题容量为 取决于主题中的分区数量和存储空间容量 每个分区的大小。每个分区的存储空间是指 数据量。请注意,区域级精简版主题会使用 2 个字节的存储空间 最大容量。可用区级精简版主题使用 1 字节的存储空间 最大容量。
如果超出存储容量,Pub/Sub Lite 服务 继续发布消息不过,为了扩大存储空间 则分区中最早的消息会被删除。删除 即使邮件包含在邮件中,系统也会显示最早的邮件 保留期限。该服务绝不会在邮件的 TTL 之前删除邮件 过期,除非必须移除这些条目以便为新发布的视频腾出空间 消息。如需了解容量与价格的关系,请参阅 Pub/Sub 精简版价格。
主题命名准则
Pub/Sub Lite 资源名称唯一标识 Pub/Sub Lite 资源,例如主题、订阅或 预留。资源名称必须符合以下格式:
projects/project-identifier/collection/ID
project-identifier
:必须是项目 ID 或项目编号,可从 Google Cloud 控制台。例如,my-cool-project
是项目 ID。123456789123
是项目编号。collection
:必须是topics
、subscriptions
或reservations
中的一个。ID
:必须符合以下准则:- 不能以字符串
goog
开头 - 以字母开头
- 包含 3 到 255 个字符
- 仅包含以下字符:字母
[A-Za-z]
、数字[0-9]
、短划线-
、下划线_
、句点.
、波形符~
、加号+
和百分号%
您可以在不进行网址编码的资源名称中使用上述列表中的特殊字符。不过,在网址中使用任何其他特殊字符时,您必须确保这些字符经过正确编码或解码。例如,
mi-tópico
是无效的 ID。不过,mi-t%C3%B3pico
是有效的。在进行 REST 调用时,此格式非常重要。- 不能以字符串
提高精简版主题的吞吐量容量
如果不使用精简版预留,您可以设置吞吐量容量 设置为由以下限制设置的值:
发布吞吐量介于 4 MiB 到 16 MiBps 之间
订阅吞吐量介于 4 MiB 到 32 MiBps 之间
这些限制也适用于与精简版预留关联的分区。 使用预留时,每个分区都可以使用 只要其总容量达到指定的上限即可 未超出预留限制。您可以选择为 每个分区的实际吞吐量,使流量更易于预测。
您可以增加主题中的分区数量以横向扩缩该主题。 主题中的分区数无法减少。
更改分区数量时,消息的相对顺序 保留。在内部,系统会使用哈希将消息分配给分区 函数。更新主题中的分区数量会更改此哈希值 函数。在分区计数更新后发布了具有相同键的消息 可能会映射到 更新。
此外,主题大小调整需要几秒钟才能传播到所有 发布商。某些发布商在较短时间内使用新的 哈希函数,有些仍在使用旧函数。
增加精简版主题的存储空间容量
您可以增加或减少精简版主题的存储空间容量。精简版主题为每个分区预配相同数量的存储。如果您将存储空间增加到 60 GiB,则每个分区都会获得 60 GiB 的存储空间。
如果您减少精简版主题的存储量,Pub/Sub Lite 服务会首先删除最早的消息。
如需了解容量与价格的关系,请参阅 Pub/Sub 精简版价格
创建精简版主题
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Pub/Sub Lite API。
如需查看可用区域和可用区的列表,请参阅 Pub/Sub 精简版位置。
控制台
前往精简版主题页面。
点击创建精简版主题。
如需创建可用区级精简版主题,请选择区域和区域内的可用区。
如需创建区域级精简版主题,请选择一个区域。
主题创建后,您无法更新营业地点。
在名称部分中,输入精简版主题 ID。
精简版主题名称包含精简版主题 ID、位置和项目编号。
在吞吐量部分:
选择或创建预留。
对于可用区级精简版主题,这是可选操作;对于区域级精简版主题,是必需操作。
输入发布吞吐量峰值和订阅吞吐量峰值。
系统会根据您的输入自动设置许多分区。您 可以在保存主题后修改此编号。
在邮件存储空间部分,执行以下操作:
输入每个分区的存储空间。
选择消息保留期限的两个选项之一。
检查所做的更改,然后点击创建。
gcloud
如需创建精简版主题,请使用 gcloud pubsub lite-topics create
命令:
gcloud pubsub lite-topics create TOPIC_ID \ --location=LOCATION \ --partitions=NUMBER_OF_PARTITIONS \ --per-partition-bytes=STORAGE_PER_PARTITION \ [--throughput-reservation=RESERVATION_NAME \] [--message-retention-period=MESSAGE_RETENTION_PERIOD]
替换以下内容:
TOPIC_ID:精简版主题的 ID
LOCATION:Pub/Sub 精简版支持的位置的名称
NUMBER_OF_PARTITIONS:精简主题中分区数的整数
STORAGE_PER_PARTITION:每个分区的存储空间量,例如
30GiB
RESERVATION_NAME:精简版的完全限定路径 预留,例如
projects/123456789/locations/us-west1/reservations/my-reservation
MESSAGE_RETENTION_PERIOD:精简版主题存储消息的时间,例如
1d
或2w
如果请求成功,命令行会显示一条确认消息:
Created [TOPIC_ID].
协议
要创建精简版主题,请发送 POST
请求,如下所示:
POST https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID Authorization: Bearer $(gcloud auth print-access-token)
替换以下内容:
REGION:要在其中存储精简版主题的区域
PROJECT_NUMBER:要在其中创建精简版主题的项目的项目编号
LOCATION:Pub/Sub 精简版支持的位置的名称
TOPIC_ID:精简版主题的 ID
在请求正文中指定以下字段:
{ "partitionConfig": { "count": NUMBER_OF_PARTITIONS, "capacity": { "publishMibPerSec": publish_CAPACITY, "subscribeMibPerSec": subscribe_CAPACITY, } }, "retentionConfig": { "perPartitionBytes": STORAGE_PER_PARTITION, "period": MESSAGE_RETENTION_PERIOD, }, "reservationConfig": { "throughputReservation": RESERVATION_NAME } }
替换以下内容:
NUMBER_OF_PARTITIONS:精简主题中分区数的整数
STORAGE_PER_PARTITION:每个分区的存储空间量,例如
30GiB
publish_CAPACITY:一个整数,表示发布吞吐量 每个分区的容量
subscribe_CAPACITY:一个整数,表示订阅吞吐量 每个分区的容量
MESSAGE_RETENTION_PERIOD:精简版主题存储消息的时间,例如
1d
或2w
RESERVATION_NAME:精简版的完全限定路径 预留,例如
projects/123456789/locations/us-west1/reservations/my-reservation
如果请求成功,则响应是 JSON 格式的精简版主题:
{ "name": projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID, "partitionConfig": { "count": NUMBER_OF_PARTITIONS, "capacity": { "publishMibPerSec": publish_CAPACITY, "subscribeMibPerSec": subscribe_CAPACITY, } }, "retentionConfig": { "perPartitionBytes": STORAGE_PER_PARTITION, "period": MESSAGE_RETENTION_PERIOD, }, "reservationConfig": { "throughputReservation": RESERVATION_NAME } }
Go
在运行此示例之前,请按照 Pub/Sub Lite 客户端库。
Java
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Java 设置说明进行操作。
Python
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Python 设置说明进行操作。
创建精简版主题后,您可以扩缩每个分区的吞吐量并 存储容量您也可以增加(但不能减少) 分区。
更新精简版主题
您可以更新精简版主题的以下属性:
与精简版主题关联的预留
主题中的分区数量(只能增加)
发布和订阅吞吐量容量限制
每个分区的存储空间
消息保留的类型
在增加吞吐量容量或 主题,请参阅扩缩吞吐量容量和扩缩存储 容量。
您可以通过 Google Cloud 控制台、 Google Cloud CLI 或 Pub/Sub Lite API
控制台
前往精简版主题页面。
点击精简版主题 ID。
点击修改。
您可以进行以下任何或所有更新:
- 请使用其他预留。对于可用区级主题,您可以选择不使用预留。
- 输入分区数量。此值可以增加,但不能减少。
- 启用或停用允许的最大发布和订阅吞吐量。
- 对于可用区级主题,请更新预留的发布和订阅吞吐量。 对于附加了预留的主题,更新后的吞吐量会反映新的上限。
- 修改每个分区的存储空间容量。
- 修改消息保留期限。
点击更新。
gcloud
要更新精简版主题,请使用 gcloud pubsub lite-topics update
命令:
gcloud pubsub lite-topics update TOPIC_ID \ --location=LOCATION \ --partitions=NUMBER_OF_PARTITIONS \ --per-partition-publish-mib=publish_CAPACITY \ --per-partition-subscribe-mib=subscribe_CAPACITY \ --per-partition-bytes=STORAGE_PER_PARTITION \ --message-retention-period=MESSAGE_RETENTION_PERIOD
替换以下内容:
TOPIC_ID:精简版主题的 ID
LOCATION:精简版主题所在的位置名称
NUMBER_OF_PARTITIONS:要为精简版主题配置的分区数。
publish_CAPACITY:一个整数,表示发布吞吐量 每个分区的容量
subscribe_CAPACITY:一个整数,表示订阅吞吐量 每个分区的容量
STORAGE_PER_PARTITION:每个分区的存储空间量,例如
30GiB
MESSAGE_RETENTION_PERIOD:精简版主题存储消息的时间,例如
1d
或2w
如果请求成功,命令行将显示精简版主题:
name: projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID partitionConfig: count: NUMBER_OF_PARTITIONS capacity: publishMibPerSec: publish_CAPACITY subscribeMibPerSec: subscribe_CAPACITY retentionConfig: perPartitionBytes: STORAGE_PER_PARTITION period: MESSAGE_RETENTION_PERIOD
协议
要更新精简版主题,请发送 PATCH
请求,如下所示:
PATCH https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID?updateMask=partitionConfig.capacity,retentionConfig.perPartitionBytes,retentionConfig.period,partitionConfig.count Authorization: Bearer $(gcloud auth print-access-token)
替换以下内容:
REGION:精简版主题所在的区域
PROJECT_NUMBER:具有精简版主题的项目的项目编号
LOCATION:精简版主题所在的位置名称
TOPIC_ID:精简版主题的 ID
在请求正文中指定以下字段:
{ "partitionConfig": { "count": NUMBER_OF_PARTITIONS, "capacity": { "publishMibPerSec": publish_CAPACITY, "subscribeMibPerSec": subscribe_CAPACITY, } }, "retentionConfig": { "perPartitionBytes": STORAGE_PER_PARTITION, "period": MESSAGE_RETENTION_PERIOD, }, }
替换以下内容:
publish_CAPACITY:一个整数,表示发布吞吐量 每个分区的容量
subscribe_CAPACITY:一个整数,表示订阅吞吐量 每个分区的容量
STORAGE_PER_PARTITION:每个分区的存储空间量,例如
30GiB
MESSAGE_RETENTION_PERIOD:精简版主题存储消息的时间,例如
1d
或2w
NUMBER_OF_PARTITIONS:要为精简版主题配置的分区数。
如果请求成功,则响应是 JSON 格式的精简版主题:
{ "name": projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID, "partitionConfig": { "count": NUMBER_OF_PARTITIONS, "capacity": { "publishMibPerSec": publish_CAPACITY, "subscribeMibPerSec": subscribe_CAPACITY, } }, "retentionConfig": { "perPartitionBytes": STORAGE_PER_PARTITION, "period": MESSAGE_RETENTION_PERIOD, }, }
Go
在运行此示例之前,请按照 Pub/Sub Lite 客户端库。
Java
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Java 设置说明进行操作。
Python
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Python 设置说明进行操作。
查看精简版主题详情
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Pub/Sub Lite API。
控制台
前往精简版主题页面。
点击精简版主题 ID。
gcloud
如需获取有关精简版主题的详细信息,请使用 gcloud pubsub lite-topics describe
命令:
gcloud pubsub lite-topics describe TOPIC_ID \ --location=LOCATION
替换以下内容:
TOPIC_ID:精简版主题的 ID
LOCATION:精简版主题所在的位置名称
如果请求成功,命令行将显示精简版主题:
name: projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID partitionConfig: count: NUMBER_OF_PARTITIONS capacity: publishMibPerSec: publish_CAPACITY subscribeMibPerSec: subscribe_CAPACITY retentionConfig: perPartitionBytes: STORAGE_PER_PARTITION period: MESSAGE_RETENTION_PERIOD
协议
如需获取有关精简版主题的详细信息,请发送 GET
请求,如下所示:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID Authorization: Bearer $(gcloud auth print-access-token)
替换以下内容:
REGION:精简版主题所在的区域
PROJECT_NUMBER:具有精简版主题的项目的项目编号
LOCATION:精简版主题所在的位置名称
TOPIC_ID:精简版主题的 ID
如果请求成功,则响应是 JSON 格式的精简版主题:
{ "name": projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID, "partitionConfig": { "count": NUMBER_OF_PARTITIONS, "capacity": { "publishMibPerSec": publish_CAPACITY, "subscribeMibPerSec": subscribe_CAPACITY, } }, "retentionConfig": { "perPartitionBytes": STORAGE_PER_PARTITION, "period": MESSAGE_RETENTION_PERIOD, }, }
Go
在运行此示例之前,请按照 Pub/Sub Lite 客户端库。
Java
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Java 设置说明进行操作。
Python
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Python 设置说明进行操作。
列出精简版主题
您可以使用 Google Cloud 控制台列出项目中的精简版主题, Google Cloud CLI 或 Pub/Sub Lite API
控制台
如需查看项目中的精简版主题列表,请前往精简版主题页面。
gcloud
- 如需列出项目中的精简版主题,请使用
gcloud pubsub lite-topics list
命令:
gcloud pubsub lite-topics list \ --location=LOCATION
将 LOCATION 替换为精简版主题的位置名称。
如果请求成功,命令行将显示精简版主题:
--- name: projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID partitionConfig: count: NUMBER_OF_PARTITIONS capacity: publishMibPerSec: publish_CAPACITY subscribeMibPerSec: subscribe_CAPACITY retentionConfig: perPartitionBytes: STORAGE_PER_PARTITION period: MESSAGE_RETENTION_PERIOND --- name: projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID partitionConfig: count: NUMBER_OF_PARTITIONS capacity: publishMibPerSec: publish_CAPACITY subscribeMibPerSec: subscribe_CAPACITY retentionConfig: perPartitionBytes: STORAGE_PER_PARTITION period: MESSAGE_RETENTION_PERIOND
协议
如需列出项目中的精简版主题,请发送 GET
请求,如下所示:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/topics Authorization: Bearer $(gcloud auth print-access-token)
替换以下内容:
REGION:精简版主题所在的区域
PROJECT_NUMBER:具有精简版主题的项目的项目编号
如果请求成功,则响应为 JSON 格式的精简版主题列表:
{ "topics": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID", }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID", } ] }
Go
在运行此示例之前,请按照 Pub/Sub Lite 客户端库。
Java
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Java 设置说明进行操作。
Python
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Python 设置说明进行操作。
删除精简版主题
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Pub/Sub Lite API。
控制台
前往精简版主题页面。
点击精简版主题 ID。
在精简版主题详情页面中,点击删除。
在显示的字段中,输入
delete
以确认您想要删除精简版主题。点击删除。
gcloud
要删除精简版主题,请使用 gcloud pubsub lite-topics delete
命令:
运行
delete
命令:gcloud pubsub lite-topics delete TOPIC_ID \ --location=LOCATION
替换以下内容:
TOPIC_ID:精简版主题的 ID
LOCATION:精简版主题所在的位置名称
如需确认,请输入
Y
。
如果请求成功,则响应为以下内容:
Deleted topic [TOPIC_ID].
协议
要删除精简版主题,请发送 DELETE
请求,如下所示:
DELETE https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LOCATION/topics/TOPIC_ID Authorization: Bearer $(gcloud auth print-access-token)
替换以下内容:
REGION:精简版主题所在的区域
PROJECT_NUMBER:具有精简版主题的项目的项目编号
LOCATION:精简版主题所在的位置名称
TOPIC_ID:精简版主题的 ID
如果请求成功,响应将为空的 JSON 对象。
Go
在运行此示例之前,请按照 Pub/Sub Lite 客户端库。
Java
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Java 设置说明进行操作。
Python
在运行此示例之前,请按照 Pub/Sub Lite 客户端库中的 Python 设置说明进行操作。
如果删除精简版主题,则无法向其发布消息。精简版主题仍然存在,但您无法从精简版订阅接收消息。