问题标签 [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.
mysql - 关系数据库可以横向扩展吗
经过一番谷歌搜索后,我发现:
来自mysql 文档的注释:
MySQL Cluster 自动跨节点对表进行分片(分区),使数据库能够在低成本的商品硬件上水平扩展,以服务于读取和写入密集型工作负载,既可以从 SQL 访问,也可以直接通过 NoSQL API 访问。
关系数据库可以横向扩展吗?它会以某种方式基于 NoSQL 数据库吗?
有人有任何现实世界的例子吗?
如何在这样的数据库中管理 sql 请求、事务等?
node.js - 使用 redis 水平扩展使用 socket.io 的 express/node.js
我正在尝试通过快速后端进行扩展。问题是每次用户进来或我重新启动服务器时,它都会获得一个新的socket.id。另外,我无法将整个套接字保存到内存中,因为它给了我一个 [Circular JSON] 问题。如何将套接字的某些部分保存到 redis 中,以便我从其他服务器检索相同的套接字?
matlab - 如何缩放每个不同大小的条以填充 Stacked Barh 中的图?
我想用水平堆积条制作一个视觉上很好的情节。我的目标是用每个条水平填充该区域。如果矩阵中的每个行的总和都相等,那么结果很好,我想要具有不同总和值行的那个。
我可以将数据集的最大值设置为 xlim。
但是如何拉伸或缩放不同的 sum-value-stackedbars?
条形值当前位于 a 条形中,因此重点在于视觉外观。
我将不胜感激您能提供的任何帮助。
这是该问题的示例数据集;
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
没有评论。
我做错了什么,我可能会错过什么?
谢谢
database - 为共享计数器对数据库进行分区
在设计数据存储期间,我们正在寻找一种对条目进行分区的方法。主要瓶颈是在对共享计数器进行分区时。可以说,我们有一张要提供的车票(典型的火车预订、IRCTC 等)。我们如何对数据存储进行分区,以便客户端看到它们之间的实时一致性(根据预订百分比,即当前值/x)。
每次读取的聚合成本太高,任何其他指针都会有用。
还假设写入操作具有并发性(因此不会将读取卸载到从属设备),并且对于最终的一致性很好。但是有没有办法可以最小化分片之间的不一致性差异。例如,100 张票的部分是像 25、25、25、25 一样跨 4 个分片完成。在任何给定时间点,数据库的视图都应该像 x% 一样满,以及如何最大限度地减少分片之间的不一致(如循环、散列等幼稚操作)。
postgresql - 从 Postgresql 迁移到 Postgres-XL:分布式表设计
由于数据量大,我需要扩展我们的应用程序数据库。它在 PostgreSQL 9.3 上。所以,我找到了 PostgreSQL-XL,它看起来很棒,但是我很难理解分布式表的限制。通过复制(在每个数据节点中复制整个表)来分发它们是非常好的,但是假设我有两个需要沿着数据节点“分片”的大相关表:
现在 Postgres-XL 文档指出:
- “(...)在分布式表中,UNIQUE 约束必须包括表的分布列”
- “(...)分布列必须包含在 PRIMARY KEY 中”
- “(...) 带有 REFERENCES (FK) 的列应该是分布列。(...) PRIMARY KEY 也必须是分布列。”
他们的例子过于简单化和伤痕累累,所以有人可以使用DISTRIBUTE BY HASH()将上面两个表用于 postgres-XL吗?
或者也许建议其他方式来扩展?
cassandra - NoSQL 仲裁与虚拟分片的比较
在阅读了一些 NoSQL 技术之后,我发现Quorum与Virtual 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
。这允许在添加新节点时轻松重新配置它。
它的优点是它不需要像仲裁这样的任何复制!当然,为了可用性/故障转移,您可以为每个节点带来一个主从备份。但这不会增加系统中的读/写量。
azure - 水平扩展写入时如何避免并发问题?
假设有一个工作服务从队列接收消息,从文档数据库中读取具有指定 Id 的产品,根据消息应用一些操作逻辑,最后将更新的产品写回数据库 (a)。
当处理不同的产品时,这项工作可以安全地并行完成,因此我们可以水平扩展(b)。但是,如果多个服务实例在同一个产品上工作,我们最终可能会遇到并发问题,或者数据库中的并发异常,在这种情况下,我们应该应用一些重试逻辑(但重试仍然可能再次失败等等) .
问题:我们如何避免这种情况?有没有办法可以确保两个实例不在同一个产品上工作?
示例/用例:一家在线商店在产品 A、产品 B 和产品 C 上进行了一次大促销,在一个小时内结束,数百名客户正在购买。对于每次购买,都会将一条消息排入队列(productId、numberOfItems、price)。 目标:我们如何运行我们的工作服务的三个实例,并确保 productA 的所有消息都将在 instanceA、productB 到 instanceB 和 productC 到 instanceC 中结束(不会导致并发问题)?
注意:我的服务是用 C# 编写的,作为工作角色托管在 Azure 上,我使用 Azure 队列进行消息传递,我正在考虑使用 Mongo 进行存储。此外,实体 ID 是GUID
.
它更多的是关于技术/设计,所以如果你使用不同的工具来解决我仍然感兴趣的问题。
ruby-on-rails - Rails 部署:4 台小型服务器还是 1 台大型服务器?
我有 20 美元/平方米要花。
DigitalOcean 512MB-1CPU 液滴每个成本为 5 美元/米。一个 2GB-2CPU 的液滴成本为 20 美元/平方米。
我想知道我是否应该去:
- 1 个前端代理 + 2 个应用服务器 + 1 个 DB 服务器,每个 512MB
- 1 台 2GB + 2CPU 的服务器?
哪个会输出更好的性能?
asp.net - 异步与水平缩放
我正在开发一个使用 REST api (JSON) 的 .net 客户端。客户端是一个具有高流量和大量用户交互的 Web 应用程序
在围绕外部 REST api 编写包装器时,我试图决定
如果我应该对 API 进行异步调用?这将是从 UI 到 API 的所有方式,如此处所述http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html。这将帮助我实现所需的性能,但是当任务等待完成时,我必须想办法处理 UI
或者这是一个矫枉过正?我只使用同步/顺序代码吗?我仍然可以通过水平扩展应用程序来获得(一些)性能吗?
我很想了解从客户端(如果有的话)调用外部 REST api 的首选方式是什么,以及在人们使用异步的情况下如何处理 UI?