Gearman分布式任务处理系统(二)Gearman工作流程细解

PS:Gearman内部 Client,Job Server,Worker之间TCP协议的工作流程细解。

Gearman工作流程细解

Gearman的三个角色:Client -> Job Server -> Worker。

前台job-同步阻塞工作流程图

  1. worker向Gearman Server注册可以执行的功能function
  2. worker尝试获取一个job
  3. server通告worker暂无job
  4. worker通告server:”我先睡会,有活干时再叫醒我”
  5. client向server提交了一个job,建立tcp连接
  6. server将job放入队列后向client返回了”Created”(已接收成功)状态
  7. server唤醒可以完成这项工作的worker(可能会唤醒多个woker)
  8. worker向server发起请求,尝试获得一个任务
  9. server选定一个worker,将该job分配给选定的worker
  10. 在”Doing job”过程中,client向server发起job status查询
  11. 在”Doing job”过程中,server向client返回运行状态
  12. worker辛苦工作一段时间后,向server通告“干完了”
  13. server接受worker的结果并转发给client
  14. client接受结果并关闭连接

由上图可知,client端在job执行的整个过程中,与job server端的链接都是保持着的,这也给job完成后job server返回执行结果给client提供了通路。同时,在job执行过程当中,client端还可以发起job status的查询。当然,这需要worker端的支持的。

后台job-异步非阻塞工作流程图


由上图可知,client提交完job,job server成功接收后返回JOB_CREATED响应之后,client就断开与job server之间的连接了。后续无论发生什么事情,client都是不关心的。同样,job的执行结果client端也没办法通过Gearman消息框架获得。

解释说明

1. 任务分类:
按优先级分:普通(SUBMIT_JOB),高优先级(SUBMIT_JOB_HIGH),低优先级(SUBMIT_JOB_LOW)
按执行方式分:前台-同步阻塞(_JOB_HIGH,_JOB_LOW),后台-异步非阻塞(_JOB_HIGH_BG,_JOB_LOW_BG)
前后台任务最大区别在于,”前台任务”发送job到job server后会一直等待work给它处理并返回结果,在此过程中,前台任务一直阻塞当前脚本往下执行,直到获取返回值!而”后台任务”仅仅是发送job到job server这个过程就结束了,所以client可以跟踪前台任务的工作状态,而不能跟踪BG(后台)任务
2. 任务工作状态的时时通信(worker–>server–>client):
WORK_DATA
WORK_STATUS 对于长任务,worker应该每隔一段时间通告任务状态
WORK_COMPLETE
WORK_FAIL
WORK_EXCEPTION
WORK_WARNING
worker在执行job的过程中可以时时传送部分data或者处理status返回给client的,说明worker和client在处理的时候是可以时时通信的
3. Server监控
Gearman有“Administrative Protocol”专门用于对Gearman Server的监控,主要涉及以下几方面:
status:所注册职能分类,worker总数目,处于工作状态的worker数目,可用worker数目等
worker的详细信息:所注册功能、IP
server的缓存任务最大队列长度:可以被查询也可以被设定

相关文章
  1. gearman应用-分布式图库系统设计
  2. Gearman分布式任务处理系统(六)持久化存储
  3. Gearman分布式任务处理系统(五)通信协议
  4. Gearman-PHP扩展源码编译
  5. Gearman分布式任务处理系统(四)Gearmand源码编译
  6. Gearman分布式任务处理系统(三)分布式负载均衡架构
本站版权
1、本站所有主题由该文章作者发表,该文章作者与尘埃享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和尘埃的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:
二维码
Posted in Gearman, linux技术
Comments are closed.