Logstash与Node.js应用程序的任务队列

时间:2018-09-11 07:33:05

标签: node.js elasticsearch priority-queue task-queue kue

我有一个nodejs Web服务器,似乎有几个瓶颈阻止它充分发挥峰值负载的作用。

  • 将多个事件记录到我们的SQL服务器
  • 将多个事件记录到我们的弹性集群中

在高负载下,SQL和Elastic似乎都拒绝了我的请求和/或相当慢的性能。因此,我决定通过Logstash(用于弹性)和异步任务队列(用于SQL)来减少这些数据库上的负载

由于我的工作时间有限,所以我想知道是否可以仅使用异步任务队列(例如kue)来解决这些问题,因为我可以同时推送SQL和弹性日志。

我还需要实现logstash吗?还是异步队列解决了与logstash相同的问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Async library's Queue功能,并尝试使其在子进程上运行,或者更好地在单独的服务器中作为队列微服务运行。这样,您可以将负载移动到另一个位置,从而提高应用服务器的性能。

答案 1 :(得分:0)

正如您提到的,您正在使用azure,我强烈建议使用他们的队列解决方案以及几个azure函数来处理从队列中读取和处理。

在将node.js和rabbitmq与节点工作者一起使用之前,我已经推出了自己的解决方案,因为该解决方案无法进入云中,从而从队列中读取并写入弹性搜索。

它可以工作并且功能强大,但是需要大量的配置和自定义代码,这是维护的噩梦。我会尽快将其删除。

使用azure服务的好处是:

  • 需要很少的定制配置。
  • 更少的自定义代码===减少错误和维护性
  • 扩展不是问题,一些大型企业都依靠
  • 没有凌晨2点的支持电话,如果天蓝色下降,他们将快速解决它...
  • 便宜得多,除非吞吐量很大且保持不变,否则缩放模型便宜得多并且azure函数是完美的,因为当队列为空时,您将没有正在运行的服务器坐在那里,什么也不做。

AWS和Google Cloud可以说相同。