阅读:5212回复:0
基于平台的流程调度管理方案
平台的流程运行只能在某一台服务器中独立运行,当一个项目中有多个流程需要同时运行的时候对服务器性能的要求就会比较高,本方案指在解决多流程同时运行且多服务器运行流程的不便管理的问题。
方案架构如图 图片:流程调度方案架构.png 架构中主要运用了三个指标:权重轮询、CPU占比、服务器线程。 在本方案中,有单独的一台机子用于做为调度控制器,通过三个指标进行流程的执行调度。下图为作业的操作 图片:作业操作流程.png 1、 首先采用Quartz框架在调度器上实现任务的定时 2、 在任务启动时查询数据库,按照轮询排序将数据查询出来 3、 按照轮询次序循环对服务器的CPU进行查询验证 A. 如果CPU使用率小于70%(这个值根据不同的服务器性能进行制定),CPU验证通过 B. 如果CPU使用率大于70%,CPU验证不通过,继续按照轮询次序验证下一台服务器 C. 如果全部服务器都大于70%,选择CPU使用率最小的服务器 4、 查询服务器线程使用数 A. 如果服务器线程使用数小于10个(这个值根据不同的服务器性能进行制定),线程验证通过 B. 如果服务器线程使用数大于10个,线程验证不通过,继续按照轮询次序验证下一台服务器 C. 如果全部服务器都大于10个,选择权重轮询第一个 5、 验证全部完毕,得到最优流程执行服务器,通过rest接口请求执行最优流程执行服务器,执行相应流程。 代码请参看附件,代码感谢赵海龙同志,代码实现为他原创,我只是个方案提供者 JobDispatch.java是调度器代码,里面包括CPU获取方法,线程获取方法,和流程执行请求等,代码运行在调度服务器。 ProcessJobWeb.java是流程执行rest接口,用于接收调度器发送的请求而执行流程。 QuartsJobImpl.java是quartz定时器任务管理器。 HttpRestUtil.java是http请求发送工具类。 server-mgt-0.0.1-SNAPSHOT.jar是Linux服务器CPU、内存、存储等数据获取工具代码,内部已经集成了Tomcat服务,可以直接在文件目录下通过命令:nohup java -jar server-mgt-0.0.1-SNAPSHOT.jar &启动,再通过http://ip:9991/service/getSysUseInfo请求获取。 论坛无法上传附件,请移步百度云吧。 链接: https://pan.baidu.com/s/1mzY4GNuAjUVD-8xkV2ZmOw 提取码: s4f9 复制这段内容后打开百度网盘手机App,操作更方便哦 |
|