【问题标题】:How to manage priority of queued jobs using laravel horizon?如何使用 laravel Horizo​​n 管理排队作业的优先级?
【发布时间】:2020-05-05 15:52:57
【问题描述】:

这是一个理论问题,请不要报告为垃圾邮件。

我正在开发 P2P 加密货币交换的网络应用程序。有一种功能可以将一种加密货币换成另一种加密货币。比方说,我有 BTC,我需要将其转换为等值的 ETH。

一旦用户访问交换页面,我的代码就会从 7 个第三方交易所获取汇率,如下图所示。

我在后台所做的是,我在排队的作业中使用 guzzle 访问这 7 个交换,并且一旦我从任何交换获得数据,它就会被广播到事件侦听器和频道。

当我和我的 5-6 人团队测试此功能时,它可以完美运行。我可以看到作业在 laravel Horizo​​n 仪表板中处理得非常快。

接下来,我将我的应用程序托管在具有域名的实时服务器上,我尝试了 blazemeter,一种性能测试工具。我将在哪里提供此页面的 API url(我正在使用 vuejs)并分配 50 个用户来向此 api 发出请求。在这里,我了解到大约 40k 作业在 Horizo​​n 仪表板中排队,其性能急剧下降,完成这些作业的时间显示为 4 小时。这对于普通用户来说是不可能等待得到响应的。

所以我的问题是在生产中缓解此问题的最佳方法是什么。如何确定排队作业的优先级。

我正在使用 redis 和队列驱动程序。

【问题讨论】:

  • 显示地平线配置?

标签: php laravel priority-queue laravel-queue


【解决方案1】:

只是不要每次都为每个用户制作工作。 做一个 cron 作业来定期获取所有货币的数据并将它们存储在某个地方。如果工作太多,您可以在不同的工作人员中为每个服务划分工作。 然后,当用户点击“购买”按钮时,您可以再次检查价格是否发生变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 2020-09-27
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多