Celery 源码分析(二): 基础架构

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

Celery是一个分布式的任务队列框架,有五个主要组件:worker、broker、beat、producer和result backend。worker负责监听消息队列,从broker中拉取任务并分配给子进程执行;broker是消息中间件,接收任务消息并按顺序分发给指定的任务消费者;beat是任务调度器,周期性地将任务放入任务队列;producer是任务生产者,通过函数、装饰器或调用Celery API来产生任务;result backend用于存储任务执行结果。Worker之间通过Gossip协议进行交互,决定任务由哪个Worker执行。Celery使用Kombu操作消息队列。

🎯

关键要点

  • Celery是一个分布式的任务队列框架,主要组件包括worker、broker、beat、producer和result backend。
  • worker是Celery的核心组件,负责监听消息队列并执行任务。
  • broker是消息中间件,接收任务消息并按顺序分发给任务消费者,常用的有RabbitMQ和Redis。
  • beat是任务调度器,周期性地将任务放入任务队列。
  • producer是任务生产者,通过函数、装饰器或调用Celery API来产生任务。
  • result backend用于存储任务执行结果,支持多种存储媒介。
  • 任务的生命周期包括任务生产、任务分发、任务执行和结果存储。
  • Exchange在RabbitMQ中起到路由器的作用,将消息发送到指定的队列。
  • Celery通过Kombu操作消息队列,Kombu是一个兼容AMQP协议的消息队列抽象库。
  • Worker之间通过Gossip协议进行交互,决定任务由哪个Worker执行。
  • Gossip协议存在音讯推迟、音讯冗余和拜占庭问题等缺陷。
  • Worker的组成部分包括Hub、Pool、Beat、Timer、StateDB、Consumer和WorkerComponent。
🏷️

标签

➡️

继续阅读