Skip to content

项目后台分工与开发计划

helight edited this page Dec 1, 2015 · 13 revisions

负责master开发:任镇 张义飞

masterserver描述:

根据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开发: 寇文龙 赵南雨 王张军

agentserver描述:

agent 也是一个server,常驻内存,对master提供rpc接口,接收master下发的任务,进行实际本机执行,agent接收到任务后,fork进程之后,使用execv系列函数进行执行shell程序,并且把执行结果返回到master。 agent测试也是要自己先开发测试客户端,对agent进行任务下发测试,看下发的任务是否能够正常执行。

agent中涉及到操作系统进程fork,子进程信号收集,返回码收集,子进程杀死等进程控制

开发计划:

第一期任务(基本使用):(已经完成)

1.使用thrift完成agentserver的初步开发,能够使用测试客户端发送信息,接收参数,返回客户端 开发周期: 2天(已经完成)

2.客户端提交简单shell脚本,agent能fork子进程,进行执行,执行返回值等信息能收回。 开发周期: 5天(已经完成)

第二期任务(重点与master交互):(已经完成)

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的资源配置,进行资源的额配置