【问题标题】:processing requests when we have multiple requests from multiple customers当我们有来自多个客户的多个请求时处理请求
【发布时间】:2019-01-16 14:26:02
【问题描述】:

我正在 Heroku 平台上开发节点服务,该服务将接受来自不同客户端的请求,但一次只能处理 10 个请求。 收到请求后,我们将写入数据库,然后一次处理 10 个。 当多个向该服务发送请求并且我想在客户之间平均分配线程时。例如,客户 A 发送 10k 个请求,B 发送 5K 个请求,C 发送 100 个请求。

  1. 我们需要为 3 个客户平分线程。 2.完成客户C请求后,我想将可用线程平均分配给A和B。 3.B完成后,只到A。
  2. 如果我们收到任何其他客户的请求,我们需要拆分线程。 谁能帮我写这个算法。

谢谢

【问题讨论】:

  • 基本上你在寻找负载平衡,对吧?
  • 所以不是负载均衡请求,而是想要对客户端进行负载均衡,以便每个客户端的吞吐量保持一致? IE。有 M 个活跃请求的客户端的 N 个请求所花费的时间将类似于 (N*M)/(10*t)?并且第一个客户不占主导地位?客户端是否单独发送请求?还是分批(在您的示例中为 10k、5k 和 100 个)?目标是不是对于任何客户端,单个请求都将尽快处理,但对于多个并发请求,将优先于来自其他客户端的单个请求,而不是来自该客户端的第二个以上的请求?

标签: node.js rest heroku architecture


【解决方案1】:

在节点 JS 中我们可以使用process environment variable。使用进程环境变量,您可以确定一个进程应该使用多少端口,如果您将获得更多请求,您可以减小变量值,如果某个进程完成,则可以增加变量值。

process.env.variable_name = 'Value';

您可以在任何进程中访问此值并在任何进程中更新。此进程的值对于所有进程始终相同。

console.log(process.env.variable_name);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2021-07-31
    • 2016-05-24
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多