zoukankan      html  css  js  c++  java
  • 任务监控程序设计与实现总结

    1.简介
     
    1.1 上游系统
         1.上游系统不定时发送计划xml文件,该xml包含一组<类型:任务>;上游系统收到文件后,需要返回一个回执。
         2.不定时发送状态上报命令,询问计划执行情况。
     
    1.2 监控程序
         监控系统类似消息队列中的broker,维护任务队列,接收上游系统下发的计划,并将任务调度给下游系统执行。
         1.监控程序维护一组任务队列,根据下游系统发送的任务状态信息,更新对应任务状态。若下游系统空闲,为其分配新的任务。
         2.下游系统离线后,监控程序需要将该系统未完成的任务重新分配。
         3.监控程序重启后,可读取已保存的任务信息重建<类型:任务队列>,通过下游系统上报的状态信息重建<下游系统:当前任务>关联。
         4.当任务状态发生变动时,需要向上游系统汇报状态信息。
     
    1.3 下游系统
         1.每个下游系统处理特定类型的任务,同一类型的多个任务可分配到多个下游系统执行。
         2.下游系统定时发送当前任务状态(心跳协议)。
         
         下游系统的状态转换如下图所示:

    2.类图设计
     
    1.GlobalTaskBuffer采用单例模式,保存了系统中所有的任务信息,根据任务类型的不同,构建了不同的任务队列。
     
    2.GlobalDownSysBuffer采用单例模式,保存了所有下游系统的信息,每个DownSys对应一个当前任务CurTask,CurTask由监控程序调度分配,初始状态为NULL。
    2.1 GetDownSys方法会根据IP和Port搜索对应的DownSys对象,若未找到,创建一个新的DownSys对象并加入到GlobalDownSysBuffer中;
    2.2 Heartbeat方法会累加DownSys对象的HeartBeatCount,若HeartBeatCount的值超过设定的阈值,则系统认为该DownSys已离线,执行ClearDieDownSys方法做清理工作(若该DownSys对应的任务正在执行,则认为该任务已执行错误,重新分配)。HeartBeat方法由Control的HeartBeatTimerProc定时调用。
     
    3.BaseHandler处理与上下游系统之间的交互
    3.1 UpSysHandler接收并解析上游系统发送的计划xml,发送文件回执;接收任务上报命令,构建和发送任务执行状态回执。
    3.2 DownSysHandler将任务分配给下游系统,接收和解析下游系统发送的任务状态信息,更新任务状态,维护<DownSys,Task>映射等。
     
    4.Control类借助其他类,处理与上下游之间的交互。
     
    3.处理流程(时序图)
     
    1 处理与上游系统的交互
     
     
    2 处理与下游系统的交互
     
  • 相关阅读:
    最牛B的编码套路
    CRM运维工程师主要职责
    SQL ROUND函数用法
    VMware不能完全卸载问题
    如何建立真正支持业务的高效运维体系?
    【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
    L1正则化与L2正则化详解及解决过拟合的方法
    TensorFlow学习笔记之--[tf.clip_by_global_norm,tf.clip_by_value,tf.clip_by_norm等的区别]
    TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]
    Windows10+Tensorflow1.12-gpu+CUDA+cudnn+Anaconda3.5+Pycharm3.5 离线GPU开发环境搭建
  • 原文地址:https://www.cnblogs.com/hikeepgoing/p/5171095.html
Copyright © 2011-2022 走看看