Beanstalkd,一個高性能、輕量級的分布式內存隊列系統,最初設計的目的是想通過后台異步執行耗時的任務來降低高容量Web應用系統的頁面訪問延遲,支持過有9.5 million用戶的Facebook Causes應用。
wget https://github.com/downloads/kr/beanstalkd/beanstalkd-1.6.tar.gz
tar -xzvf beanstalkd-1.6.tar.gz
make && make install
安裝php擴展
git clone https://github.com/nil-zhang/php-beanstalk.git
git clone https://github.com/bergundy/libbeanstalkclient.git
先安裝libbeanstalkclient,然后繼續php擴展安裝
cd php-beanstalk
phpize
./configure
make && make install
python客戶端安裝
git clone https://github.com/earl/beanstalkc.git
cd beanstalk
python setup.py install
在運行時如果報:Failed to load PyYAML, will not parse YAML
則需要安裝python的依賴組件:pip install pyyaml 進行安裝
Beanstalkd設計里面的核心概念:
- job
一個需要異步處理的任務,是Beanstalkd中的基本單元,需要放在一個tube中。
- tube
一個有名的任務隊列,用來存儲統一類型的job,是producer和consumer操作的對象。
- producer
Job的生產者,通過put命令來將一個job放到一個tube中。
- consumer
Job的消費者,通過reserve/release/bury/delete命令來獲取job或改變job的狀態。