Serviço de eventos do Couchbase foi introduzido em Lançamento do Couchbase Data Platform 5.5. A versão 6.0 da plataforma de dados Couchbase apresentou Temporizadores. Semelhante ao Práticas recomendadas de indexação que publicamos anteriormente, vamos dar uma olhada em algumas práticas recomendadas quando se trata de usar o Couchbase Eventing Service:
- Sobre depuração e capacidade de diagnóstico
(a) Nunca use o depurador em ambientes de produção. Um thread é alocado para a sessão do depurador quando ele está ativado. O fato de o depurador estar ativado (ou seja, ligado) em ambientes de produção pode levar a eventos fora de ordem para um determinado documento. (A capacidade de ativar/desativar o depurador em diferentes ambientes está disponível na versão 6.0).
(b) Os arquivos de registro de aplicativos são rotacionados por padrão. Atualize o tamanho do arquivo de log com base na sua política de rotação de logs.
2. Não implemente funções que levem a gravações em cascata, ou seja, a função A que escuta o bucket A grava no bucket B e a função B que escuta o bucket B grava no bucket A.
3. Sempre envolva o código Javascript na função usando um bloco try-catch para capturar todas as exceções em tempo de execução; o registro de exceções garante que as mensagens sejam capturadas nos arquivos de registro específicos do aplicativo.
4. No Bucket de Metadados:
(a) Não libere o compartimento de metadados quando as funções forem implantadas. O bucket de metadados é usado para armazenar muitas informações relacionadas ao sistema que são usadas pelo Couchbase Eventing Service. A descarga do bucket de metadados pode levar à perda de informações do ponto de verificação, o que pode levar a Serviço de eventos perder o controle da sequência de mutações que estão sendo processadas.
(b) Evite usar um compartimento efêmero como compartimento de metadados, pois ele poderá ejetar itens se o uso da memória ultrapassar a cota. A ejeção de itens do compartimento de metadados pode resultar em comportamentos imprevisíveis, como perda de eventos de cronômetro, disparo de eventos duplicados etc.
(c) Recomendamos ter réplicas suficientes para o bucket de metadados para evitar a perda de cronômetros e a ocorrência de eventos duplicados, no caso de uma ou mais falhas no nó do serviço de dados.
(d) Não use o bucket de metadados para outros aplicativos. O Couchbase Eventing Service prefixa todas as informações do sistema que estão sendo armazenadas no bucket de metadados com uma chave exclusiva. Embora esse namespacing da chave ajude a diferenciar outros aplicativos que possam ser inseridos no mesmo bucket, é recomendável que os clientes não insiram novos documentos nesse bucket de outros aplicativos, nem atualizem/excluam os documentos existentes inseridos pelo Couchbase Eventing Service.
5. As estatísticas exibidas no console de administração para uma determinada função devem ser usadas para provisionamento e monitoramento da infraestrutura. O backlog da função deve ser estável e, se estiver aumentando, é necessário implantar mais nós de Eventing ou atribuir mais trabalhadores/nó de Eventing para a função em questão.
6. Se houver muitos tempos limite para uma determinada função, entenda a causa raiz e considere aumentar o valor do tempo limite (nas configurações de uma determinada função). Se o aumento do tempo limite não for uma opção, tente alocar mais recursos (núcleos) para os nós de Eventing ou adicione mais nós de Eventing para aumentar a taxa de transferência do processamento.
7. Ao criar funções para arquivamento de dados que usam temporizadores, estude a lista de pendências e distribua um tempo delta suficiente antes da expiração real. Isso serve para garantir que o documento exista no bucket se for acessado dentro do cronômetro. Caso contrário, passe o documento como um contexto no cronômetro (isso é semelhante a "Pass By Value").
8. Entenda os limites de feed suportados pelo Eventing Service. Prefira usar "From Now" para economizar tempo e poder de processamento quando as mutações mais antigas em um bucket não precisarem ser processadas.
9. O ideal é que os nós que executam o Couchbase Eventing Service não tenham outros serviços do Couchbase em execução nos mesmos nós. O Couchbase Eventing Service é um serviço orientado para a computação e, portanto, os nós que o executam devem ter mais núcleos do que RAM.
10. O Couchbase Server desduplica várias atualizações em um documento. Entenda como a desduplicação e a ordenação de mutações funcionam no aqui.
Para ver uma demonstração de como o Couchbase Eventing Service processa um bilhão de documentos em menos de 30 minutos, confira Apresentação/palestra do Connect Silicon Valley'18. Além disso, de Conecte Nova York'18 (no início deste ano).