泸州高端网站建设公司,做网站即墨,企业信用信息公信系统官网,销售管理系统设计项目场景#xff1a;
定时任务现状#xff1a;每个项目都会有一些配置信息#xff0c;这些信息我们是都放在一个配置服务中#xff0c;这个服务会定时从配置表中加载所有配置存入本地JVM内存#xff0c;以供调用方获取#xff08;调用方集成了配置服务的SDK#xff0c;… 项目场景
定时任务现状每个项目都会有一些配置信息这些信息我们是都放在一个配置服务中这个服务会定时从配置表中加载所有配置存入本地JVM内存以供调用方获取调用方集成了配置服务的SDK每隔五分钟都会来拉取自身应用的配置
配置服务每隔五分钟都会去全量拉取配置表然后替换本地内存中的旧配置而定时任务使用的是基于Scheduled注解基于此改造后支持集群环境下单节点执行然后搭配 cron 表达式
例如Scheduled(cron 0 0/5 * * * ? ) 此配置含义为分钟为5以及5的倍数 秒钟为0时执行 问题描述
生产中随着配置服务的实例增多流量监控多出了许多毛刺 注:(此图为已将调用方的cron给错开后所呈现如是最初版本将每5分钟会人为”造就一大波请求) 解决方案 改造一: 因生产上每5分钟配置中心的应用就会迎来一大波请求导致压力剧增并且非5分钟的时间段配置中心是没有什么请求 据此情况进行了第一轮改造: 将各个调用配置中心的应用 配置不同的cron表达式例如: A、B服务调用配置中心获取机构白名单配置的定时任务就修改为以下表达式A:25*/4***? B:207/4x**? 这样配置固然是将各个应用获取配置的时间给错开但是并没有从根本上解决问题 改造二 对于此类需要去配置中心加载参数的定时任务采用fixedInterval方式即以上次执行终点起点来计算下次执行起点时间这样生产个应用的实例的执行时间就从根本上错开了且可以人为控制实例的部署时间间隔 附上Scheduled各参数描述Scheduled注解各参数详解 - 简书 (jianshu.com)