出家如初,成佛有余

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

Posted in Uncategorized by chuanliang on 2013/11/10

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

一些体会:

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

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

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

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

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: