我有一个spring启动应用程序在3个容器上运行。我需要设计一个服务,从数据库读取每5分钟,然后执行一些数据计算。
我可以使用@schedule annotation编写一个函数,每5分钟运行一次。但如何确保所有容器都不是在处理相同的数据呢。有没有办法,我可以把货物分给所有的集装箱?
支持数据库中有1800条记录,我需要每5分钟对其执行一次计算。因此,每个容器每5分钟可以处理600条记录,并且在任何时间点,如果一个容器发生故障,那么其他两个容器可以管理负载。
我有一个spring启动应用程序在3个容器上运行。我需要设计一个服务,从数据库读取每5分钟,然后执行一些数据计算。
我可以使用@schedule annotation编写一个函数,每5分钟运行一次。但如何确保所有容器都不是在处理相同的数据呢。有没有办法,我可以把货物分给所有的集装箱?
支持数据库中有1800条记录,我需要每5分钟对其执行一次计算。因此,每个容器每5分钟可以处理600条记录,并且在任何时间点,如果一个容器发生故障,那么其他两个容器可以管理负载。
1条答案
按热度按时间cwtwac6a1#
一种方法是使用
SKIP LOCKED
. 您可以找到一个很好的解释,说明如何以最佳方式使用db表作为作业队列(即批处理队列或消息队列)。