Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

181
Visualizações
Quiero encontrar el punto central entre los grupos.

Tengo un proyecto creado por NestJs y quiero cambiar algunos datos cada 24 horas, he decidido usar CronJob para eso. Pero cuando ejecuto mi proyecto por pm2 (en diferentes clústeres), CronJob funciona una vez para cada clúster y funciona totalmente para el conteo de clústeres (si tengo 8 clústeres, funciona 8 veces). ¿Cómo puedo encontrar el punto central que pm2 no separa eso y mis códigos funcionan solo una vez?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Su opinión sobre el problema parece ser correcta: si ejecuta muchos procesos homogéneos, cada uno ejecutando el mismo cronjob, entonces los resultados del cronjob obviamente se duplicarán.

Hay varias soluciones al problema. La más obvia es dividir la lógica cron en otro proceso de Node.js, de modo que solo haya 1 proceso cron ejecutándose en un momento dado. Esto se puede implementar usando una variedad de técnicas:

  • Un host designado como "el lugar donde ejecuta cron", y ningún otro host puede ejecutar el proceso cron hasta que el administrador cambie el host manualmente.
  • Kubernetes: un plano de control ya le proporciona los medios para ejecutar solo 1 copia de un proceso determinado.
  • Elección de líder: un conjunto de procesos se coordinan a través de una red, por lo general convocando un voto mayoritario sobre quién será "el Cron" por ahora.

Alternativamente, si tiene una base de datos central como PostgreSQL, puede usarla como un punto de sincronización: puede insertar una nueva fila para cada invocación de cron y hacer que los consumidores (los procesos que realmente ejecutan tareas) lean nuevas filas. Si se encuentra una nueva fila, debe bloquearse a través de FOR UPDATE , lo que garantiza la exclusividad. Esta es una forma rudimentaria de bloqueo de red. Las invocaciones duplicadas se pueden evitar mediante una clave principal, por ejemplo, en función de la fecha: si sabe que solo tendrá 1 invocación por día, solo puede haber una entrada con el ID 2021-11-10 .

Finalmente, busque en línea las implementaciones de cron existentes. Ya existen algunas bibliotecas "cron sincronizadas" que abordan este problema exacto, como https://github.com/percolatestudio/meteor-synced-cron ; puede usar esto como inspiración o como punto de partida para su búsqueda. .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda