最新消息:

一个任务调度分发服务的架构

技术 admin 3862浏览 0评论

    项目需要实现在多台服务器间做任务、账号资源、服务器资源的分布式调度、分发,需求场景不细说,你懂的。先考察了Celery、resque、Pyres几个典型的异步任务调度的开源项目,对比项目需求后,感觉要直接利用这几个项目做实现,比较费劲,基于django、redis、rabbitmq、APScheduler实现了自己的分布式任务分发调度器,效果不错,架构供参考。

    一些体会:

    1、习惯了关系型数据库导向的设计思维方式,一下切换到Redis上,在数据结构的设计上需要在思维模式上做一些适应、调整。习惯后,会深深体会到其优势。Redis提供的几种数据结构貌似简单,但能够满足诸多复杂的场景,而且对数据结构的定义、调整极其方便。

   2、有诸多基于Redis的消息队列的项目可供选择,之所以没采用Redis作为分布式的消息队列,而采用了RabbitMQ ,主要是考虑到消息的可靠传输、消息确认、消息路由问题。

   3、任务队列的概念,在诸多业务架构设计中都应该引入,对有架构扩展、性能都极为重要。对一般的任务调度服务,没必要自己再发明一遍轮子,建议先考察一下Celery或resque后,再考虑是否需要自己实现。

   4、之所以有任务拆分的逻辑,主要考虑:分拆成相互独立的子任务,以便于尽快执行任务,同时避免任务过长失败的几率

任务调度架构

 

转载请注明:出家如初,成佛有余 » 一个任务调度分发服务的架构

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址