Celery分布式任务系统的思考

最近在看Celery的任务执行框架,一直没有理解所谓的一个broker来对应多个worker是怎么实现分布式的,这里提出自己的思考:是否是多个worker配置的broker是同一个,对应的task是同样的,这样来实现从一个broker到多个worker的分布式框架。如果是这样,那么将其理解为分布式的框架就很容易了。

学习笔记:

Brokers:  任务队列,即生产者-消费者模型;

backend:结果的存储;

Workers:任务的执行者,消费者;

Tasks:要Wroker来执行的任务.

执行worker:celery -A  脚本名  worker --loglevel=info

执行定时任务: celery -A 脚本名 beat

celery的worker运行在不同的机器上,每台机器上有多个task进程;

worker运行的时候连接到broker,在控制机器上脚本直接向broker发送任务即可;

so,要建立一个broker,在不同机器上运行celery worker。

celery的任务发布节点也就是broker所在的节点,worker节点只是用来执行任务的。

推荐阅读更多精彩内容