Transmitir alterações para o Pub/Sub usando o gatilho opcional da função do Cloud


Neste tutorial, mostramos como usar o modelo de fluxos de alterações do Bigtable para o Pub/Sub, incluindo como definir um tópico e configurar o modelo. Você tem a opção de criar uma função do Cloud na linguagem de programação da sua escolha, que é acionada pelo fluxo de eventos.

Este tutorial se destina a usuários técnicos familiarizados com o Bigtable, com a escrita de código e com os serviços de streaming de eventos.

Objetivos

Este tutorial mostra como fazer o seguinte:

  • Criar uma tabela do Bigtable com um fluxo de alterações ativado
  • Criar um tópico do Pub/Sub com o esquema de fluxo de alterações do Bigtable.
  • Implantar um fluxo de alterações do Bigtable em um pipeline do Pub/Sub no Dataflow usando o modelo.
  • Ver o fluxo de eventos no Pub/Sub diretamente ou nos registros de uma função do Cloud.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Functions, and Cloud Storage.

    Ative as APIs

  5. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  6. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  7. Ative as APIs Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Functions, and Cloud Storage.

    Ative as APIs

  8. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  9. Atualize e instale a CLI cbt
    gcloud components update
    gcloud components install cbt
    

Criar um tópico do Pub/Sub

  1. No console do Google Cloud, acesse a página Tópicos do Pub/Sub.

    Acesse Tópicos

  2. Selecione Criar tópico.

  3. Defina o ID como bigtable-change-stream-topic.

  4. Selecione Usar um esquema.

  5. No menu suspenso Selecionar um esquema do Pub/Sub, clique em Criar novo esquema. Isso abre uma nova guia para definir o esquema.

    1. Defina o ID do esquema como bigtable-change-stream-schema.
    2. Defina o tipo de esquema como Avro.
    3. Cole o código abaixo como a definição do esquema. Saiba mais sobre o esquema na página de documentação do modelo.
      {
          "name" : "ChangelogEntryMessage",
          "type" : "record",
          "namespace" : "com.google.cloud.teleport.bigtable",
          "fields" : [
            { "name" : "rowKey", "type" : "bytes"},
            {
              "name" : "modType",
              "type" : {
                "name": "ModType",
                "type": "enum",
                "symbols": ["SET_CELL", "DELETE_FAMILY", "DELETE_CELLS", "UNKNOWN"]}
            },
            { "name": "isGC", "type": "boolean" },
            { "name": "tieBreaker", "type": "int"},
            { "name": "columnFamily", "type": "string"},
            { "name": "commitTimestamp", "type" : "long"},
            { "name" : "sourceInstance", "type" : "string"},
            { "name" : "sourceCluster", "type" : "string"},
            { "name" : "sourceTable", "type" : "string"},
            { "name": "column", "type" : ["null", "bytes"]},
            { "name": "timestamp", "type" : ["null", "long"]},
            { "name": "timestampFrom", "type" : ["null", "long"]},
            { "name": "timestampTo", "type" : ["null", "long"]},
            { "name" : "value", "type" : ["null", "bytes"]}
        ]
      }
    
    1. Clique em Criar para criar o esquema.
  6. Feche a guia Criar esquema, atualize a lista de esquemas e selecione o esquema recém-definido.

  7. Clique em Criar para criar o tópico.

Opcional: criar uma função do Cloud

É recomendável processar o fluxo do Pub/Sub com uma função do Cloud.

  1. Na página Detalhes do tópico bigtable-change-stream-topic, clique em Acionar função do Cloud.
  2. No campo Nome da função, digite o nome bt-ps-tutorial-function.
  3. Na seção Código-fonte, clique no menu suspenso Ambiente de execução e selecione o ambiente de execução e a linguagem de programação que preferir. É gerado um hello world que mostra o fluxo de alterações à medida que ele chega. Consulte a documentação para saber mais sobre como escrever funções do Cloud.
  4. Use os valores padrão para todos os outros campos.
  5. Clique em Implantar função.

Criar uma tabela com um fluxo de alterações ativado

  1. No console do Google Cloud, acesse a página Instâncias do Bigtable.

    Acesse "Instâncias"

  2. Clique no ID da instância que você está usando neste tutorial.

    Se você não tiver uma instância disponível, crie uma com as configurações padrão em uma região perto de você.

  3. No painel de navegação à esquerda, clique em Tabelas.

  4. Clique em Criar uma tabela.

  5. Nomeie a tabela como change-streams-pubsub-tutorial.

  6. Adicione um grupo de colunas chamado cf.

  7. Selecione Ativar fluxo de alterações.

  8. Clique em Criar.

Inicializar um pipeline de dados para capturar o fluxo de alterações

  1. Na página Tabelas do Bigtable, encontre sua tabela change-streams-pubsub-tutorial.
  2. Na coluna Fluxo de alterações, clique em Conectar.
  3. Na caixa de diálogo, selecione Pub/Sub.
  4. Clique em Criar job do Dataflow.
  5. Na página Criar job do Dataflow, defina o nome do tópico de saída do Pub/Sub como: bigtable-change-stream-topic.
  6. Defina o ID do perfil do aplicativo Bigtable como default.
  7. Cliquem em Executar job.
  8. Aguarde o status do job ser Iniciando ou Em execução antes de continuar. Leva cerca de cinco minutos assim que job é colocado na fila.

Gravar alguns dados no Bigtable

  1. No Cloud Shell, escreva algumas linhas no Bigtable para que o registro de alterações possa gravar alguns dados no fluxo do Pub/Sub. Se você gravar os dados após a criação do job, as alterações aparecerão. Não é necessário esperar que o status do job seja running.

    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user123 cf:col1=abc
    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user546 cf:col1=def
    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user789 cf:col1=ghi
    

Ver os registros de alterações no Pub/Sub

  1. No console do Google Cloud, acesse a página Assinaturas do Pub/Sub.

    Acessar "Assinaturas"

  2. Clique na assinatura criada automaticamente para seu tópico bigtable-change-stream-topic. O nome dele precisa ser bigtable-change-stream-topic-sub.

  3. Acesse a guia Mensagens.

  4. Clique em Pull.

  5. Explore a lista de mensagens e veja os dados que você escreveu.

    Mensagens de registro de alterações no Pub/Sub

Opcional: ver as alterações nos registros do Cloud Functions

Se você criou uma função do Cloud Functions, é possível ver as alterações nos registros.

  1. No console do Google Cloud, acesse o Cloud Functions.

    Acesse o Cloud Functions

  2. Clique na sua função bt-ps-tutorial-function.

  3. Acesse a guia Registros.

  4. Verifique se a Gravidade está definida como pelo menos Informações para ser possível ver os registros.

  5. Analise os registros e veja os dados que você gravou.

A resposta será semelhante a:

Pub/Sub message: {"rowKey":"user789","modType":"SET_CELL","isGC":false,"tieBreaker":0,"columnFamily":"cf","commitTimestamp":1695653833064548,"sourceInstance":"YOUR-INSTANCE","sourceCluster":"YOUR-INSTANCE-c1","sourceTable":"change-streams-pubsub-tutorial","column":{"bytes":"col1"},"timestamp":{"long":1695653832278000},"timestampFrom":null,"timestampTo":null,"value":{"bytes":"ghi"}}

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir a tabela do Bigtable

  1. No console do Google Cloud, acesse a página Instâncias do Bigtable.

    Acesse "Instâncias"

  2. Clique no ID da instância que você está usando neste tutorial.

  3. No painel de navegação à esquerda, clique em Tabelas.

  4. Localize a tabela change-streams-pubsub-tutorial.

  5. Clique em Editar.

  6. Desmarque Ativar fluxo de alterações.

  7. Clique em Salvar.

  8. Abra o menu flutuante da tabela.

  9. Clique em Excluir e insira o nome da tabela para confirmar.

Interromper o pipeline de fluxo de alterações

  1. No console do Google Cloud, acesse a página Jobs do Dataflow.

    Acessar jobs

  2. Selecione o job de streaming na lista de jobs.

  3. Na navegação, clique em Parar.

  4. Na caixa de diálogo Interromper job, cancele o pipeline e clique em Interromper job.

Excluir o tópico e a assinatura do Pub/Sub

  1. No console do Google Cloud, acesse a página Tópicos do Pub/Sub.

    Acesse Tópicos

  2. Selecione o tópico bigtable-change-stream-topic.

  3. Clique em Excluir e confirme.

  4. Clique em Assinaturas na barra lateral.

  5. Selecione a assinatura bigtable-change-stream-topic-sub.

  6. Clique em Excluir e confirme.

Excluir a Função do Cloud

  1. No console do Google Cloud, acesse o Cloud Functions.

    Acesse o Cloud Functions

  2. Selecione a função bt-ps-tutorial-function.

  3. Clique em Excluir e confirme.

A seguir