Transmita alterações para o Pub/Sub através do acionador de função do Cloud Run opcional

Este tutorial mostra como usar o modelo Bigtable change streams to Pub/Sub, incluindo como configurar um tópico e configurar o modelo. Opcionalmente, pode criar uma função do Cloud Run no idioma de programação à sua escolha, que é acionada pela stream de eventos.

Este tutorial destina-se a utilizadores técnicos que estão familiarizados com o Bigtable, a escrita de código e os serviços de streaming de eventos.

Crie um tópico do Pub/Sub

  1. Na Google Cloud consola, aceda à página Tópicos do Pub/Sub.

    Aceda a Tópicos

  2. Clique em Criar tópico.

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

  4. Selecione Usar um esquema.

  5. No menu pendente Selecionar um esquema do Pub/Sub, clique em Criar novo esquema. Esta ação abre um novo separador onde define o esquema.

    1. Defina o ID do esquema como bigtable-change-stream-schema.
    2. Defina o tipo de esquema como Avro.
    3. Cole o seguinte como a definição do esquema. Pode encontrar mais informações acerca do 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 o separador Criar esquema, atualize a lista de esquemas e selecione o esquema recém-definido.

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

Opcional: crie uma função do Cloud Run

Pode querer processar a stream do Pub/Sub com uma função do Cloud Run.

  1. Na página Detalhes do tópico bigtable-change-stream-topic, clique em Acionar função do Google Cloud .
  2. No campo Nome da função, introduza o nome bt-ps-tutorial-function.
  3. Na secção Código fonte, clique no menu pendente Tempo de execução e, de seguida, selecione o tempo de execução e a linguagem de programação da sua escolha. É gerado um hello world que imprime a stream de alterações à medida que chega. Consulte a documentação para saber mais sobre como escrever funções do Cloud Run.
  4. Use os valores predefinidos para todos os outros campos.
  5. Clique em Implementar função.

Crie uma tabela com uma stream de alterações ativada

  1. Na Google Cloud consola, aceda à página Instâncias do Bigtable.

    Aceda a Instâncias

  2. Clique no ID da instância que está a usar para este tutorial.

    Se não tiver uma instância disponível, crie uma instância com as configurações predefinidas numa região perto de si.

  3. No painel de navegação do lado esquerdo, clique em Tabelas.

  4. Clique em Criar tabela.

  5. Atribua um nome à tabela change-streams-pubsub-tutorial.

  6. Adicione uma família de colunas com o nome cf.

  7. Selecione Ativar stream de alterações.

  8. Clique em Criar.

Inicialize um pipeline de dados para capturar a stream de alterações

  1. Na página Tabelas do Bigtable, encontre a sua tabela change-streams-pubsub-tutorial.
  2. Na coluna Alterar stream, clique em Associar.
  3. Na caixa de diálogo, selecione Pub/Sub.
  4. Clique em Criar tarefa do Dataflow.
  5. Na página Criar tarefa do Dataflow, defina o nome do tópico do Pub/Sub de saída como: bigtable-change-stream-topic.
  6. Defina o ID do perfil da aplicação do Bigtable como default.
  7. Clique em Executar tarefa.
  8. Aguarde até que o estado da tarefa seja A iniciar ou Em execução antes de continuar. Demora cerca de 5 minutos assim que a tarefa é colocada em fila.

Escreva alguns dados no Bigtable

  1. No Cloud Shell, escreva algumas linhas no Bigtable para que o registo de alterações possa escrever alguns dados no stream do Pub/Sub. Desde que escreva os dados após a criação da tarefa, as alterações aparecem. Não tem de esperar que o estado da tarefa se torne 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
    

Veja os registos de alterações no Pub/Sub

  1. Na Google Cloud consola, aceda à página Subscrições do Pub/Sub.

    Aceda a Subscrições

  2. Clique na subscrição criada automaticamente para o seu tópico bigtable-change-stream-topic. Deve ter o nome bigtable-change-stream-topic-sub.

  3. Aceda ao separador Mensagens.

  4. Clique em Extrair.

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

    Altere as mensagens do registo no Pub/Sub

Opcional: veja as alterações nos registos das funções do Cloud Run

Se criou uma função do Cloud Run, pode ver as alterações nos registos.

  1. Na Google Cloud consola, aceda a Funções do Cloud Run.

    Aceder às funções do Cloud Run

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

  3. Aceda ao separador Registos.

  4. Certifique-se de que a gravidade está definida, pelo menos, como Informações para poder ver os registos.

  5. Explore os registos e veja os dados que escreveu.

O resultado tem um aspeto semelhante ao seguinte:

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"}}