【问题标题】:How to manage different queue for each tenant in Multi-tenant SaaS application?如何在多租户 SaaS 应用程序中为每个租户管理不同的队列?
【发布时间】:2019-12-24 08:50:10
【问题描述】:

我们正在为奖励计划运行一个多租户 SaaS 应用程序

目前,我们在数据库中分别管理每个租户的队列

每个租户可以有一个通知、奖励、bulk_operations 队列。

目前,我们正在管理该租户的单个队列中的每个队列

我们知道这不是最佳方法和最佳实践。

我们正在计划扩展我们的应用程序,我们需要设置队列和队列工作器 以最好的方式。

任何建议都会很好。 我们愿意为队列使用任何服务,如 SQS、Redis 等。 我们需要为每个租户建立一个单独的队列。

[技术细节]

服务器:- AWS ec2

语言:- PHP

框架:- Laravel 5.6

数据库:- RDS Mysql

[吞吐量/可扩展性方面的要求]

  1. 我们有一些租户在一周或一天内有 10 万个工作岗位,未来可能会增加,因为他们是电子商务商店。
  2. 我们每天至少有 5-6 个新租户。所以我们也需要管理他们的队列。
  3. 每个租户的队列应该是分开的,这样一个租户就不需要依赖其他租户的进程来先完成。 (每个租户的流程应该单独管理)。

[有关当前结构的更多详细信息]

请访问此问题以更详细地了解当前结构 -> Click Here

【问题讨论】:

  • 您在吞吐量、可扩展性等方面有什么要求?
  • 在那个问题中,我们只询问 Laravel 数据库队列管理。 @dparoli
  • @Namoshek 我已按照您的要求更新了问题的详细信息。请检查它。
  • @dparoli 添加(y)。

标签: laravel amazon-web-services queue multi-tenant saas


【解决方案1】:

Redis 适合初学者。易于配置和安装。 你也应该试试 laravel Horizo​​n。您可以在 config/horizo​​n.php 中轻松配置水平队列,您可以从那里创建单独的通知、奖励、bulk_operations 连接,您只需在调度中指定它即可。

ProcessPodcast::dispatch($podcast)->onQueue('processing');

你可以在这里查看 laravel Horizo​​n 的官方文档https://laravel.com/docs/5.6/horizon

这里的队列和连接 https://laravel.com/docs/5.6/queues#customizing-the-queue-and-connection

【讨论】:

  • 1.我们可以为新租户创建一个新队列吗? 2.我们可以为每个队列单独运行worker吗? 3.我们需要在哪里管理队列的worker?我们可以在 AWS lambda 中管理它还是需要为此设置不同的实例?
  • 1.是的,你可以动态地使用 laravel 地平线。请看这个。 laracasts.com/discuss/channels/general-discussion/…
  • 2.如果你按照我分享的链接。它将单独运行工作程序,而不依赖于其他队列 3. 如果您安装它,您可以在地平线上管理您的队列。仔细遵循安装并确保小心您的仪表板身份验证,以便它不会在您的客户端上打开。或公开。老实说,我不确定 lambda。我现在还没有使用它:)
  • 安装 laravel Horizo​​n 的时候也请仔细阅读dashboard鉴权..laravel.com/docs/5.6/horizon#installation
  • 太好了,让我和我的团队一起回顾一下。
猜你喜欢
  • 2018-06-17
  • 1970-01-01
  • 2014-07-27
  • 2012-07-24
  • 1970-01-01
  • 2012-05-17
  • 2012-04-10
  • 2017-03-06
  • 2013-04-23
相关资源
最近更新 更多