Modelo do Pub/Sub para o Redis

O modelo Pub/Sub para Redis é um pipeline de streaming que lê mensagens de uma subscrição do Pub/Sub e escreve o payload da mensagem no Redis. O exemplo de utilização mais comum deste modelo é exportar registos para o Redis Enterprise para uma análise de registos avançada baseada em pesquisas em tempo real.

  • Antes de escrever no Redis, pode aplicar uma função definida pelo utilizador em JavaScript ao payload da mensagem.
  • Todas as mensagens que apresentem falhas de processamento são encaminhadas para um tópico não processado do Pub/Sub para resolução de problemas e reprocessamento adicionais.
  • Para maior segurança, ative uma ligação SSL quando configurar a ligação do ponto final da base de dados. Este modelo não suporta o TLS mútuo.

Requisitos do pipeline

  • A subscrição do Pub/Sub de origem tem de existir antes de executar o pipeline.
  • O tópico não processado do Pub/Sub tem de existir antes de executar o pipeline.
  • O ponto final da base de dados Redis tem de estar acessível a partir da sub-rede dos trabalhadores do Dataflow.

Parâmetros de modelos

Parâmetros obrigatórios

  • inputSubscription: a subscrição do Pub/Sub a partir da qual ler a entrada. Por exemplo, projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>.
  • redisHost: o anfitrião da base de dados Redis. Por exemplo, your.cloud.db.redislabs.com. A predefinição é: 127.0.0.1.
  • redisPort: a porta da base de dados Redis. Por exemplo, 12345. A predefinição é: 6379.
  • redisPassword: a palavra-passe da base de dados Redis. A predefinição é empty.

Parâmetros opcionais

  • sslEnabled: o parâmetro SSL da base de dados Redis. A predefinição é: false.
  • redisSinkType: o destino do Redis. Os valores suportados são STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK. Por exemplo, STRING_SINK. A predefinição é: STRING_SINK.
  • connectionTimeout: o limite de tempo da ligação Redis em milissegundos. Por exemplo, 2000. A predefinição é: 2000.
  • ttl: o tempo de validade da chave em segundos. O valor predefinido de ttl para HASH_SINK é -1, o que significa que nunca expira.
  • javascriptTextTransformGcsPath: o URI do Cloud Storage do ficheiro .js que define a função definida pelo utilizador (FDU) JavaScript a usar. Por exemplo, gs://my-bucket/my-udfs/my_file.js.
  • javascriptTextTransformFunctionName: o nome da função definida pelo utilizador (FDU) JavaScript a usar. Por exemplo, se o código da função JavaScript for myTransform(inJson) { /*...do stuff...*/ }, o nome da função é myTransform. Para ver exemplos de UDFs JavaScript, consulte Exemplos de UDFs (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
  • javascriptTextTransformReloadIntervalMinutes: especifica a frequência com que o UDF é recarregado, em minutos. Se o valor for superior a 0, o Dataflow verifica periodicamente o ficheiro UDF no Cloud Storage e recarrega a UDF se o ficheiro for modificado. Este parâmetro permite-lhe atualizar a UDF enquanto o pipeline está em execução, sem ter de reiniciar a tarefa. Se o valor for 0, o recarregamento das FDU está desativado. O valor predefinido é 0.

Função definida pelo utilizador

Opcionalmente, pode estender este modelo escrevendo uma função definida pelo utilizador (FDU). O modelo chama a FDU para cada elemento de entrada. Os payloads dos elementos são serializados como strings JSON. Para mais informações, consulte o artigo Crie funções definidas pelo utilizador para modelos do Dataflow.

Especificação da função

A FDU tem a seguinte especificação:

  • Entrada: cadeia JSON
  • Saída: uma string ou um objeto JSON convertido em string

Execute o modelo

Consola

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. Opcional: para Ponto final regional, selecione um valor no menu pendente. A região predefinida é us-central1.

    Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.

  5. No menu pendente Modelo do fluxo de dados, selecione the Pub/Sub to Redis template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Clique em Executar tarefa.

gcloud

Na shell ou no terminal, execute o modelo:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_PubSub_to_Redis \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       inputSubscription=INPUT_SUBSCRIPTION,\
       redisHost=REDIS_HOST,\
       redisPort=REDIS_PORT,\
       redisPassword=REDIS_PASSWORD,\

Substitua o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • INPUT_SUBSCRIPTION: a subscrição de entrada do Pub/Sub
  • REDIS_HOST: o anfitrião da base de dados Redis
  • REDIS_PORT: a porta da base de dados Redis
  • REDIS_PASSWORD: a palavra-passe da base de dados Redis

API

Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos de autorização, consulte projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "redisHost": "REDIS_HOST",
       "redisPort": "REDIS_PORT",
       "redisPassword": "REDIS_PASSWORD",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_PubSub_to_Redis",
     "environment": { "maxWorkers": "10" }
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • INPUT_SUBSCRIPTION: a subscrição de entrada do Pub/Sub
  • REDIS_HOST: o anfitrião da base de dados Redis
  • REDIS_PORT: a porta da base de dados Redis
  • REDIS_PASSWORD: a palavra-passe da base de dados Redis

O que se segue?