我正在开发Java和Spring的微服务架构。在这个架构中,我可以部署同样多的服务实例,以支持水平可伸缩性。我或多或少遵循十二因素哲学(https://12factor.net)。
我处于这样的情况:某些非常具体的逻辑只能由一个实例执行。 Spring(或其他成熟的开源项目)是否支持此功能?类似的东西:
@Serialized
@Scheduled(cron = "...")
public void createReports() {
}
此处@Serialized
注释表明createReports()
仅由一个实例执行。例如,这可以由PostgreSQL后端支持,其中保持对某一行的锁定。
我自己可以实现这一点,但如果不重新发明轮子,我会感到惊讶。
如果Spring或其他成熟的开源项目支持这些想法吗?