集群环境下,如何让某些任务只在单节点下执行?

Will_awokE 发布于 2014/09/01 11:14
阅读 406
收藏 0

如题,在集群环境下,有一些特殊任务,这些任务只需要触发一次,而无需在所有节点下执行。有什么好的建议么?

加载中
0
Will_awokE
Will_awokE
发现一个比较好的思路,参考的是Spring quartz的集群运行任务思路,悲观锁+乐观锁。谢谢各位。 
0
skyim
skyim
部署在一台服务器
0
红薯
红薯

没有详细的环境描述,回答不了,什么集群?

0
平安北京
单独的部署
平安北京
回复 @Will_awokE : 还有就是投票了吧
Will_awokE
Will_awokE
这个我想到过,但是不太想拆分。
0
Will_awokE
Will_awokE

引用来自“红薯”的评论

没有详细的环境描述,回答不了,什么集群?

场景:有一个应用部署在3个集群节点下,应用中,有一个比较特殊的任务,这个任务如果在3个节点下,就会执行三次,而我实际只想让其执行一次。 不想将这个任务单独拆分成一个应用,然后只放到一个节点下,有没有更好的处理办法? 
0
明月照大江
明月照大江

任务分发就需要细化,是分发到每一个机器上,还是用散列hash or 取余摊派到其中一个机器上。

显然题主需要的是一个分发调度器来达到目的。

该调度器将根据任务的类型(type),选择合适的分发策略,如广播(任何real-server都能收到),区域分发(需要对real-server进行分组),根据任务ID一致性哈希或取余分发(分发到某一个机器上,且确保相同ID的任务分发到同一个real-servre上),随机分发,根据real-server的权重进行选择分发。

0
10书生
10书生
需要一个独立的调度服务
0
Neoman
Neoman
你的前提条件是任务线程运行在web容器里(比如tomcat),没有这个前提,就没有你的问题了
Will_awokE
Will_awokE
回复 @Neoman : 那也就是必须将这个任务单独抽出来啦。
Neoman
Neoman
回复 @Will_awokE : 线程单独运行,不要再web容器里运行
Will_awokE
Will_awokE
在weblogic下的应用集群。
返回顶部
顶部