因为项目仅仅是不停的抓数据,没有弄成分布式的,但依然需要系统双活来保证系统稳定.
这个时候,我的思路是:这个在另一篇博文中有些的详细思路(在Timer定时任务中_基于Redis自己实现一套双机互备_双活系统_基于抢占原则),可以搜索双活查到,但是实际
实现起来,碰到了一些问题,已经解决,记录下来.
首先根据上面这个博文,已经实现了,一个简单的quartz定时:
1.自己定义一个QuartzTask普通的接口,然后实现几个这个接口,做为不同的定时任务.
2.但这里需要的是,动态添加任务,因为系统启动后,不同的定时器,会做不同的工作,
并且,采集系统需要连接不同的IP的设置进行接口数据采集,这就要求,每个IP的设备
都需要有一个与之对应的定时器,而且,这个IP设备,是动态的,有可能将来,会动态的再添加
一个IP设备,那么这个时候,系统就会自动检测,自动为这个IP设备,生成一个定时任务.
3.所以可以看到,我们这个系统中的定时任务是动态添加的,但是应该是有2个定时任务是固定的.
4.一个定时任务是,用来检测系统,双活的,这个定时任务做的事情是,实时检测自身状态,没问题,就
更新最新时间,这样别的单点系统,在检测是时候发现,有一台机器上活着的,并且没有超时,就不会
上线,让出定时任务执行的机会,给主机,所有的从机属于待命状态.我们这样做,为了保证,集群
中的所有机器中,每个定时任务应该是只执行一份,而,我们这里还要求,不应该是每个定时任务只有
一份在集群中执行,而是集群中的,所有实例中,同时只有一个实例中的定时任务在执行.
5.然后还需要一个定时任务,是检测IP设备变化的,当新添加了新的IP设备以后,就需要动态,给
这个IP设备,添加一个定时任务,而添加的这定时任务就是需要为这个新的IP设备,添加,
6.然