Raf*_*hes 7 java spring terracotta quartz-scheduler hazelcast
我知道这对兵马俑来说是不公平的,但有没有人试图使用Hazelcast来在集群环境中使用预定的工作?
我可以成像的最简单的实现是以下架构:
我相信对于那些已经拥有Hazelcast的人来说,这将是一个很大的优势,因为他们不会因为一直打开兵马俑而需要整个开发环境的麻烦.
目前我编写了最简单的解决方案,只需要一个节点来负责执行Quartz触发器.由于我只使用类似Cron的触发器,如果我负责为繁重的触发器任务创建DistributedTasks,它可能是一个可接受的解决方案.
这是我的org.springframework.scheduling.quartz.SchedulerFactoryBean扩展,它实现了:
@Override
public void start() throws SchedulingException {
new Thread(new Runnable() {
@Override
public void run() {
final Lock lock = getLock();
lock.lock();
log.warn("This node is the master Quartz");
SchedulerFactoryBean.super.start();
}
}).start();
log.info("Starting..");
}
@Override
public void destroy() throws SchedulerException {
super.destroy();
getLock().unlock();
}
Run Code Online (Sandbox Code Playgroud)
请告诉我,如果我错过了一些大事,如果可以的话.
我已将这两个文件添加到github.这是RAMJobStore扩展:
这是Spring SchedulerFactoryBean扩展:
前段时间我正在考虑相同的概念.实际上,你可以整合Hazelcast
与quartz-scheduler
通过实现轻松JobStore
SPI接口.查看RAMJobStore
有关如何基于内存数据结构实现作业存储的参考,以及JobStoreTX
- 集群,数据库支持的存储.
这个界面非常大,但它应该是从RAM或Terracotta切换到Hazelcast所需的唯一地方.后一个库已经提供了分布式存储和锁定,所以它应该是相当简单的.
如果你可以分享你的实现(GitHub?)会很棒,猜测它对许多人来说是一个可行的替代Terracotta集群.
归档时间: |
|
查看次数: |
5684 次 |
最近记录: |