Compartilhamento de stream com o Pub/Sub

É possível compartilhar tópicos do Pub/Sub usando o BigQuery Sharing (antigo Analytics Hub) para organizar e distribuir uma biblioteca de dados de streaming em vários limites organizacionais internos e externos. Os dados de streaming em tempo real são compartilhados usando trocas e listagens de compartilhamento do BigQuery, que permitem categorizar e agrupar logicamente grandes conjuntos de tópicos do Pub/Sub e provisionar acesso em grande escala.

É possível compartilhar dados de streaming para fazer o seguinte:

  • Serviços financeiros:
    • Compartilhe preços, cotações e pedidos de instrumentos que mudam rapidamente em tempo real.
    • Detectar lavagem de dinheiro e fraude de pagamento.
    • Oferecer suporte a cálculos de risco de negociação.
  • Varejo e bens de consumo não duráveis (CPG):
    • Gerencie o inventário da loja em tempo real.
    • Personalizar o marketing e o suporte ao cliente.
    • Ajuste os preços de forma dinâmica.
    • Monitore canais de mídias sociais.
    • Otimize os layouts das lojas físicas.
  • Saúde:
    • Use algoritmos preditivos para monitorar pacientes e analisar riscos em tempo real.
    • Monitorar sinais vitais com dispositivos médicos wearable.
    • Adquirir, estruturar, armazenar e processar automaticamente dados de pacientes, profissionais de saúde e administração de instalações.
  • Telecomunicações:
    • Monitore a integridade da rede e preveja falhas.
    • Descubra padrões de comportamento do usuário para localizar melhor dispositivos e antenas.

Funções exigidas

Os papéis para compartilhar tópicos do Pub/Sub são análogos ao compartilhamento de conjuntos de dados do BigQuery:

Arquitetura

O diagrama a seguir descreve como os editores e assinantes de recursos do Pub/Sub interagem com o compartilhamento do BigQuery:

Fluxo de trabalho que ilustra a interação entre editores de tópicos compartilhados e o BigQuery Sharing.
Figura 1. Fluxo de trabalho de publisher e assinante de tópico compartilhado com tópicos do Pub/Sub.

Tópicos compartilhados

Um tópico compartilhado é a unidade para compartilhar um tópico do Pub/Sub no BigQuery Sharing. Como editor de um tópico compartilhado, você cria ou usa um tópico do Pub/Sub para distribuir dados de mensagens aos assinantes. O BigQuery Sharing não replica o tópico de origem do Pub/Sub.

Listagens

Uma listagem é criada quando um publisher adiciona um tópico compartilhado a uma troca. Ele faz referência ao tópico compartilhado.

Trocas

Uma troca é um agrupamento lógico de listagens que fazem referência a temas compartilhados.

Assinaturas vinculadas do Pub/Sub

Ao se inscrever em uma listagem com um tópico compartilhado, uma assinatura do Pub/Sub vinculada é criada no projeto do assinante do tópico compartilhado. O projeto do editor do tópico compartilhado também representa uma assinatura do Pub/Sub como uma assinatura do Pub/Sub e uma assinatura de listagem de compartilhamento.

Limitações

O compartilhamento de stream com o Pub/Sub tem as seguintes limitações:

  • Um tópico compartilhado pode ter no máximo 10 mil assinaturas do Pub/Sub. Esse limite inclui assinaturas vinculadas do Pub/Sub e assinaturas do Pub/Sub criadas fora do compartilhamento, por exemplo, aquelas criadas diretamente do Pub/Sub.
  • Os tópicos compartilhados são indexados no Data Catalog (descontinuado) e no Dataplex Universal Catalog, mas não é possível filtrar especificamente pelo tipo de recurso.

  • As métricas de uso são capturadas e mostradas no painel "Métricas" para tópicos e assinaturas compartilhados do Pub/Sub, mas não estão disponíveis em INFORMATION_SCHEMA.SHARED_DATASET_USAGE.

    Para monitorar métricas, consulte Monitorar o Pub/Sub no Cloud Monitoring.

    Essas métricas podem incluir:

    • Publicar contagem de mensagens
    • Publicar solicitações
    • Capacidade de publicação em bytes
    • As cinco principais assinaturas
    • Bytes ingeridos
    • Outros

Ativar a API Analytics Hub

Para ativar a API Analytics Hub, faça o seguinte:

Console

Acesse a API Library e ative a API Analytics Hub para seu projetoGoogle Cloud .

Ativar a API Analytics Hub

gcloud

Execute o comando gcloud services enable:

gcloud services enable analyticshub.googleapis.com

Habilitar a API Pub/Sub

Acesse a Biblioteca de APIs e ative a API Pub/Sub para seu projeto Google Cloud .

Habilitar a API Pub/Sub

Fluxos de trabalho de publishers de tópicos compartilhados

Como editor de um tópico compartilhado, você pode fazer o seguinte:

  • Adicione temas compartilhados a uma troca criando uma ficha da empresa.
  • Atualizar uma listagem.
  • Excluir uma listagem.
  • Compartilhar uma página de empresa.
  • Gerenciar inscrições na sua página.
  • Remover assinantes da sua listagem.

Outras permissões de editor

Para realizar tarefas de editor de tópicos compartilhados, você precisa ter o papel de editor do Analytics Hub (roles/analyticshub.publisher) em uma troca ou listagem. Para ver todas as trocas de dados nos projetos de uma organização a que você tem acesso, é preciso ter a permissão resourcemanager.organizations.get.

Além disso, é necessário ter a permissão pubsub.topics.setIamPolicy no tópico do Pub/Sub que você quer listar. Para compartilhar tópicos com um esquema anexado, conceda aos assinantes do BigQuery Sharing a permissão pubsub.schemas.get no esquema anexado ao tópico. Esse permite que os assinantes do BigQuery Sharing analisem corretamente as mensagens da assinatura do Pub/Sub.

Criar uma ficha (para adicionar um tópico compartilhado)

Para adicionar um tópico compartilhado a uma página de detalhes, selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

    A página lista todas as trocas de dados que você pode acessar.

  2. Clique no nome da troca de dados em que você quer criar a listagem.

  3. Clique em Criar listagem.

  4. Na página Criar lista, selecione Tópico do Pub/Sub na lista Tipo de recurso.

  5. Selecione um tópico do Pub/Sub na lista Tópico compartilhado ou clique em Criar um tópico.

  6. Na página Detalhes da listagem, no campo Nome de exibição, insira o nome da listagem.

  7. Insira os seguintes detalhes opcionais:

    • Categoria: selecione até duas categorias que melhor representam sua listagem. Os assinantes de tópicos compartilhados podem filtrar as listagens com base nessas categorias.

    • Afinidade de dados: a região ou as regiões que o editor do tema compartilhado usa para publicar dados. Essas informações ajudam os assinantes de tópicos compartilhados a minimizar ou evitar custos de saída da rede do Pub/Sub lendo dados da mesma região. Para mais informações sobre custos de saída, consulte Custos de transferência de dados.

    • Ícone: um ícone para a listagem. Os formatos de arquivo PNG e JPEG são compatíveis. Os ícones precisam ter menos de 512 KiB e dimensões de no máximo 512 x 512 pixels.

    • Descrição: uma breve descrição da sua listagem. Os assinantes do tópico compartilhado podem pesquisar listagens com base na descrição.

    • Visibilidade pública: ative a visibilidade pública para sua ficha no catálogo de compartilhamento do BigQuery. Você também precisa definir permissões para a página de detalhes. Clique em Ações na troca e em Definir permissões. Conceda a allUsers ou allAuthenticatedusers o papel de leitor do Analytics Hub (roles/analyticshub.viewer). Clique em Permitir acesso público.

    • Documentação > Markdown: informações adicionais, como links para documentação relevante e outros detalhes que ajudam os assinantes de tópicos compartilhados a usar seu tópico.

  8. Na página Informações de contato do anúncio, insira os seguintes detalhes opcionais:

    • Contato principal: insira um endereço de e-mail ou URL do contato principal da listagem.

    • Contato para solicitar acesso: insira um endereço de e-mail ou URL do formulário de entrada que os assinantes de tópicos compartilhados podem usar para entrar em contato com você.

    • Provedor: expanda a seção Provedor e especifique os detalhes nos seguintes campos:

      • Nome do provedor: nome do provedor de tópicos.
      • Contato principal do provedor: um endereço de e-mail ou URL do contato principal do provedor do tema.

      Os assinantes de tópicos compartilhados podem filtrar listagens com base nos provedores de dados.

    • Editor: expanda a seção Editor e especifique os detalhes nos campos a seguir:

      • Nome do publisher: o nome do publisher do tópico compartilhado que cria a listagem.
      • Contato principal do editor: um endereço de e-mail ou URL do contato principal do editor do tema compartilhado.
  9. Analise a página Prévia da ficha.

  10. Clique em Publicar.

API

Use o método projects.locations.dataExchanges.listings.create.

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

Substitua:

  • PROJECT_ID: o ID do projeto que contém a troca de dados em que você quer criar a ficha da empresa.
  • LOCATION: o local da troca de dados. Para mais informações sobre locais que aceitam o compartilhamento, consulte Regiões compatíveis.
  • DATAEXCHANGE_ID: o ID da troca de dados.
  • LISTING_ID: o ID da ficha da empresa.

No corpo da solicitação, forneça os detalhes da ficha. Se a solicitação for bem-sucedida, o corpo da resposta vai conter os detalhes da ficha.

Para mais informações sobre as tarefas que podem ser executadas em fichas de empresa usando APIs, consulte Métodos projects.locations.dataExchanges.listings.

Atualizar uma listagem

Para atualizar uma página de detalhes, selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome da troca de dados que contém a ficha da empresa.

  3. Clique na listagem que você quer atualizar.

  4. Clique em Editar listagem.

  5. Modifique os valores dos campos. É possível modificar todos os valores, exceto o tema compartilhado da listagem.

  6. Para salvar as mudanças, clique em Publicar.

API

Use o método projects.locations.dataExchanges.listings.patch.

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

Substitua:

  • PROJECT_ID: o ID do projeto que contém a troca de dados em que você quer criar a ficha da empresa.
  • LOCATION: o local da troca de dados. Para mais informações sobre locais que aceitam o compartilhamento, consulte Regiões compatíveis.
  • DATAEXCHANGE_ID: o ID da troca de dados.
  • LISTING_ID: o ID da ficha da empresa.
  • UPDATEMASK: a lista de campos que você quer atualizar. Para atualizar vários valores, use uma lista separada por vírgulas.

No corpo da solicitação, especifique os valores atualizados.

Para mais informações sobre as tarefas que podem ser executadas em fichas de empresa usando APIs, consulte Métodos projects.locations.dataExchanges.listings.

Excluir uma listagem

Não é possível excluir fichas com tópicos compartilhados do Pub/Sub que tenham assinaturas ativas. Revogue todas as assinaturas ativas antes de tentar excluir uma lista de tópicos compartilhados. Não é possível desfazer a exclusão de uma listagem.

Para excluir uma ficha, selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome da troca de dados que contém a ficha da empresa.

  3. Clique na listagem que você quer excluir.

  4. Clique em Excluir.

  5. Na caixa de diálogo Excluir lista?, confirme a exclusão digitando delete.

  6. Clique em Excluir.

API

Use o método projects.locations.dataExchanges.listings.delete.

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

Substitua:

  • PROJECT_ID: o ID do projeto que contém a troca de dados em que você quer criar a ficha da empresa.
  • LOCATION: o local da troca de dados. Para mais informações sobre locais que aceitam o compartilhamento, consulte Regiões compatíveis.
  • DATAEXCHANGE_ID: o ID da troca de dados.
  • LISTING_ID: o ID da ficha da empresa.

Para mais informações sobre as tarefas que podem ser executadas em fichas de empresa usando APIs, consulte Métodos projects.locations.dataExchanges.listings.

Compartilhar um anúncio

Para conceder acesso a uma listagem particular, defina uma política do IAM para um indivíduo ou um grupo para essa listagem. No caso de uma listagem comercial, sua troca de dados precisa ser pública. As listagens em uma troca de dados pública aparecem em "Compartilhamento" para todos os Google Cloud usuários (allAuthenticatedUsers). Para permitir que os usuários solicitem acesso a listagens comerciais, conceda a eles o papel de leitor do Analytics Hub (roles/analyticshub.viewer).

Para dar acesso aos usuários para ver ou se inscrever na sua listagem, faça o seguinte:

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome da troca de dados que contém a ficha da empresa.

  3. Clique na ficha em que você quer adicionar inscritos no tópico compartilhado.

  4. Clique em Definir permissões.

  5. Para adicionar principais, clique em Adicionar principal.

  6. No campo Novos participantes, adicione detalhes com base no tipo de listagem:

    • Para uma listagem particular, insira os endereços de e-mail das identidades a quem você quer conceder acesso.
    • Para uma ficha pública, adicione allAuthenticatedUsers.
  7. No menu Selecionar papel, escolha Analytics Hub e selecione um dos seguintes papéis com base no tipo de ficha:

    • Para uma listagem comercial, selecione a função Leitor do Analytics Hub. Com esse papel, os usuários podem ver a listagem e solicitar acesso.
    • Para uma listagem particular ou pública não comercial, selecione o papel de Assinante do Analytics Hub. Com esse papel, os usuários podem fazer inscrição na listagem.
  8. Clique em Salvar.

Para mais informações, consulte os papéis de Assinante e Leitor do Analytics Hub.

Gerenciar assinaturas

Para permitir que um usuário se inscreva em uma listagem com um tema compartilhado, conceda a ele os papéis de Assinante do Analytics Hub (roles/analyticshub.subscriber) e Proprietário da assinatura do Analytics Hub (roles/analyticshub.subscriptionOwner) em uma listagem específica:

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome da troca de dados que contém a listagem para que você quer gerenciar as assinaturas.

  3. Clique na listagem para que você quer listar os inscritos no tópico compartilhado.

  4. Clique em Definir permissões.

  5. Para adicionar principais, clique em Adicionar principal.

  6. No campo Novos participantes, insira os nomes de usuário ou endereços de e-mail dos assinantes que você quer adicionar.

  7. Em Selecionar uma função, escolha Analytics Hub > Assinante do Analytics Hub.

  8. Clique em Adicionar outro papel.

  9. Em Selecionar uma função, selecione Analytics Hub > Proprietário de assinatura do Analytics Hub.

  10. Clique em Salvar.

Exclua e atualize os assinantes a qualquer momento clicando em Definir permissões.

Revogar uma assinatura

Para remover uma inscrição em uma lista de tópicos compartilhados do compartilhamento do BigQuery, selecione uma das seguintes opções:

Console

  1. Para listar os assinantes de um tópico compartilhado em uma listagem, siga as instruções do console Google Cloud em Ver todas as assinaturas.

  2. Clique na guia Assinaturas para conferir todas as assinaturas na troca de dados.

  3. Marque a caixa de seleção ao lado das assinaturas que você quer remover ou selecione todas.

  4. Na caixa de diálogo Revogar assinatura?, insira revoke para confirmar.

  5. Clique em Revogar.

API

Para remover uma assinatura, use o método projects.locations.subscriptions.revoke.

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

Substitua:

  • PROJECT_ID: o ID do projeto da assinatura que você quer remover.
  • LOCATION: o local da assinatura.
  • SUBSCRIPTION_ID: o ID da assinatura que você quer remover.

Quando você revoga uma assinatura do compartilhamento do BigQuery, um assinante de tópico compartilhado não recebe mais dados de mensagens do tópico compartilhado. A assinatura do Pub/Sub é removida do tópico compartilhado. Se você excluir uma assinatura diretamente do Pub/Sub, a assinatura de compartilhamento do BigQuery vai persistir e precisará ser limpa.

Fluxos de trabalho de inscritos

Como assinante do compartilhamento do BigQuery, você pode ver e assinar uma página de detalhes. A inscrição em uma listagem de um tópico compartilhado cria uma assinatura do Pub/Sub vinculada no projeto do assinante. A assinatura do Pub/Sub fica visível no projeto do editor do tópico compartilhado.

Permissões adicionais de assinante

Você precisa ter o papel de assinante do Analytics Hub (roles/analyticshub.subscriber) concedido no nível do projeto, da troca ou da listagem para realizar tarefas de assinante.

Assinar uma lista de tópicos compartilhados

Para assinar uma página com um tópico compartilhado, selecione uma das seguintes opções:

Console

  1. Para ver uma lista de listagens às quais você tem acesso, siga as etapas em Ver listagens.

  2. Navegue pelas listagens e clique naquela que você quer assinar. Uma caixa de diálogo com os detalhes da listagem vai aparecer.

  3. Clique em Inscrever-se para abrir a caixa de diálogo Criar assinatura.

  4. Se você não tiver ativado a API Analytics Hub no projeto, uma mensagem de erro vai aparecer com um link para ativar a API. Clique em Ativar a API Analytics Hub.

  5. Na caixa de diálogo Criar assinatura, especifique os seguintes detalhes:

    • ID da assinatura: especifique o nome da assinatura que você está criando.
    • Tipo de entrega: selecione como os dados da mensagem são entregues.
    • Duração da retenção de mensagens: defina a duração da retenção de mensagens.
    • Período de expiração: definido quando a assinatura expira após inatividade, se houver.
    • Prazo de confirmação: defina o prazo de confirmação.
    • Filtro de assinatura: defina a sintaxe de filtro para mensagens.
    • Entrega exatamente uma vez: ative a entrega exatamente uma vez.
    • Ordem das mensagens: ative a ordenação de mensagens com uma chave de ordem.
    • Mensagens mortas: ative as mensagens mortas.
    • Política de repetição: defina uma política de repetição.

    Para mais informações sobre propriedades de assinatura do Pub/Sub, consulte Propriedades de assinatura.

  6. Para salvar as mudanças, clique em Criar. A assinatura vinculada do Pub/Sub é criada no seu projeto.

API

Use o método projects.locations.dataExchanges.listings.subscribe.

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

Substitua:

  • PROJECT_ID: o ID do projeto da ficha da empresa em que você quer se inscrever.
  • LOCATION: o local da ficha em que você quer se inscrever.
  • DATAEXCHANGE_ID: o ID da troca de dados da ficha da empresa em que você quer se inscrever.
  • LISTING_ID: o ID da ficha da empresa em que você quer se inscrever.

No corpo da solicitação, especifique a assinatura do Pub/Sub em que você quer criar a assinatura vinculada do Pub/Sub. Se a solicitação for concluída, o corpo da resposta estará vazio.

Para mais informações sobre assinaturas do Pub/Sub, consulte a visão geral das assinaturas.

Preços

Os editores de tópicos do Pub/Sub não precisam pagar nada a mais para listar e compartilhar tópicos usando o BigQuery Sharing. Os editores de tópicos compartilhados são cobrados pelo total de bytes gravados (capacidade de publicação) no tópico compartilhado e pela saída da rede (se aplicável). Os assinantes de tópicos compartilhados são cobrados pelo total de bytes lidos (capacidade de assinatura) da assinatura vinculada e pela saída de rede (se aplicável). Para mais detalhes, consulte os preços do Pub/sub.

VPC Service Controls

Para tópicos compartilhados de projetos com perímetros do VPC Service Controls, defina as regras de entrada e saída adequadas para conceder acesso a editores e assinantes de tópicos compartilhados.

A seguir