水桶妖L小蛮妖 2016-07-04 03:33 采纳率: 100%
浏览 4013
已采纳

负载均衡下定时器任务怎么只执行一个,在不使用数据库的情况下

最近在做考核,经理问了一个如题目的问题,要求我不使用数据库,解决spring quartz定时器在负载均衡的环境下只运行行一个定时器任务。目前想到的方案,1、利用JAVA的输入输出,在数据库服务器上创建一个文件,用来控制由哪台服务器来运行定时器任务。2、直接利用数据库运行定时器任务,(这个有点顾虑就是担心并非所有的定时器任务都是执行对数据库的更新操作。本人菜鸟。)
希望来位大神帮忙解决一下,想很久了,没有想到别的办法。

  • 写回答

2条回答

  • 孤单胖南瓜_ 2016-07-05 02:20
    关注

    你的这两个方案明显是不满足经理要求的,
    1、“创建一个文件”,既然是负载均衡应用肯定不在同一个主机上,难道你创建网络文件吗。当然你可以使用zookeeper,创建一个结点之类的。
    2、利用数据库运行定时器任务,你们经理都说了不使用数据库。
    给你出个主意但不知道行不行,等应用启起来之后,向负载均衡发送一个启动quartz http请求, 负载会把这个请求发送到其中一个主机。
    这样就基本达到你的要求了只执行一个,但是不知道是不是你们经理想要回答。

    这的确是一个在开发中会遇到的实用的问题,如果还能实现动态切换那就更好了(当然使用zookeeper很容易做到)。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器