问题标签 [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 投票
5 回答
34698 浏览

mysql - 关系数据库可以横向扩展吗

经过一番谷歌搜索后,我发现:

来自mysql 文档的注释:

MySQL Cluster 自动跨节点对表进行分片(分区),使数据库能够在低成本的商品硬件上水平扩展,以服务于读取和写入密集型工作负载,既可以从 SQL 访问,也可以直接通过 NoSQL API 访问。

关系数据库可以横向扩展吗?它会以某种方式基于 NoSQL 数据库吗?

有人有任何现实世界的例子吗?

如何在这样的数据库中管理 sql 请求、事务等?

0 投票
1 回答
2070 浏览

node.js - 使用 redis 水平扩展使用 socket.io 的 express/node.js

我正在尝试通过快速后端进行扩展。问题是每次用户进来或我重新启动服务器时,它都会获得一个新的socket.id。另外,我无法将整个套接字保存到内存中,因为它给了我一个 [Circular JSON] 问题。如何将套接字的某些部分保存到 redis 中,以便我从其他服务器检索相同的套接字?

0 投票
1 回答
116 浏览

matlab - 如何缩放每个不同大小的条以填充 Stacked Barh 中的图?

我想用水平堆积条制作一个视觉上很好的情节。我的目标是用每个条水平填充该区域。如果矩阵中的每个行的总和都相等,那么结果很好,我想要具有不同总和值行的那个。

我可以将数据集的最大值设置为 xlim。

但是如何拉伸或缩放不同的 sum-value-stackedbars?

条形值当前位于 a 条形中,因此重点在于视觉外观。

我将不胜感激您能提供的任何帮助。

这是该问题的示例数据集;

0 投票
0 回答
183 浏览

amazon-web-services - AWS 上的 Cassandra 扩展

在我成功设置并运行 Cassandra (v2.1) 集群后,我正在运行一些负载测试,以使用 YCSB 库(https://github.com/jbellis/YCSB fork)评估其性能。

在我的评估中,我在不同大小和数量的 EC2 节点上使用相同的配置,但是性能并不是真正可预测的,这与官方 datastax 文档中声称的线性扩展相反。

更准确地说,当运行具有 100 或 200 个线程和 100k 或 1m 操作的工作负载时,2 x m3.large 节点和 4 x m3.large 节点具有几乎相同的性能。我在单个区域集群上使用 EC2Snitch 和 2 个种子节点。commitlog_sync: batch并且 commitlog_sync_batch_window_in_ms: 50没有评论。

我做错了什么,我可能会错过什么?

谢谢

0 投票
1 回答
63 浏览

database - 为共享计数器对数据库进行分区

在设计数据存储期间,我们正在寻找一种对条目进行分区的方法。主要瓶颈是在对共享计数器进行分区时。可以说,我们有一张要提供的车票(典型的火车预订、IRCTC 等)。我们如何对数据存储进行分区,以便客户端看到它们之间的实时一致性(根据预订百分比,即当前值/x)。

每次读取的聚合成本太高,任何其他指针都会有用。

还假设写入操作具有并发性(因此不会将读取卸载到从属设备),并且对于最终的一致性很好。但是有没有办法可以最小化分片之间的不一致性差异。例如,100 张票的部分是像 25、25、25、25 一样跨 4 个分片完成。在任何给定时间点,数据库的视图都应该像 x% 一样满,以及如何最大限度地减少分片之间的不一致(如循环、散列等幼稚操作)。

0 投票
1 回答
2545 浏览

postgresql - 从 Postgresql 迁移到 Postgres-XL:分布式表设计

由于数据量大,我需要扩展我们的应用程序数据库。它在 PostgreSQL 9.3 上。所以,我找到了 PostgreSQL-XL,它看起来很棒,但是我很难理解分布式表的限制。通过复制(在每个数据节点中复制整个表)来分发它们是非常好的,但是假设我有两个需要沿着数据节点“分片”的大相关表:

现在 Postgres-XL 文档指出:

  • “(...)在分布式表中,UNIQUE 约束必须包括表的分布列”
  • “(...)分布列必须包含在 PRIMARY KEY 中”
  • “(...) 带有 REFERENCES (FK) 的列应该是分布列。(...) PRIMARY KEY 也必须是分布列。”

他们的例子过于简单化和伤痕累累,所以有人可以使用DISTRIBUTE BY HASH()将上面两个表用于 postgres-XL吗?

或者也许建议其他方式来扩展?

0 投票
1 回答
1537 浏览

cassandra - NoSQL 仲裁与虚拟分片的比较

在阅读了一些 NoSQL 技术之后,我发现QuorumVirtual Sharding相比失败了。虚拟分片允许可扩展性并且不会增加整个系统的读/写量。还有什么不好的是,我绝对找不到仲裁比分片有任何好处。

问题: 您能否从数据一致性/性能/可扩展性的角度作为仲裁技术的倡导者,并阐明它比分片更好的情况?

以下是我对这些东西的看法:

法定人数:

假设我有一个需要高数据一致性的预订系统。使用 NoSQL 实现数据一致性的方法之一是quorum,means R + W > N,where R- read nodes,W- write nodes 和N- total amount of nodes。

据我了解,如果您使用仲裁而不是写一行,您的数据库需要执行一次写操作W。还要读取您的数据库需要R读取的内容。对?

虚拟分片:

据我了解,分片- 当有类似于 hashmap 的东西时,它通过某些标准告诉你收入数据应该存储在哪里/应该从哪里读取。假设您有N节点。虚拟意味着为了避免可伸缩性问题,该哈希映射将大于N,但假设10*N。这允许在添加新节点时轻松重新配置它。

它的优点是它不需要像仲裁这样的任何复制!当然,为了可用性/故障转移,您可以为每个节点带来一个主从备份。但这不会增加系统中的读/写量。

0 投票
5 回答
2605 浏览

azure - 水平扩展写入时如何避免并发问题?

假设有一个工作服务从队列接收消息,从文档数据库中读取具有指定 Id 的产品,根据消息应用一些操作逻辑,最后将更新的产品写回数据库 (a)。

水平缩放写入

当处理不同的产品时,这项工作可以安全地并行完成,因此我们可以水平扩展(b)。但是,如果多个服务实例在同一个产品上工作,我们最终可能会遇到并发问题,或者数据库中的并发异常,在这种情况下,我们应该应用一些重试逻辑(但重试仍然可能再次失败等等) .

问题:我们如何避免这种情况?有没有办法可以确保两个实例不在同一个产品上工作?

示例/用例:一家在线商店在产品 A、产品 B 和产品 C 上进行了一次大促销,在一个小时内结束,数百名客户正在购买。对于每次购买,都会将一条消息排入队列(productId、numberOfItems、price)。 目标:我们如何运行我们的工作服务的三个实例,并确保 productA 的所有消息都将在 instanceA、productB 到 instanceB 和 productC 到 instanceC 中结束(不会导致并发问题)?

注意:我的服务是用 C# 编写的,作为工作角色托管在 Azure 上,我使用 Azure 队列进行消息传递,我正在考虑使用 Mongo 进行存储。此外,实体 ID 是GUID.

它更多的是关于技术/设计,所以如果你使用不同的工具来解决我仍然感兴趣的问题。

0 投票
2 回答
255 浏览

ruby-on-rails - Rails 部署:4 台小型服务器还是 1 台大型服务器?

我有 20 美元/平方米要花。

DigitalOcean 512MB-1CPU 液滴每个成本为 5 美元/米。一个 2GB-2CPU 的液滴成本为 20 美元/平方米。

我想知道我是否应该去:

  • 1 个前端代理 + 2 个应用服务器 + 1 个 DB 服务器,每个 512MB
  • 1 台 2GB + 2CPU 的服务器?

哪个会输出更好的性能?

0 投票
1 回答
400 浏览

asp.net - 异步与水平缩放

我正在开发一个使用 REST api (JSON) 的 .net 客户端。客户端是一个具有高流量和大量用户交互的 Web 应用程序

在围绕外部 REST api 编写包装器时,我试图决定

  1. 如果我应该对 API 进行异步调用?这将是从 UI 到 API 的所有方式,如此处所述http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html。这将帮助我实现所需的性能,但是当任务等待完成时,我必须想办法处理 UI

  2. 或者这是一个矫枉过正?我只使用同步/顺序代码吗?我仍然可以通过水平扩展应用程序来获得(一些)性能吗?

我很想了解从客户端(如果有的话)调用外部 REST api 的首选方式是什么,以及在人们使用异步的情况下如何处理 UI?