-
Notifications
You must be signed in to change notification settings - Fork 11
项目后台分工与开发计划
根据web前端提交的xml任务描述文件,解析生成相应的任务,并调度这些任务到xml中指定的机器的agentserver,然后由agentserver fork出新的进程进行执行。 web提交任务到master也是使用master提供的rpc接口进行任务提交。 master下发任务,是通过agent提供的rpc接口,进行任务下发。
测试节点web提交任务的事情需要自己写c客户或是其它语言客户端进行模拟web提交xml文件任务到master测试
1.使用thrift完成masterserver的初步搭建,能够运行简单接口的一个server,接收参数,返回客户端,同时开发客户端,客户端也是c++写,后期有可能使用后台直接提交任务。(已经完成)
开发周期: 2天
2.设计组织xml文件格式,由客户端提交到master,master能根据xml描述解析出要执行节点信息:机器ip,shell脚本,参数等,(已经完成)
最简单xml任务描述示例
开发周期:3天
1.设计简单队列,对单个任务的xml解析为一个任务队列,并且,进行调度下发到agent,agent如果没有开发好,先预留接口,打日志即可(已经完成)
2.设计agent任务完成后上报接口,master下发给agent的任务,agent执行完成之后收集返回值,并且再发送给master,master收到后能更新数据库,最终完成任务完成记录。(未完成,任务需要开发)
1.设计调度队列,对于多任务多子任务的调度,需要设计一个公平的队列,多每个任务都有被调度的机会(还需要优化)
2.master任务支持全量重新执行,断点执行(从某一个执行点继续往下执行)
3.master调度支持重复任务检测和排查,同一个任务只允许同一时刻只调起一次。
4.定时任务,周期任务支持开发,开发crontab的语法支持,并且支持按配置启动执行流程
5.使用libssh2实现master直接远程ssh登录指定机器执行任务 (王张军)
1.接收任务数量,运行任务,等待调度任务数量的统计展示(还需要优化)
2.agent监控,发现agent心跳上报超过5个周期,记录日志,写数据库信息
agent 也是一个server,常驻内存,对master提供rpc接口,接收master下发的任务,进行实际本机执行,agent接收到任务后,fork进程之后,使用execv系列函数进行执行shell程序,并且把执行结果返回到master。 agent测试也是要自己先开发测试客户端,对agent进行任务下发测试,看下发的任务是否能够正常执行。
agent中涉及到操作系统进程fork,子进程信号收集,返回码收集,子进程杀死等进程控制
1.使用thrift完成agentserver的初步开发,能够使用测试客户端发送信息,接收参数,返回客户端
开发周期: 2天(已经完成)
2.客户端提交简单shell脚本,agent能fork子进程,进行执行,执行返回值等信息能收回。
开发周期: 5天(已经完成)
1.接收master任务,进行执行,执行返回值等信息能收回。(已经完成)
2.将master下发的任务组织队列,记录执行时间,返回码等,并且把返回信息转变为执行成功失败返回给master:程序返回码0成功,其它失败(已经完成)
3.定时上报状态信息到master,上报本身内存,机器cpu,正在执行任务数量等信息到master,结构体自己设计(已经完成)
1.记录至任务执行错误,标准等输出到日志文件,进行记录,方便后面任务调测(这里要考虑一个问题,调测的方便性,日志是在agent机器,怎么能简单的在web端直接看到日志信息,开发者自己先考虑)(代晋玮, 还需要测试)
2.agent启动时不需要主动连接master,等master下发任务给agent时,记录master的ip,开始定时向master上报心跳,
3.可以支持同时向多个master发送心跳,接收多个master的任务,对发送心跳超时超过5次的master,agent要自动剔除。
4.agent支持对下发重复任务的排除,避免master重复下发同样的任务给agent执行。
5.agent使用cgroup对task资源进行限制,目前可以配置为每个task1个cpu,内存为512M。agent每收到一个任务,在fork进程前创建相应的cgroup,分配资源额度,并且分配子进程到这个cgroup,在任务结束后清理相应cgroup。 (赵南雨)
1.支持任务kill
2.agent可以根据master的资源配置,进行资源的额配置