Ejecutar una tarea programada una única vez en un cluster de procesadores distribuidos es un requerimiento relativamente común. Por ejemplo, la situación podría surgir cuando se ingesta un lote de datos, se envía una notificación o se ejecuta alguna actividad de limpieza periódica. Pero, este es un problema notablemente complicado. ¿Cómo es que un grupo de procesos cooperan de manera segura sobre redes lentas y poco confiables? Algún mecanismo de bloqueo es necesario para coordinar las acciones a través del cluster. Afortunadamente, una variedad de almacenamientos distribuidos pueden implementar un bloqueo. Sistemas como ZooKeeper y Consul, así como también bases de datos como DynamoDB o Couchbase poseen mecanismos subyacentes para administrar el consenso dentro del cluster. ShedLock es una pequeña biblioteca para aprovecharse de estos proveedores en tu código Java, si estás buscando implementar tus propias tareas programadas. Cuenta con un API para adquirir y liberar bloqueos, así como también conectores para una amplia variedad de proveedores de bloqueo. Si estás escribiendo tus propias tareas distribuidas pero quieres evitar la complejidad que implica una plataforma de orquestación como Kubernetes, vale la pena darle un vistazo a ShedLock.