Servidor Couchbase

Temporizadores nas funções do Couchbase

Temos o prazer de anunciar o suporte de Timers em Couchbase 6.0 Beta lançamento. Essa é uma inovação importante na Funções do Couchbase que permite a computação assíncrona em referência a eventos de relógio de parede.

Os temporizadores são construções por meio das quais os desenvolvedores podem especificar uma rotina (lógica comercial) a ser acionada em um momento futuro.

Exemplos de casos de uso

  • Arquivar um documento antes da expiração
  • Enviar uma notificação (SMS ou e-mail) a um cliente 1 hora após o check-in em um hotel
  • Filtrar os hóspedes que não fizeram o check-in 30 minutos antes da partida do voo
  • Avaliação de risco quase em tempo real para transações com cartão de crédito
  • Verificar se um documento foi alterado em uma janela de tempo especificada desde sua última atualização
Timers in Couchbase Functions

Temporizadores nas funções do Couchbase

Sintaxe de temporizadores

A maneira de criar um cronômetro é:

   createTimer(callback_function, expiry_ts, reference, context_payload)

onde:

callback_functionFunção a ser chamada quando o cronômetro for executado

expiração_tsData e hora: registro de data e hora em que a função deve ser executada (objeto Javascript Date)

referência: um id/string de referência exclusivo

context_payloadCarga útil adicional que deve ser enviada à função de retorno de chamada.

Observação: A combinação de nome da função, função de retorno de chamada e referência deve ser exclusiva e, se não for, o cronômetro existente será substituído. Ou, em outras palavras, para uma determinada função, os temporizadores criados dentro de seu escopo devem ter uma combinação exclusiva de função de retorno de chamada e referência.

Código de amostra

O código a seguir é um exemplo de código que cria um cronômetro programado para ser executado 5 segundos a partir do momento de sua criação.

 

Recursos do cronômetro

Embora a construção pareça extremamente simples e fácil de consumir, há muito trabalho pesado que é feito pela plataforma para oferecer a semântica.

Alguns recursos notáveis incluem:

  • Processamento distribuído em escala: Distribuição automática de cronômetros entre os nós, o que permite escalabilidade elástica. Isso também significa que os cronômetros não precisam ser executados no mesmo nó que realmente criou o cronômetro.
  • Pelo menos uma execução de cronômetros, apesar de falhas de nós e reequilíbrios de cluster
  • Execução eventual de cronômetros no caso de um grande acúmulo de eventos a serem processados

Comportamentos dos cronômetros

  • As associações criadas para a função também poderão ser acessadas dentro dos temporizadores. Isso mantém o código consistente e legível.
  • Os temporizadores seguem a mesma semântica de tempo limite de suas funções pai. Portanto, se uma função tiver um tempo limite de execução de 60 segundos, cada um dos temporizadores criados a partir da função herdará o mesmo valor de tempo limite de execução de 60 segundos.
  • Os temporizadores não podem ser depurados usando o depurador visual.
  • As mensagens de log() impressas dos Timers serão capturadas no mesmo log do aplicativo que a Função principal.
  • Se a função for excluída ou não implantada, todos os temporizadores associados também serão excluídos.
  • Os temporizadores não são repetidos automaticamente se sua execução falhar devido a um erro programático ou de tempo de execução. Recomenda-se que o código seja tratado adequadamente com exceções (ou seja, encerrado em um bloco try-catch)
  • As informações sobre os temporizadores associados a uma função são armazenadas no compartimento de metadados e, portanto, esse compartimento não deve ser excluído ou liberado, nem as chaves devem ser atualizadas. Recomenda-se que o compartimento de metadados não seja usado por nenhum outro aplicativo.
  • Como as informações do timer são armazenadas no bucket de metadados, se o caso de uso exigir e o número de timers no sistema for alto, recomenda-se que a memória atribuída ao bucket de metadados também seja adequadamente alta.

Recursos relacionados 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Venkat Subramanian, gerente de produtos

Venkat trabalha com desenvolvimento e gerenciamento de produtos e vem desenvolvendo plataformas e produtos de dados/análise. Uma parte significativa de sua experiência foi na Oracle, onde passou de engenheiro da equipe de Enterprise Manager da Oracle a gerente de produtos do conjunto de produtos de BI/Analytics da Oracle. No passado, ele trabalhou em startups, ajudando a desenvolver produtos de aprendizado de máquina/NLP e sistemas de decisão distribuídos. Ele está sempre por perto em @venkasub.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.