# 1.0 * C++开发的摘要服务,轮训数据库中摘要任务表, 只能部署一个实例 * 缺点:只能部署单摘要任务处理节点、无法并发多路处理 # 2.0 * 使用python开发的AbsServer和AbsAgent以及C++开始TaskAbs * AbsServer连接数据库,多个AbsAgent通过三个xml rpc接口(ConsumeTask\UpdateTaskProgress\UpdateTaskState)连接到AbsServer. * AbsAgent定时调用AbsServer的ConsumeTask,获取到任务就运行TaskAbs子进程,读取TaskAbs的stdout得到进度, 调用AbsServer的UpdateTaskProgress更新数据库中的任务进度,任务执行完后调用AbsServer的UpdateTaskState更新数据库中的任务状态。 * AbsServer是无状态服务,相当于数据库的代理、实现了对数据库中任务的操作,AbsAgent不具体执行摘要任务,而是通过子进程。整个AbsServer和AbsAgent几百行代码 * 缺点:没有任务处理失败自动重做机制、任务超时机制 # 3.0 * AbsGateServer接受任务,存储任务到oracle数据库和beanstalk(abs_queue)里 * AbsNotifyServer通知外部系统关于任务的进度以及状态变化 * AbsWorker连接beanstalk(abs_queue)获取任务,发布任务进度、状态到beanstalk(abs_progress_queue) * AbsProgressWorker连接到beanstalk(abs_progress_queue)获取任务进度,更新数据库里任务的进度和状态,同时调用AbsNotifyServer通知外部系统关于任务的变化
1.0
2.0
3.0