Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Spring-微服务体系结构,实例之间的序列化_Java_Spring_Serialization_Concurrency_Synchronization - Fatal编程技术网

Java/Spring-微服务体系结构,实例之间的序列化

Java/Spring-微服务体系结构,实例之间的序列化,java,spring,serialization,concurrency,synchronization,Java,Spring,Serialization,Concurrency,Synchronization,我正在用Java和Spring开发一个微服务体系结构。在这种体系结构中,我可以部署同一服务的任意多个实例,以支持水平可伸缩性。我或多或少地遵循了十二要素哲学() 我所处的情况是,某些非常具体的逻辑只能由一个实例执行。Spring(或另一个成熟的开源项目)支持这一点吗?比如: @Serialized @Scheduled(cron = "...") public void createReports() { } 这里的@Serialized注释声明createReports()将仅由一个实例执

我正在用Java和Spring开发一个微服务体系结构。在这种体系结构中,我可以部署同一服务的任意多个实例,以支持水平可伸缩性。我或多或少地遵循了十二要素哲学()

我所处的情况是,某些非常具体的逻辑只能由一个实例执行。Spring(或另一个成熟的开源项目)支持这一点吗?比如:

@Serialized
@Scheduled(cron = "...")
public void createReports() {

}
这里的
@Serialized
注释声明
createReports()
将仅由一个实例执行。例如,这可以由PostgreSQL后端支持,在该后端中,某一行上有一个锁

我可以自己实现这一点,但如果这不是重新发明轮子,我会感到惊讶


如果Spring或另一个成熟的开源项目支持这一点,你有什么想法吗?

谁来决定哪一个实例是幸运的?你要寻找的是一个分布式信号量:它不存在。如果只有一个实例可以执行该逻辑,那么它有多个实例的意义吗?因为在给定的时间内,只有一个节点处于活动状态,而所有其他节点都处于空闲状态。在我看来,这似乎违反了主要的微服务理念。至少您描述的功能看起来至少有两种不同的功能—一种可以在任何实例上运行,另一种只能在一个实例上运行。那么,第二个是不是应该是另一个微服务,而不是“不再微”服务的一部分呢?@SajithDilshan有,比如HA。谁来决定哪一个实例是幸运的?你要找的是一个分布式信号量:它不存在。如果只有一个实例可以执行该逻辑,那么它有多个实例的意义吗?因为在给定的时间内,只有一个节点处于活动状态,而所有其他节点都处于空闲状态。在我看来,这似乎违反了主要的微服务理念。至少您描述的功能看起来至少有两种不同的功能—一种可以在任何实例上运行,另一种只能在一个实例上运行。那么,第二项服务是否应该是另一项微服务,而不是“不再微”服务的一部分呢?@SajithDilshan,对HA来说。