Skip to content

后台摘要服务架构变迁 #5

Description

@lotusdeng

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通知外部系统关于任务的变化

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions