[size=x-large] -- 前面的佇列文章 --[/size]
[url=佇列使用php-resque(1)[/url]
[url=佇列使用php-resque(2)[/url]
[url=佇列使用php-resque(3)- by supervisor[/url]
[size=x-large]-- 總體說明 --[/size]
下面是乙個網上的中文的說明
www.fzb.me/2015-7-31-beanstalkd-faq.html
這裡分為我們常見的服務端和客戶端。
服務端是使用人很多的beanstalkd,其實叫做訊息佇列比較合適。
它和我們前面介紹的php-resque差別:
1、php-resque不區分明顯的客戶端和服務端,beanstalkd區分,較符合我們常用的思維方式。
2、php-resque只需安裝redis並執行,而beanstalkd是自己寫的服務端與其他軟體無關,也不需要。
3、php-resque不能持久化,而beanstalkd可以,但實際不用為好,因為太慢。
4、php-resque和beanstalkd都很輕量級,都很容易使用。
5、最重要的php-resque不能使用延時佇列(或者說需要其他元件補充),而beanstalkd可以。
6、php-resque許久不更新了,而beanstalkd在composer上次更新是2023年,好不少。
7、php-resque沒有優先順序,而beanstalkd有優先順序,但我也不用。
8、為了防止某個consumer長時間占用任務但不能處理的情況,beanstalkd為reserve操作設定了timeout時間,如果該consumer不能在指定時間內完成job,job將被遷移回ready狀態,供其他consumer執行。
介紹一下延時佇列,我可以放乙個訊息,但希望該訊息在某個特定時點才真正進入佇列,從而被取出。
而普通的佇列,你放入訊息到佇列裡,就無法控制它,只要它前面沒有別的訊息,它就立刻會被取出。
******************************
服務端說明:
1、乙個訊息有ready, reserved, delayed, buried四種狀態
2、當producer直接put乙個訊息時,訊息就處於ready狀態
3、如果選擇延遲put,訊息就先到delayed狀態,等待時間過後才遷移到ready狀態。任務狀態會從 ready 變為 reserved(預定),其他人就無法獲取。 put 產生訊息的時候,攜帶了 ttr(time to run),如果這個時間內,消費者沒有傳送 delete, release 或者 buried 命令。 任務會自動回到 ready 狀態,其他人可以繼續獲取。(注意:消費者返回 release 命令或者不返回,就回到 ready/delayed 狀態,可以重新被消費!!這可能是我們不希望的)
4、如果獲取了當前ready的訊息後,該訊息的狀態就遷移到reserved,這樣其他的任何程序就不能再操作該訊息。確保唯一使用。
5、buried這個,為防止乙個訊息被呼叫多次,可以使用此介面。
6、程式有乙個delete操作,乙個訊息被delete之後,就完全消失,不屬於上面的4種情況中任何一種,並且,一般來說,就應該在獲取訊息之後對其delete,絕對不可以省略。
beanstalkd的job狀態多樣化,支援任務優先順序 (priority), 延時 (delay), 超時重發 (time-to-run) 和預留 (buried), 能夠很好的支援分布式的後台任務和定時任務處理。
它的內部實現採用 libevent, 伺服器-客戶端之間用類似 memcached 的輕量級通訊協議,因此有很高的效能。
關於服務端使用的記憶體,只取決於佇列大小,不限制。
缺點:無最大記憶體控制, 如果有訊息堆積或者業務使用方式有誤,而導致記憶體暴漲拖垮機器
[size=x-large]-- 服務端安裝 --[/size]
完整安裝步驟,必須是類unix系統。
yum install beanstalkd
service beanstalkd start
上面的寫法,會讀取下列配置檔案。
配置檔案 /etc/sysconfig/beanstalkd
還有一種啟動方法是直接啟動,自己設定引數
當開啟-b啟動持久化後,其會將binlog每隔n秒(n可配置為0)刷入到硬碟,類似redis的aof持久化方式,一般不需要的。
[size=x-large]-- 服務端監控 --[/size]
有很多使用極其簡單,無需安裝。
只要把檔案解壓即可,執行命令
./beanstalkd-cli stats
或者./beanstalkd-cli monitor
但是不太直觀。
[size=x-large]-- 服務端監控的乙個php的web監控控制台,超棒 --[/size]
使用方法,首先,電腦必須按照composer
然後,composer create-project ptrofimov/beanstalk_console -s dev 目標目錄
這個目標目錄通常位於web根目錄下。一句命令就把控制台安裝成功。
然後,開啟瀏覽器
http://網域名稱/目標目錄/public/index.php
神奇的控制台就出現了。
php好棒!
[size=x-large]-- 客戶端安裝 --[/size]
composer安裝
"pda/pheanstalk":"3.1.0"
[size=x-large]-- 客戶端** --[/size]
為簡單,寫乙個檔案裡了,真實專案肯定分開
[size=x-large]-- 瀏覽器輸出 --[/size]
[img]
專案管理的4P
計畫 plan 這是指所有涉及規劃和 的活動。在這個階段,專案或專案的要素尚未實現 過程 processes 專案管理知識體 pmbok,project management body of knowledge 指南中記述,專案主要由一系列預定和結構良好的過程所組成 人員 people 人員是專案動...
基於4P理論做運營
運營可以分為產品運營 內容運營 活動運營 使用者運營 新 運營 社群運營 渠道運營 運營 品類運營和商家運營。那什麼是運營呢,運營就是解決一切使用者存在的問題。網際網路運營和市場營銷本質上都是從目標顧客出發,滿足市場需求,創造企業利益。那既然這樣,運營是屬於市場營銷的一部分。市場營銷的4p理論 產品...
CIO如何運用4P學說服CEO
注 本文 it168 cio是公司it組織序列的中堅力量,兼有領導者與下屬的雙重身份,在帶領下屬完成本部門工作同時也要接受ceo的領導。上擠下壓 兩面受重,責任重大,就是cio處境最好寫照。因此cio位在組織序列的 夾心餅乾 中,在 上擠下壓 的環境中如何游刃有餘地開展工作,營造良好的工作環境,處理...