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

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

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

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

PHP
慕絲7291255 2022-07-22 19:12:19
我正在使用 Laravel/PHP 構建一個多租戶 Web 應用程序,該應用程序最終將作為 SaaS 托管在 AWS 上。我有大約 15-20 個不同的后臺作業需要為每個租戶安排。這些工作也需要每 5 分鐘解雇一次。因此,需要為 100 個租戶解雇的工作數量約為 2000 個。要實現這一目標,我面臨兩個挑戰是否有自動分配和管理計劃作業負載的云解決方案?如果有一個,我們如何動態創建這 15 個以上的預定工作?有可用的 API 嗎?尋求您的幫助
查看完整描述

2 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

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

我們無法以我想要的方式擴展后臺作業。它要求我從一個完全不同的角度來研究解決方案。

我的問題的理想解決方案是我應該生成與設定間隔內的租戶數量相對應的 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-07-22
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

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

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

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

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

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


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

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

或者


調度 Shell 命令


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


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


查看完整回答
反對 回復 2022-07-22
  • 2 回答
  • 0 關注
  • 153 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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