Executar uma tarefa agendada uma vez, apenas uma vez, em um cluster de processadores distribuídos é um requisito relativamente comum. Por exemplo, a situação pode surgir durante a ingestão de um lote de dados, envio de uma notificação ou executar alguma atividade de limpeza regular. Mas este é um problema notoriamente desafiador. Como um grupo de processos coopera de forma confiável em redes lentas e menos confiáveis? Algum tipo de mecanismo de bloqueio é necessário para coordenar ações em todo o cluster. Felizmente, vários armazenadores distribuídos podem implementar um bloqueio. Sistemas como ZooKeeper e Consul, bem como bancos de dados como DynamoDB ou Couchbase, têm os mecanismos subjacentes necessários para gerenciar o consenso em todo o cluster. ShedLock é uma pequena biblioteca usada para aproveitar esses provedores em seu próprio código Java, caso você deseje implementar suas próprias tarefas agendadas. Fornece uma API para adquirir e liberar bloqueios, bem como conectores para uma ampla variedade de provedores. Se você está escrevendo suas próprias tarefas distribuídas, mas não quer assumir a complexidade de uma plataforma de orquestração inteira como Kubernetes, vale a pena dar uma olhada no ShedLock.