性能监控部分

JobServer是分布式任务集群。 需要队分布式系统中的各个环节进行时间上报。有一定的开发工作量,应尽量做到不影响分布式任务的性能。整个时间线树如下:

struct TimeNode {
    std::string name;  //job name
    int task_id;       //job id
    int64_t begin;     //begin time
    int64_t end;      //end time
    std::string extra_info_json;
    
};

struct TimeNodeTree {
    TimeNode line;   // time line
    int sub_task_type; //pipeline, parallel
    std::vector<TimeNodeTree *> sub_tasks;  //all sub time line   
};

TimeLine数据上报到统一的日志网关接收,并存储到DB中,如果日志量比较大,考虑先缓存到消息队列中。WebServer负责处理数据并给前端返回TimeLineTree数据。前端具此绘制TimeLinel图。

性能自动调优部分

所有参数存储到ETCD中,主要是利用ETCD自动推送数据的功能。各个JobServer以ETCD中的参数为准。 同时一些实时性能参数也由JobServer写回ETCD。并能展示在前端。手动调优是由人在前端中动态修改参数值,来观察系统性能变化。 自动调优则需要编写自动调优函数来自动动态改变参数值,同时记录下性能变化情况,在前端绘制图表。自动调优器将保存最佳配置。

Logo

更多推荐