使用 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 商家信息订阅。

限制

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

  • 共享主题最多可以有 10,000 个 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 Subscriber (roles/analyticshub.subscriber) 和 Analytics Hub Subscription Owner (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. 撤消订阅?对话框中,输入“revoke”以确认。

  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 边界的项目中的共享主题,您可以设置向发布方和订阅方授予访问权限所需的适当入站流量和出站流量规则。