当前位置: 首页 > 知识库问答 >
问题:

多节点环境中的计划作业

卢勇
2023-03-14

我正在进行一项预定的工作,该工作将以一定的间隔运行(例如每天下午1点),通过Cron安排。我正在使用Java和Spring。

编写计划作业非常简单 - 它确实如此:从db中抓取人员列表将某些条件,为每个人做一些计算并触发消息。

我正在本地和测试中开发单节点环境,但是当我们投入生产时,它将是多节点环境(带有负载均衡器等)。我关心的是多节点环境会如何影响计划的作业?

我的猜测是,我可能(或很可能)最终会触发重复消息。

  • 机器1:抢人名单,做计算
  • 机器2:抢人名单,做计算
  • 机器1:触发消息
  • 机器2:触发消息

我的猜测正确吗?

避免上述问题的推荐解决方案是什么?我是否需要创建主/从分布式系统解决方案来管理多节点环境?

共有1个答案

公良天逸
2023-03-14

例如,如果您有三个Tomcat实例,每个实例都在Apache后面进行负载平衡,并且在每个应用程序上运行,那么您将有三个不同的触发器,您的作业将运行三次。我不认为你会有一个分布式作业执行的多节点环境,除非有某种机制来分配作业的各个部分。如果您还没有看过这个项目,请看一下Spring XD。它处理Spring Batch Jobs,可以在分布式模式下运行。

 类似资料:
  • 本文向大家介绍VMware配置多节点环境的操作方法,包括了VMware配置多节点环境的操作方法的使用技巧和注意事项,需要的朋友参考一下 本教程使用CentOS 7 64位, 为每个虚拟机分配2GB内存和20G硬盘空间,请按需分配内存和硬盘空间网络连接使用桥接模式 启动虚拟机,使用dhclient工具为虚拟机自动分配一个可用的ip地址(dhclient是一个DHCP协议客户端,它使用DHCP协议或者

  • 我目前正在努力解决以下问题: 我有一个Java EE应用程序,它应该能够在集群中运行(实际上是这样)。对于节点之间的数据交换,我使用Hazelcast 3.3.3。因为我们的客户害怕UDP,所以我们使用TCP。因此,我为每个节点配置了3个hazelcast参数:要使用的网络接口、端口和集群成员。在现实生活中(不是docker环境),一切都正常。现在,我想将Java EE服务器放入docker容器中

  • 目前,我们使用Apache Ignite.NET瘦客户机缓存不同的数据集。对于每个数据请求,我们使用通过IIgniteClient.createCache ()方法创建的单独缓存。一个缓存包含一组具有相同属性的Enities,在过期后应独立于其他缓存删除。 问题是,在生产中,我们希望有许多应用程序(环境)实例与一个Apache Ignite实例一起工作。每个应用程序实例都应该能够使用与其他应用程序

  • 我在学习多线程时发现对象的速度变慢了。hashCode在多线程环境中,因为对于相同数量的对象,计算运行4个线程的默认哈希代码要比运行1个线程的默认哈希代码花费两倍的时间。 但根据我的理解,并行完成这项工作也需要类似的时间。 您可以更改线程数。每个线程都有相同的工作量,因此您希望在我的四核机器上运行4个线程可能需要与运行单个线程相同的时间。 我看到4x大约2.3秒,但是。1x为9秒。 我的理解是否有

  • 问题内容: 我的Jenkins管道看起来像这样(请原谅一些小的语法错误): 我的意图是与拥有一个节点,与拥有一个节点。 我实际上看到的是,命令运行时在两个节点上都设置了。 根据本教程,“ [特殊变量]的属性是当前节点上的环境变量。” 因此,我希望这能奏效。 问题答案: 在本教程的后面,它说: 在这种情况下,请勿使用env: 因为环境变量的覆盖仅限于对管道运行是全局的,而不是当前线程(以及代理)的局

  • 假设我们有一个具有10个GPU和40个CPU核的单个节点。这是否可以用来将节点拆分成10个节点,每个节点有4个核心,每个GPU,并带有显式的CPU/GPU绑定?如果是,配置需要是什么样子的?