问题标签 [horizontal-scaling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
324 浏览

mysql - 使用 @Async 更好地扩展 Spring 应用程序以进行大量数据库插入或更新查询

我有一个 spring REST 控制器,其唯一目的是在每次移动客户端启动或启动应用程序时创建或更新记录。此 URL 仅在用户启动应用程序或恢复后进入前台时触发(即,当用户按下设备主页按钮到其他位置时,用户按下应用程序图标将其从内存中带到前台)。

此 URL 的预期请求数约为每分钟 600 个请求。

为了扩展这个应用程序,将数据库(MySql)创建/更新 Spring 控制器的逻辑放在一个单独的线程中或使用 Spring 的 @Async 功能更好吗?这样它就不会长时间保持系统端口,并且一台机器可以在我的 Web 服务器( glassfish )将请求推送到等待队列之前处理大量请求。

此外,该表中的预期表大小或记录数约为 10M - 30M。

0 投票
3 回答
4231 浏览

microservices - 微服务:数据库和微服务实例

假设我们有一个微服务 A 和一个 B。B 有自己的数据库。但是 B 必须水平缩放,因此我们最终有 3 个 B 实例。数据库会发生什么?它是否相应地扩展,对于 3B 实例是否保持相同的(集中式)数据库,它是否成为分布式数据库,会发生什么?

0 投票
1 回答
646 浏览

messaging - 适用于 Windows 的服务总线 - 性能和可扩展性

我们正在使用 Service Bus for Windows 1.1 为 pub/sub 构建一个系统。如果我们在 Azure 上,我们可以使用分区来扩展它。但是,本地版本不支持分区。相反,场中的所有节点似乎都使用相同的 SQL Server 作为其持久层,这似乎是一个内置瓶颈。

我们可以做些什么来让 Windows 服务总线横向扩展?

0 投票
0 回答
184 浏览

python - 如何处理服务器上的繁重请求?

我不知道这是否是问的正确地方,但我迫切希望得到答案。

这里的问题不是请求的数量,而是单个请求所花费的时间。对于每个请求,服务器必须查询大约 12 个不同的数据源,并且服务器可能需要长达 6 个小时才能获取数据(让我们离开请求超时,因为这不是服务器直接与客户端通信。这个服务器正在从 kafka 获取消息,然后开始从源获取数据)。我应该想出一个可扩展的解决方案。谁能帮我这个?

问题不止于此:

  • 一旦服务器获得数据,他必须推送到 kafka 以使用 spark 进行进一步计算。本部分将使用 Streaming api。

我对任何 web 框架或 python 中的任何扩展解决方案持开放态度。

0 投票
1 回答
2298 浏览

mysql - 为什么关系数据库不能水平扩展

我知道这个问题已经被问过很多次了,但我没有得到任何令人满意的答案。

我读过很多博客,其中大多数都说 RDBMS 不能水平扩展。处理它的唯一方法是购买更大的机器。

然后我读到了为什么它们不能水平缩放。人们说是因为他们根据 ACID 属性提供了可靠、成熟的服务。我的论点是我们不能删除 RDBMS 来为特定表提供 ACID 属性。这是它不能水平扩展的唯一原因,我们必须考虑 NoSQL 数据库。

提出的第二个论点是 NoSQL 数据库将数据存储为一个单元,而 RDBMS 将数据存储在多个表中。因此,一条数据可能在一个系统中,而它所引用的另一条数据可能在另一个系统中。因此分布式扩展 RDBMS 变得困难。我对他们的问题是,如果情况需要,为什么我们不能将所有相关数据存储在一个表中,而是将其分散到多个表中。如果 NoSQL 可以将数据作为单个单元存储在单个集合中,为什么 RDBMS 不能将数据作为单个单元存储在单个表中。(例如,为什么必须将订单拆分为订单表、客户表和付款表。为什么不能将它们合并到一个表中,就像 NoSQL 存储的方式一样)

这也允许开发人员在无需将内存结构转换为关系结构的情况下进行开发。

简而言之,我们能否让 RDBMS 像 NoSQL 数据库一样运行并使其水平扩展?

0 投票
1 回答
700 浏览

tensorflow - 如果没有明确指定,TensorFlow 集群如何跨机器分配负载?

我学习了“分布式 TensorFlow”操作指南,并尝试将其应用于“MNIST For ML Beginners”教程。我在本地启动了三个 TensorFlow 工作节点(PC 中有 8 个内核)并运行训练脚本并替换以下行:

具有以下内容:

where12346是节点 0 正在侦听的端口(例如,在节点 0 上创建主会话)。请注意,我没有明确指定应该在哪里执行计算。

查看htop的输出,我可以看到该作业确实是由集群执行的——它消耗了一些 CPU。但是,唯一的消费者是节点 0,其余节点不执行任何工作。如果我选择节点 1 作为创建主会话的地方,图片会发生变化:只有 ~2/3 的工作在节点 0 上执行(根据 CPU 负载判断),但剩余 1/3 的工作在节点 1 上执行. 如果我选择节点 2 作为主节点,那么 1/3 的工作在节点 2 上执行。如果我并行运行两个进程,一个使用节点 1 作为主节点,另一个使用节点 2 作为主节点,节点 1 和节点 2获得一些负载,但节点 0 的负载要多得多(例如,200% 对 60% 对 60% 的 CPU)。

到目前为止,分布式 TensorFlow 的“默认”行为似乎并不适合现在自动并行化工作。我想知道行为是什么以及分布式 TensorFlow 是否完全用于数据并行化(而不是手动模型并行化)?

0 投票
2 回答
1499 浏览

tensorflow - 是否可以将 TensorFlow Serving 与分布式 TensorFlow 集群一起使用来提高吞吐量/延迟?

我正在研究改善TensorFlow Serving实例的延迟和/或吞吐量的方法。我看过“Serving Inception”手册和三个 GitHub 问题(2、3、4 它们似乎都为每台服务器创建了一个单独的 TensorFlow Serving 实例,然后在客户端选择服务器。问题4实际上是关于在这些东西前面添加一些负载均衡器,而 TensorFlow Serving 本身目前不存在这些负载均衡器。

但是,还有一个“分布式 TensorFlow”教程,它展示了如何将一组机器加入一个固定的集群,然后手动将一些计算“固定”到一些机器上,如果模型是“宽”的,这可以提高延迟和吞吐量,并且可以并行化好。但是,我在任何一个文档中都没有看到将其与 TensorFlow Serving 结合的任何提及。

问题是:是否可以将 TensorFlow Serving 配置为使用分布式 TensorFlow 集群?

我能够通过一些技巧使其创建和使用 gRPC 会话(而不是本地会话):

  1. 通过修改文件使tensorflow/core/distributed_runtime/rpc:grpc_session目标公开可见(默认情况下它是 tensorflow 包的内部) 。BUILD
  2. 将其作为依赖项添加到tensorflow_serving/model_servers:tensorflow_model_server目标。
  3. 添加一个额外的标志来tensorflow_model_server调用在.--session_targetsession_bundle_config.session_target()main.cc
  4. 使用 运行二进制文件--session_target=grpc://localhost:12345,其中localhost:12345是用于创建主会话的任意节点。
  5. 查看我的集群代表 TensorFlow Serving 执行一些计算。

但是,由于以下三个原因,这组 hack 看起来不足以“实际使用”:

  1. grpc_session由于某种原因,目标可能是内部的。
  2. 正如我在另一个问题中所注意到的,当计算被手动“固定”到特定机器上时,分布式 TensorFlow 会更好地工作。因此,如果我们使用 TensorFlow Serving,我们需要一种方法来保存这些“引脚”,并且模型的结构会与集群的结构联系在一起。我不确定此信息是否与Exporter/Saver一起导出。
  3. tensorflow_model_server创建会话一次 - 在引导期间。如果集群的主节点宕机然后恢复,服务服务器仍然保持“旧”会话,无法处理进一步的请求。

总而言之,看起来这个场景还没有得到官方的支持,但我不确定。

0 投票
1 回答
361 浏览

amazon-web-services - 扩展 Amazon EC2 - 应用程序属性管理 (Spring Boot)

我使用这个指令: http ://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

在 EC2 Ubuntu 服务器上部署 Spring Boot 应用程序。我将使用以下命令将配置从 application.properties 文件移动到环境变量: spring.datasource.password=${MYAPP_DATASOURCE_PASSWORD}

如果我要制作这个配置的许多副本,如何管理它?例如,更改所有实例上的数据源密码?我必须手动完成吗?这将是乏味且容易出错的工作......

0 投票
1 回答
436 浏览

node.js - 水平缩放 Json-Web-Token nodejs

在 nodejs 中水平扩展 JWT 的正确方法是什么。我RSA用来生成令牌。因此,每个服务器都能够解码自己生成的令牌。所有负载平衡都是无状态的,因此无法知道哪个服务器生成了令牌。我正在使用的当前代码是

generateToken功能可以在任何图像上运行,并且它们都具有不同的私钥。什么是最好的扩展方式。

顺便说一句,我在 docker swarm 上运行实例

0 投票
2 回答
279 浏览

session - 大型(高流量)应用程序中的用户状态

假设 -

  1. 有 4 台服务器位于充当负载均衡器的反向代理后面
  2. 负载均衡器纯粹是负载均衡,根据当前负载向 4 台服务器中的任何一台发送请求
  3. 用户需要通过身份验证才能访问此应用程序,并且一些空间应该保存所有用户的状态,因为反向代理只是负载平衡
  4. 应用程序需要扩展到超过 4 台服务器,比如 4000 台服务器。


问题 -

  1. 在拥有所有用户状态的大型多服务器系统中 - 负载均衡器,每个服务器,单独的服务器?
  2. 所有用户的状态是否保存在所有服务器上,以便负载均衡器可以向任何服务器发送请求?这如何扩展到 1 亿用户?