公司有一个单独跑各种定时的一个项目,最近总是频繁的出现故障,主要的原因就是机器的性能问题。
确实一台4核8G的机器,要负责上百个定时任务,有的任务线程十分的频繁,随着后面业务的拓展,这种单机的模式显然已经不能满足后续的需求。
来吧,那就开始重构吧。
重构的大体思路就是,由单机版重构为分布式形式,用拓展的思路,堆服务器的套路,解决后面无穷无尽的需求。
因为单位用的PRC架构是比较流行的Zookeeper+dubbo,zk作为优秀的分布式管理平台,做这种分布式的定时任务,那简直再适合不过了。
为了演示方便,我就在本地起一个zk的服务,然后新建两个SpringBoot作为虚拟的分布式定时服务。
一:本地搭建zookeeper环境
为了方便测试,首先就是本地搭建zk的环境,这种zk的包网上十分普遍,我用的zk版本是3.4.2。
二:新建两个SpringBoot
import com.dangdang.ddframe.job.api.ShardingContext;//当当网的开源架构
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.zen.elasticjob.spring.boot.annotation.ElasticJobConfig;
@ElasticJobConfig(cron = "0/5 * * * * ? *", shardingTotalCount = 1,
shardingItemParameters = "0=ZKJob1A,1=ZKJob1B",