使用 Pub/Sub 进行数据流共享

您可以通过 Analytics Hub 共享 Pub/Sub 主题,以跨多个内部和外部组织边界挑选和分发流式数据库。实时流式数据使用 Analytics Hub 交换和列表共享,让您可以对大量 Pub/Sub 主题进行逻辑分类和分组,并大规模预配访问权限。

您可以共享流式数据以执行以下操作:

  • 金融服务
    • 实时分享快速变化的设备价格、报价和订单
    • 检测洗钱和付款欺诈
    • 支持交易风险计算
  • 零售与快速消费品 (CPG):
    • 帮助商店实时管理库存
    • 个性化营销和客户服务
    • 动态调整价格
    • 监控社交媒体渠道
    • 优化实体店布局
  • 医疗保健
    • 支持预测算法,实时监控患者并分析风险
    • 使用穿戴式医疗设备监控生命体征
    • 自动获取、构建、存储和处理来自患者、专业医护人员和设施管理的数据
  • 电信
    • 查看网络运行状况并预测故障
    • 探索用户行为模式,以更好地定位设备和天线

角色

共享 Pub/Sub 主题的角色类似于共享 BigQuery 数据集:

架构

下图介绍了 Pub/Sub 资源的发布者和订阅者如何与 Analytics Hub 进行交互:

Analytics Hub 发布者与 Analytics Hub 之间的交互。
图 1. 使用 Pub/Sub 主题的 Analytics Hub 发布者和订阅者工作流。

共享主题

共享主题是在 Analytics Hub 中共享 Pub/Sub 主题的单元。作为发布者,您可以创建或使用现有的 Pub/Sub 主题,将消息数据分发给订阅者。Analytics Hub 不会复制源 Pub/Sub 主题。

列表

发布者将共享主题添加到交换时,系统会创建清单。它包含对共享主题的引用。

广告交易平台

交换是引用共享主题的清单的逻辑分组。

关联的 Pub/Sub 订阅

订阅包含共享主题的清单时,系统会在订阅者项目中创建关联的 Pub/Sub 订阅。Pub/Sub 订阅在发布者项目中也表示为 Pub/Sub 订阅和 Analytics Hub List 订阅。

限制

与 Pub/Sub 进行数据流共享具有以下限制:

  • 共享主题最多可以有 10000 个 Pub/Sub 订阅。此限制包括关联的 Pub/Sub 订阅以及在 Analytics Hub 外部创建的 Pub/Sub 订阅,例如直接从 Pub/Sub 创建的订阅。
  • 共享主题会在 Data Catalog 中编入索引,但您无法专门针对其资源类型进行过滤。
  • 不会为 Analytics Hub 中关联的 Pub/Sub 订阅捕获用量指标。您可以在 Pub/Sub 中查看使用情况指标。

启用 Analytics Hub API

如需启用 Analytics Hub API,请执行以下操作:

控制台

前往 API 库,并为您的 Google Cloud 项目启用 Analytics Hub API。

启用 Analytics Hub API

gcloud

运行 gcloud services enable 命令:

gcloud services enable analyticshub.googleapis.com

启用 Pub/Sub API

前往 API 库,并为您的 Google Cloud 项目启用 Pub/Sub API。

启用 Pub/Sub API

发布者工作流

作为 Analytics Hub 发布者,您可以执行以下操作:

  • 通过创建清单将共享主题添加到交换
  • 更新清单
  • 删除清单
  • 共享清单
  • 管理清单的订阅
  • 从清单中移除订阅者

其他发布者权限

如需执行发布者任务,您必须具有交换或清单的 Analytics Hub Publisher 角色 (roles/analyticshub.publisher)。如需查看组织中的项目之间您有权访问的所有数据交换,您必须拥有 resourcemanager.organizations.get 权限。

此外,您需要拥有要列出的 Pub/Sub 主题的 pubsub.topics.setIamPolicy 权限。如需共享附加了架构的主题,您必须向 Analytics Hub 订阅者授予对附加到该主题的架构的 pubsub.schemas.get 权限。这允许 Analytics Hub 订阅者正确解析来自 Pub/Sub 订阅的消息。

创建清单(添加共享主题)

要将共享主题添加到清单,请选择以下选项之一:

控制台

  1. 转到 Analytics Hub 页面。

    转到 Analytics Hub

    此时会显示一个页面,其中列出了您可以访问的所有数据交换。

  2. 点击要在其中创建清单的数据交换名称。

  3. 点击 创建清单

  4. 创建清单页面上,从资源类型下拉列表中选择 Pub/Sub 主题

  5. 共享主题下拉列表中选择现有 Pub/Sub 主题,或点击创建主题

  6. 列表详情页面的显示名称中,输入清单名称。

  7. 输入以下可选详细信息:

    • 类别:最多选择两个最符合您的清单的类别。订阅者可以根据这些类别过滤清单

    • 数据亲和性:发布者用于发布数据的区域。此信息对于订阅者通过从同一区域读取数据来最大限度地减少或避免 Pub/Sub 网络出站流量费用非常有用。如需详细了解出站流量费用,请参阅数据传输费用

    • 图标:产品详情的图标。 支持 PNG 和 JPEG 文件格式。图标的文件大小必须小于 512 KiB,尺寸不得超过 512 x 512 像素。

    • 说明:有关清单的简要说明。订阅者可以根据说明搜索清单

    • 公开可发现性:在 Analytics Hub 目录中启用清单的公开可发现性。您还必须设置清单的权限。点击交换的操作,然后设置权限。为 allUsersallAuthenticatedusers 授予 Analytics Hub Viewer 角色。点击允许公开访问

    • 文档 > Markdown:其他信息,例如任何相关文档的链接以及可以帮助订阅者使用您的主题的任何其他信息

  8. 列出联系信息页面上,输入以下可选的详细信息:

    • 主要联系人:输入用于清单的主要联系人的电子邮件地址或网址。

    • 申请访问权限联系人:输入登记表的电子邮件地址或网址,以便订阅者与您联系。

    • 提供商:展开提供商部分,并在以下字段中指定详细信息:

      • 提供方名称:主题提供方的名称。
      • 提供方的主要联系人:主题提供方的主要联系人的电子邮件地址或网址。

      订阅者可以根据数据提供商过滤清单。

    • 发布者:展开发布者部分,并在以下字段中指定详细信息:

      • 发布者名称:创建清单的发布者的名称。
      • 发布者主要联系人:主题发布者主要联系人的电子邮件地址或网址。
  9. 查看清单预览页面。

  10. 点击发布

API

使用 projects.locations.dataExchanges.listings.create 方法

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings?listingId=LISTING_ID

替换以下内容:

  • PROJECT_ID:包含要在其中创建清单的数据交换的项目 ID。
  • LOCATION:数据交换的位置。如需详细了解有哪些位置支持 Analytics Hub,请参阅支持的区域
  • DATAEXCHANGE_ID:数据交换 ID。
  • LISTING_ID:清单 ID。

在请求正文中,提供清单详细信息。如果请求成功,则响应正文包含清单的详细信息。

如需详细了解您可以使用 API 针对清单执行的任务,请参阅 projects.locations.dataExchanges.listings 方法

更新清单

如需更新清单,请选择以下选项之一:

控制台

  1. 转到 Analytics Hub 页面。

    转到 Analytics Hub

  2. 点击包含清单的数据交换名称。

  3. 点击要更新的清单。

  4. 点击 修改清单

  5. 修改字段中的值。您可以修改除清单的共享主题之外的所有值。

  6. 要保存更改,请点击发布

API

使用 projects.locations.dataExchanges.listings.patch 方法

PATCH https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID?updateMask=UPDATEMASK

替换以下内容:

  • PROJECT_ID:包含要在其中创建清单的数据交换的项目 ID。
  • LOCATION:数据交换的位置。如需详细了解有哪些位置支持 Analytics Hub,请参阅支持的区域
  • DATAEXCHANGE_ID:数据交换 ID。
  • LISTING_ID:清单 ID。
  • UPDATEMASK:要更新的字段列表。如需更新多个值,请使用英文逗号分隔列表。

在请求正文中,指定更新后的值。

如需详细了解您可以使用 API 针对清单执行的任务,请参阅 projects.locations.dataExchanges.listings 方法

删除清单

不能通过有效订阅删除包含共享 Pub/Sub 主题的清单。请先撤消所有有效订阅,然后再尝试删除共享主题列表。清单一经删除,便无法撤消。如需删除清单,请选择以下选项之一:

控制台

  1. 转到 Analytics Hub 页面。

    转到 Analytics Hub

  2. 点击包含清单的数据交换名称。

  3. 点击要删除的清单。

  4. 点击 删除

  5. “是否要删除清单?”对话框中,输入 delete 以确认删除。

  6. 点击删除

API

使用 projects.locations.dataExchanges.listings.delete 方法

DELETE https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID

替换以下内容:

  • PROJECT_ID:包含要在其中创建清单的数据交换的项目 ID。
  • LOCATION:数据交换的位置。如需详细了解有哪些位置支持 Analytics Hub,请参阅支持的区域
  • DATAEXCHANGE_ID:数据交换 ID。
  • LISTING_ID:清单 ID。

如需详细了解您可以使用 API 针对清单执行的任务,请参阅 projects.locations.dataExchanges.listings 方法

共享清单

如果您想为用户提供访问非公开清单的权限,则必须为该清单的个人或组设置 IAM 政策。对于商业清单,您的数据交换必须公开。公开数据交换中的清单会显示在所有 Google Cloud 用户 (allAuthenticatedUsers) 的 Analytics Hub 中。如需允许用户申请访问商业清单,您必须向用户授予 Analytics Hub Viewer 角色

要授予用户查看或订阅清单的权限,请执行以下步骤:

  1. 转到 Analytics Hub 页面。

    转到 Analytics Hub

  2. 点击包含清单的数据交换名称。

  3. 点击您要为其添加订阅者的清单。

  4. 点击 设置权限

  5. 如需添加主账号,请点击 添加主账号

  6. 新建主账号字段中,根据清单类型添加以下详细信息:

    • 对于非公开清单,请输入要授予访问权限的身份的电子邮件。
    • 对于公开清单,请添加 allAuthenticatedUsers
  7. 对于选择角色,请将指针悬停在 Analytics Hub 上,然后根据清单类型选择以下角色之一:

    • 对于商业清单,请选择 Analytics Hub Viewer 角色。此角色允许用户查看清单和请求访问权限
    • 对于不公开或非商业的公开清单,请选择 Analytics Hub Subscriber 角色。此角色允许用户订阅清单
  8. 点击保存

如需了解详情,请参阅 Analytics Hub Subscriber 和 Viewer 角色

管理订阅

如需允许用户订阅包含共享主题的清单,请向其授予Analytics Hub 订阅者roles/analyticshub.subscriber )和Analytics Hub 订阅所有者roles/analyticshub.subscriptionOwner ) 角色:

  1. 转到 Analytics Hub 页面。

    转到 Analytics Hub

  2. 点击要管理其订阅的清单所在的数据交换名称。

  3. 点击要列出其所有订阅者的清单。

  4. 点击 设置权限

  5. 如需添加主账号,请点击 添加主账号

  6. 新建主账号字段中,输入要添加的订阅者的用户名或电子邮件地址。

  7. 选择角色部分,选择 Analytics Hub > Analytics Hub Subscriber

  8. 点击 添加其他角色

  9. 选择角色部分,选择 Analytics Hub > Analytics Hub Subscription Owner

  10. 点击保存

您随时可以通过点击设置权限来删除和更新订阅者。

撤消订阅

如需从 Analytics Hub 中移除对共享主题列表的订阅,请选择以下选项之一:

控制台

  1. 如需列出清单的所有订阅者,请按照查看所有订阅中的 Google Cloud 控制台说明执行操作。

  2. 点击订阅标签页,以查看数据交换的所有订阅。

  3. 选中要移除的订阅旁边的复选框,或选择所有订阅。

  4. “撤消订阅?”对话框中,输入“撤消”进行确认。

  5. 点击撤消

API

如需移除订阅,请使用 projects.locations.subscriptions.revoke 方法。

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/subscriptions/SUBSCRIPTION_ID:revoke

替换以下内容:

  • PROJECT_ID:要移除的订阅的项目 ID。
  • LOCATION:订阅的位置。
  • SUBSCRIPTION_ID:要移除的订阅的 ID。

从 Analytics Hub 撤消订阅后,订阅者不会再从共享主题接收消息数据。Pub/Sub 订阅与共享主题分离。如果直接从 Pub/Sub 中删除订阅,则 Analytics Hub 订阅将仍然存在并需要清理。

订阅者工作流

作为 Analytics Hub 订阅者,您可以查看和订阅清单。如果订阅共享主题列表,则会在订阅者的项目中创建关联的 Pub/Sub 订阅。Pub/Sub 订阅将显示在发布者的项目中。

其他订阅者权限

您必须在项目、交换或清单级层授予 Analytics Hub Subscriber (roles/analyticshub.subscriber) 角色才能执行订阅者任务。

订阅共享主题列表

如需订阅包含共享主题的列表,请选择以下选项之一:

控制台

  1. 如需查看您有权访问的列表,请按照查看列表中的步骤操作。

  2. 浏览列表,然后点击要订阅的列表。随即将出现一个包含该列表详细信息的对话框。

  3. 点击订阅,打开创建订阅对话框。

  4. 如果您的项目中未启用 Analytics Hub API,则系统会显示一条错误消息,其中包含启用该 API 的链接。点击启用 Analytics Hub API

  5. 创建订阅对话框中,指定以下详细信息:

    • 订阅 ID:指定您要创建的订阅的名称。
    • 传送类型:选择消息数据的传送机制。
    • 消息保留时长:设置消息保留时长。
    • 有效期:设置订阅在处于不活动状态后何时到期(如果有)。
    • 确认时限:设置确认时限。
    • 订阅过滤条件:为消息设置过滤条件语法。
    • “正好一次”传送:启用“正好一次”传送。
    • 消息排序:使用顺序键启用消息排序。
    • 死信:启用死信。
    • 重试政策:设置重试政策。

    如需详细了解 Pub/Sub 订阅属性,请参阅订阅属性

  6. 要保存更改,请点击创建。关联的 Pub/Sub 订阅已在您的项目中创建。

API

使用 projects.locations.dataExchanges.listings.subscribe 方法

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID:subscribe

替换以下内容:

  • PROJECT_ID:您要订阅的列表的项目 ID。
  • LOCATION:您要订阅的列表所在的位置。
  • DATAEXCHANGE_ID:您要订阅的列表的数据交换 ID。
  • LISTING_ID:您要订阅的列表的 ID。

在请求正文中,指定要在其中创建关联 Pub/Sub 订阅的 Pub/Sub 订阅。如果成功,则响应正文为空。

如需详细了解 Pub/Sub 订阅,请参阅订阅概览

价格

Pub/Sub 主题发布者通过 Analytics Hub 列出和共享主题无需额外费用。发布者需要为写入共享主题和网络出站流量(如果适用)的总字节数(发布吞吐量)付费。订阅者需要根据从关联的订阅和网络出站流量(如果适用)中读取的总字节数(订阅吞吐量)付费。如需了解详情,请参阅 Pub/Sub 价格

VPC Service Controls

对于具有 VPC Service Controls 边界的项目中的共享主题,您可以设置向发布者和订阅者授予访问权限所需的适当入站和出站规则。