谷歌釋出任務佇列服務Cloud Tasks
谷歌釋出了ofollow,noindex" target="_blank">Cloud Tasks ,這是一項針對谷歌雲平臺App Engine服務的任務佇列服務。Cloud Tasks允許從應用程式中非同步執行任務,解耦服務並支援長期執行和在後臺執行的活動。
藉助Cloud Tasks,應用程式可以將任務、由應用程式開發人員定義的工作單元放在分散式佇列中,然後將這些佇列推送給處理服務。任務佇列的概念已經經過所有大型雲提供商(如帶有SQS的AWS和帶有服務匯流排 的Azure)的實際驗證。實際上,Cloud Tasks是谷歌Task Queue 服務的進階版,它也提供了相同的概念。現在,所有現有的和新的任務佇列的管理將整合到Cloud Tasks之下,正如谷歌雲平臺產品經理Morgan Hallmon在公告中所述的那樣。
多年來,App Engine客戶利用了Task Queue,這是一種支援非同步任務執行的App Engine服務。隨著Cloud Tasks的釋出,任務佇列的所有管理工作現在都集中到Cloud Tasks控制檯、命令列和API中。
使用任務佇列有幾個好處,例如讓系統變得鬆散耦合,將工作負載分攤給後臺服務,以及通過為系統之間的任務提供儲存來提高可靠性。
來源:https://en.wikipedia.org/wiki/Scheduling_(computing)#task_queue
最初,Cloud Tasks似乎與谷歌的其他佇列服務(如Pub/Sub)有很多重疊的地方。雖然相似之處是顯而易見的,但兩者之間的用例確實不同。Google將Pub/Sub定位為專注於大資料和網路運營的服務,提供高吞吐量,同時保持對內容和目標應用程式的不可知性。而Cloud Tasks提供的是託管執行服務,可以處理很多顯式的命令,這些命令通過後臺程序來處理。
此外,與Task Queues不同的是,Cloud Tasks將整合到整個GCP服務範圍內。Cloud Tasks的文件描述了一些典型的用例 ,包括加速使用者體驗、在發生事件期間提供永續性以及平緩流量峰值。
通過將可能較慢的後臺操作(如資料庫更新)委派給程序服務來加快響應速度;
在發生意外事件的情況下保留請求;
將非面向使用者的任務從使用者請求流程中移除,以此來實現平緩流量高峰。
由於Cloud Tasks是一種託管服務,它負責資源的配置和管理,讓開發人員可以專注於建立和處理其他任務。此外,Cloud Tasks根據實際執行時間計費 。客戶端庫由谷歌提供,支援Java、Python、Node.js、PHP和Go等幾種流行語言,同時還提供了REST API,可以從任何應用程式中將任務新增到佇列。
要使用Cloud Tasks,需要執行幾個步驟。從建立任務佇列 開始,在建立好佇列後,釋出任務的應用程式就會將任務推送到佇列中,佇列儲存訊息並返回OK。隨後,Cloud Tasks服務將任務傳送給後臺的處理應用程式進行處理。任務處理完成後,後臺程式將OK作為200到299之間的HTTP狀態碼傳送回佇列,佇列將對應的任務移除。此外,如果處理程式未及時處理完任務,Cloud Tasks將自動再次傳送任務,提供重試和至少一次交付的能力。