亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在多租戶應用程序中創建計劃作業

在多租戶應用程序中創建計劃作業

PHP
ITMISS 2022-08-05 15:57:07
我正在使用Laravel / PHP構建一個多租戶Web應用程序,該應用程序最終將作為SaaS托管在AWS上。我有大約 15-20 個不同的后臺作業需要為每個租戶進行計劃。這些工作也需要每5分鐘解雇一次。因此,需要為100個租戶解雇的工作崗位數量約為2000個。在實現這一目標方面,我還有2個挑戰是否有自動分配和管理計劃作業負載的云解決方案?如果有一個在那里,我們如何在飛行中創建這15個以上的計劃工作?是否有可用的 API?尋求您的幫助
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

最后,我找到了解決問題的方法。

我們無法以我想要的方式縮放后臺作業。這需要我從一個完全不同的角度來研究解決方案。

我的問題的理想解決方案是,我應該生成與設置間隔內的租戶數量相對應的 SQS 消息(具有描述租戶 ID 的有效負載、需要執行的作業和任何其他參數)并將其排隊。

例如,如果我有 100 個租戶,并且我想每次運行“作業 1”,則主應用程序將生成 100 條 SQS 消息,并每小時將其排隊到特定的 SQS 隊列中。它將對我每個租戶的所有15個不同的工作執行相同的操作。

另一方面,偵聽 SQS 隊列的可擴展 AWS Lambda 函數將拾取有效負載,并根據有效負載攜帶的數據執行預期任務。

但不幸的是,我的專長在于PHP / Laravel技術,這仍然不在AWS Lambda堆棧中。因此,我想出了一個解決方法,如下所示。

我使用我的 PHP/Laravel 應用程序構建了一個 Docker 映像,并將其放置在 Amazon ECS(EC2 容器服務)中。盡管如此,我還是有AWS Lambda函數,但這次它充當了我的Docker容器的觸發器。Lambda 選擇一條 SQS 消息,處理有效負載,并根據我的 Docker 映像在 ECS 上生成一個 Docker 容器。我從下面的文章中得到了一些想法來達到這個解決方案。

https://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/


查看完整回答
反對 回復 2022-08-05
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

Laravel可以選擇安排任務/作業:


參考: https://laravel.com/docs/6.x/scheduling


因此,您可以將客戶的工作保留在數據庫中,而不是像下面這樣做:


計劃排隊的作業作業方法可用于計劃排隊作業。此方法提供了一種方便的方法來計劃作業,而無需使用調用方法來手動創建閉包來對作業進行排隊:


$schedule->job(new ClientJob)->everyFiveMinutes();


// Dispatch the job to the "clientjob" queue...

$schedule->job(new ClientJob, 'clientjob')->everyFiveMinutes();


調度命令行管理程序命令


exec 方法可用于向操作系統發出命令:


$schedule->exec('node /home/forge/script.js')->everyFiveMinutes();


查看完整回答
反對 回復 2022-08-05
  • 2 回答
  • 0 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號