我有一个spring boot应用程序在3个容器上运行。我需要设计一个服务,它每5分钟从数据库中读取,然后对数据执行一些计算。
我可以使用@schedule注解编写一个函数,每5分钟运行一次。但是如何确保不是所有容器都在处理相同的数据呢?有没有办法,我可以把负载分配给所有的容器?
支持数据库中有1800条记录,我需要每5分钟计算一次。因此,每个容器可以每5分钟处理600条记录,并且在任何时候,如果一个容器宕机,那么其他两个容器可以管理负载。
发布于 2021-03-31 01:08:02
其中一种方法是使用SKIP LOCKED。你可以在The best way to use a DB table as a job queue (a.k.a batch queue or message queue)上找到关于如何做到这一点的很好的解释。
https://stackoverflow.com/questions/66874258
复制相似问题