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.
Objetivos
Este tutorial mostra como fazer o seguinte:
- Crie uma tabela do Bigtable com uma stream de alterações ativada.
- Crie um tópico Pub/Sub com o esquema do fluxo de alterações do Bigtable.
- Implemente uma stream de alterações do Bigtable numa pipeline do Pub/Sub no Dataflow através do modelo.
- Veja a stream de eventos no Pub/Sub diretamente ou nos registos de uma função do Cloud Run.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles. - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles. - Atualize e instale a
CLI
cbt
.gcloud components update gcloud components install cbt
Na Google Cloud consola, aceda à página Tópicos do Pub/Sub.
Clique em Criar tópico.
Defina o ID como
bigtable-change-stream-topic
.Selecione Usar um esquema.
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.
- Defina o ID do esquema como
bigtable-change-stream-schema
. - Defina o tipo de esquema como Avro.
- 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"]} ] }
- Clique em Criar para criar o esquema.
- Defina o ID do esquema como
Feche o separador Criar esquema, atualize a lista de esquemas e selecione o esquema recém-definido.
Clique em Criar para criar o tópico.
- Na página Detalhes do tópico
bigtable-change-stream-topic
, clique em Acionar função do Google Cloud . - No campo Nome da função, introduza o nome
bt-ps-tutorial-function
. - 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. - Use os valores predefinidos para todos os outros campos.
- Clique em Implementar função.
Na Google Cloud consola, aceda à página Instâncias do Bigtable.
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.
No painel de navegação do lado esquerdo, clique em Tabelas.
Clique em Criar tabela.
Atribua um nome à tabela
change-streams-pubsub-tutorial
.Adicione uma família de colunas com o nome
cf
.Selecione Ativar stream de alterações.
Clique em Criar.
- Na página Tabelas do Bigtable, encontre a sua tabela
change-streams-pubsub-tutorial
. - Na coluna Alterar stream, clique em Associar.
- Na caixa de diálogo, selecione Pub/Sub.
- Clique em Criar tarefa do Dataflow.
- Na página Criar tarefa do Dataflow, defina o nome do tópico do Pub/Sub de saída como:
bigtable-change-stream-topic
. - Defina o ID do perfil da aplicação do Bigtable como
default
. - Clique em Executar tarefa.
- 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.
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
Na Google Cloud consola, aceda à página Subscrições do Pub/Sub.
Clique na subscrição criada automaticamente para o seu tópico
bigtable-change-stream-topic
. Deve ter o nomebigtable-change-stream-topic-sub
.Aceda ao separador Mensagens.
Clique em Extrair.
Explore a lista de mensagens e veja os dados que escreveu.
Na Google Cloud consola, aceda a Funções do Cloud Run.
Clique na sua função
bt-ps-tutorial-function
.Aceda ao separador Registos.
Certifique-se de que a Gravidade está definida, pelo menos, como Informações para poder ver os registos.
Explore os registos e veja os dados que escreveu.
Na Google Cloud consola, aceda à página Instâncias do Bigtable.
Clique no ID da instância que está a usar para este tutorial.
No painel de navegação do lado esquerdo, clique em Tabelas.
Encontre a tabela
change-streams-pubsub-tutorial
.Clique em Edit.
Desmarque a opção Ativar stream de alterações.
Clique em Guardar.
Abra o menu adicional da tabela.
Clique em Eliminar e introduza o nome da tabela para confirmar.
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Selecione a tarefa de streaming na lista de tarefas.
Na navegação, clique em Parar.
Na caixa de diálogo Parar tarefa, cancele o pipeline e, de seguida, clique em Parar tarefa.
Na Google Cloud consola, aceda à página Tópicos do Pub/Sub.
Selecione o tópico
bigtable-change-stream-topic
.Clique em Eliminar e confirme.
Clique em Subscrições na barra lateral.
Selecione a subscrição do
bigtable-change-stream-topic-sub
.Clique em Eliminar e confirme.
Na Google Cloud consola, aceda a Funções do Cloud Run.
Selecione a função
bt-ps-tutorial-function
.Clique em Eliminar e confirme.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin
), which
contains the serviceusage.services.enable
permission. Learn how to grant
roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin
), which
contains the serviceusage.services.enable
permission. Learn how to grant
roles.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Crie um tópico do Pub/Sub
Opcional: crie uma função do Cloud Run
Pode querer processar a stream do Pub/Sub com uma função do Cloud Run.
Crie uma tabela com uma stream de alterações ativada
Inicialize um pipeline de dados para capturar a stream de alterações
Escreva alguns dados no Bigtable
Veja os registos de alterações 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.
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"}}
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.