如有上万个任务要同时处理,每个任务的周期短则几十分钟,多则10几个小时,如果某个任务失败了,还需要尽快重新开始,每个任务都需要大量读写数据库,另外,某个任务结束后,隔固定时间还需要重新开始,大家有没有比较好的办法?用java或者C#之类的开发语言
这个需要做并发了吧,可以考虑用生产者-消费者模式,生产者在某个时间把要启动的任务放入队列,消费者取出任务去执行。
如果执行失败,则有消费者将任务重新放入队列,重复执行即可。
如果对数据库的操作太频繁,而且数据量会急剧增加的话,建议分库分表,按任务相关性划分,以免数据库压力太大,直接宕机。
用msmq消息队列,参考:https://www.cnblogs.com/zhaotianff/p/8203619.html
后台作业从消息队列里面获取并且执行执行成功则移除队列,你可以通过分布式群集来水平扩展,直到性能满足你所谓5000并发的需要