09
11月

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

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

    一些体会:

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

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

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

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

任务调度架构

 

没有评论

第一个在本文留言。

发表评论

名字(必须)
邮箱(不会被公布)(必须)
网址

字体为 粗体 是必填项目,邮箱地址 永远不会 公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
URLs must be fully qualified (eg: http://www.yeeach.com),and all tags must be properly closed.

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。

    RSS订阅

    近期文章

    近期评论

    文章归档

    分类目录