性能监控部分
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。并能展示在前端。手动调优是由人在前端中动态修改参数值,来观察系统性能变化。 自动调优则需要编写自动调优函数来自动动态改变参数值,同时记录下性能变化情况,在前端绘制图表。自动调优器将保存最佳配置。