天天看點

CELERY基本限定

Celery的定義

Celery(芹菜)是一個簡單、靈活且可靠的,處理大量消息的分布式系統,并且提供維護這樣一個系統的必需工具。

我比較喜歡的一點是:Celery支援使用任務隊列的方式在分布的機器、程序、線程上執行任務排程。然後我接着去了解什麼是任務隊列。

消息隊列

消息隊列的輸入是工作的一個單元,稱為任務,獨立的職程(Worker)程序持續監視隊列中是否有需要處理的新任務。

Celery 用消息通信,通常使用中間人(Broker)在用戶端和職程間斡旋。這個過程從用戶端向隊列添加消息開始,之後中間人把消息派送給職程,職程對消息進行處理。如下圖所示:

CELERY基本限定

Celery 系統可包含多個職程和中間人,以此獲得高可用性和橫向擴充能力。

Celery的架構

Celery的架構由三部分組成,消息中間件(message broker),任務執行單元(worker)和任務執行結果存儲(task result store)組成。

消息中間件

Celery本身不提供消息服務,但是可以友善的和第三方提供的消息中間件內建,包括,RabbitMQ,Redis,MongoDB等,這裡我先去了解RabbitMQ,Redis。

任務執行單元

Worker是Celery提供的任務執行的單元,worker并發的運作在分布式的系統節點中

任務結果存儲

Task result store用來存儲Worker執行的任務的結果,Celery支援以不同方式存儲任務的結果,包括Redis,MongoDB,Django ORM,AMQP等,這裡我先不去看它是如何存儲的,就先選用Redis來存儲任務執行結果。

繼續閱讀