TaskQueue

TaskQueue是SAE為開發者提供的分散式任務佇列服務,用來以異步HTTP方式執行用戶任務。

基本介紹

  • 中文名:TaskQueue
  • 類型:分散式任務佇列服務
  • 對象:開發者
  • 所屬:SAE
  • 執行方式:HTTP方式
  • 特點:高可靠性
簡介,套用場景,服務限制與配額,服務限制,PHP調用方式,創建queue,一些概念,

簡介

用戶需要先在線上管理平台創建Queue,然後向Queue Push任務,放入佇列的任務隨即即會執行。TaskQueue的任務的執行是以HTTP方式執行的,真正執行的是用戶在App中的PHP代碼,所以最長執行時間和HTTP頁面執行時間相同。TaskQueue服務是分散式環境部署的,具有高可靠性,每個worker相互隔離,並且主動負責任務執行。
Queue分為順序佇列和並發佇列,順序佇列的任務順序執行,而並發佇列中的任務則以並行的方式執行。用戶還可以為每個Queue指定error callback url,當每個任務執行失敗時,TaskQueue自動會調用error callback url通知開發者。
特別注意:
TaskQueue的任務的最長時間不得超過30秒
並發佇列不保證任務的有序性
所有佇列類型都有最大長度,請勿使佇列長期阻塞
所有APP創建TaskQueue總數<=10
TaskQueue的任務必須使用當前套用地址。

套用場景

TaskQueue服務主要提供針對http方式的異步任務執行,如開發者想給1000個用戶傳送微博,如果寫成:
for($i=0;$i<1000;$i++)
send_weibo();
很容易造成頁面逾時,因為傳送任務均為同步執行。而如果使用TaskQueue則不會逾時,如寫成:
$array=array();
for($i=0;$i<1000;$i++)
$array[]=array('url'=>"http://", "postdata"=>user[$i]);
$queue->addTask($array);

服務限制與配額

SAE設定服務限制和配額的目的是為了防止個別用戶攻擊和濫用,從而在公有雲計算平台上保證絕大多數開發者的正常使用.
1、 服務限制和配額設定是在入口網站新浪自身長期運維的基礎上經過嚴格計算得出的,所以正常使用一般不會出現問題。經過SAE 實際統計,99%的套用不會受到任何影響
2、當您發現您的某項服務超過限制或者超配時,請先閱讀相關文檔確認限制和配額的具體數值,再檢查自己的程式是否存在使用不當的情況,如果仍然解決不了,可以和SAE官方聯繫。

服務限制

單任務逾時限制300秒
單用戶創建的最大佇列數10
注意:由於TaskQueue服務是回調HTTP服務,所以會受到Runtime核心的限制。
分鐘配額
服務請求數cpu時間流入頻寬流出頻寬
TaskQueue20,000=>40,00060s=>100s10MB=>20M10MB=>20M

PHP調用方式

例子:
appname: saetest
appversion: 1

創建queue

使用TaskQueue服務執行,開發者需要登錄線上管理平台,並進入服務管理=>TaskQueue,先創建佇列。TaskQueue的佇列分成兩大類,順序佇列和並發佇列:

一些概念

順序佇列:並發度為1,以保證任務可以按照進入佇列的先後順序依次執行
並發佇列:並發度>1,進入佇列的任務將按並發度並行執行,不保證嚴格有序
並發度:負責處理該佇列的worker數量,worker越多處理的越快
worker:負責處理任務,並執行Web請求
最大長度:當佇列worker處理較慢,佇列發生阻塞時,允許佇列的最大長度,當佇列達到最大長度時,新的任務將不能進入佇列,直到有舊任務從佇列中消費出去為止
任務:TaskQueue只支持web任務,任務的執行可以用GET或者POST方式,用戶負責對格式做拼裝和解析
佇列屬性還有一個“失敗回調URL”,指的是:當該任務執行失敗時,回調的URL地址,如果用戶制定了該地址,SAE會將原請求的url上增加原請求地址後原封不動再傳送給回調URL,如果原請求為POST方式,則post段內容不變。
用戶可以根據自身的需要創建不同屬性的佇列,如果對順序性要求強烈,可以選擇順序佇列,如果對處理速度要求強烈,可以選擇並發大的並發佇列;如果任務執行較慢,可能發生擁堵,則最好選擇佇列最大長度較大的佇列。

熱門詞條

聯絡我們