问题标签 [scalability]

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 投票
10 回答
35741 浏览

performance - 我应该为我的高性能 Web 服务选择哪种编程语言?

我正在为我的应用程序构建 Web 服务 API。此外,我计划通过 REST 和 SOAP 公开服务。

我有兴趣从社区获得一些关于我应该选择哪种编程语言来实现服务的反馈?(我知道 C#、Java 和 Ruby - RoR 足以创建服务)。

该服务主要是一个 HTTP POST 服务。它需要处理大约 2000 个并发连接,并且每秒能够处理大约 10,000 个 HTTP POST。(对于 SOAP,我们将有一个提交方法供客户端调用)。

对于 POST 请求,该服务不会向客户端返回任何响应。

关于应该使用哪种编程语言/架构的任何想法?

0 投票
3 回答
15886 浏览

database - 将 postgres 服务器扩展到多个服务器

我们的 postgres 服务器即将达到其容量,我们正在考虑添加第二个数据库服务器。有没有特别适合 postgres 设置的扩展解决方案?

0 投票
6 回答
2164 浏览

asp.net - 解决 .net Web 应用程序中的可伸缩性和性能问题

我正在开发一个有很多并发用户的.net 门户。因此可扩展性、性能需要在设计和架构中加以解决。我们计划在应用程序中使用负载平衡。

记住这一点,在 IIS Web 服务器(托管 aspx、aspx.cs 文件)和应用程序服务器(托管 .net 程序集,如业务逻辑和数据访问层)之间进行通信的最佳方式是什么?它应该是 .net 远程处理还是肥皂网络服务?还是有其他方法?

谢谢。

0 投票
13 回答
4330 浏览

iis - 负载平衡的 ASP.NET 站点的架构建议

更新 2009-05-21

我一直在测试使用单个网络共享的#2 方法。这会导致 Windows Server 2003 在负载下出现一些问题:

http://support.microsoft.com/kb/810886

结束更新

我收到了一份关于 ASP.NET 网站的提案,该网站的工作方式如下:

硬件负载平衡器 -> 4 个 IIS6 Web 服务器 -> 带有故障转移集群的 SQL Server DB

这就是问题所在...

我们正在选择存储 Web 文件(aspx、html、css、图像)的位置。提出了两种选择:

1) 在 4 台 IIS 服务器上分别创建相同的 Web 文件副本。

2) 将 Web 文件的单个副本放在 4 个 Web 服务器可访问的网络共享上。4 个 IIS 服务器上的 webroot 将映射到单个网络共享。

哪个是更好的解决方案?选项 2 显然对于部署更简单,因为它只需要将文件复制到一个位置。但是,我想知道是否会有可伸缩性问题,因为四个 Web 服务器都在访问一组文件。IIS 会在本地缓存这些文件吗?它会在每个客户端请求上命中网络共享吗?另外,访问网络共享总是比在本地硬盘上获取文件慢吗?如果添加更多 IIS 服务器,网络共享的负载是否会变得更糟?

举例来说,这是针对目前每月获得约 2000 万次点击的网站。在最近的高峰期,它每秒收到大约 200 次点击。

如果您对此类设置有特殊经验,请告诉我。感谢您的输入。

更新 2009-03-05

为了澄清我的情况 - 这个系统中的“部署”比典型的 Web 应用程序要频繁得多。该网站是后台 CMS 的前端。每次在 CMS 中发布内容时,都会自动将新页面(aspx、html 等)推送到实时站点。部署基本上是“按需”的。从理论上讲,这种推动可能在一分钟或更长时间内发生多次。因此,我不确定一次部署一台 Web 服务器是否可行。想法?

0 投票
13 回答
2036 浏览

refactoring - 什么时候重构变得不值得了?

假设您有一个程序当前按应有的方式运行。该应用程序背后的代码非常糟糕,占用大量内存,不可扩展,并且需要大量重写才能实现功能上的任何更改。

重构在什么时候变得比完全重建更不合逻辑?

0 投票
6 回答
562 浏览

web-services - 基于 Web 服务的架构的可扩展性到底有多大?

每当有人谈论基于服务的架构时,他们经常会提到可扩展性,而且往往是同时提到的。但是,似乎使用服务会增加而不是减少开销,因为现在涉及到一个协议,如 SOAP 或 REST。那么,当 Web 应用程序的用户数量增加一个数量级时,基于 Web 服务的架构真的会增加性能优势吗?还是只是将可扩展性需求转移到服务上,而不是核心应用程序上?

0 投票
7 回答
3782 浏览

java - Java EE 应用程序的可伸缩性。你会如何处理它?

我一直致力于金融行业的解决方案。该应用程序的主要功能是能够加载大量输入文件、消化它们、更新持久存储中的状态以及根据请求从持久存储中生成提取。很简单。

输入文件是行业标准格式的 XML 大型(超过数百兆字节)消息,其中包含许多重复条目。持久存储是关系数据库。该引擎已实现为可部署在 J2EE 应用服务器上的基于 POJO(作为主干的 Spring 框架)Java 应用程序。

问题是关于解决方案的可扩展性和性能。如果应用程序按顺序处理来自 XML 的条目,则解决方案的可伸缩性相当差。没有办法让应用程序的多个实例参与单个文件的处理。这就是我为输入 XML 文件中的条目引入并行处理的原因。基本上,这个想法是为池中的工人分派处理单个条目。我决定使用 JMS 进行调度。加载文件的组件读取流并简单地提取单个条目并提供给调度队列。队列的另一端有许多并发消费者。每个人从队列中挑选一条消息并处理该条目,它可以立即用于处理其他条目。这与 Web 容器中的 servlet 非常相似。我发现这种方法特别强大的是,只要队列是共享的,工作人员就可以驻留在部署在远程服务器上的应用程序的不同实例中。不幸的是,所有工作人员都连接到维护持久性存储的同一个数据库,如果数据库服务器的功能不足以处理来自并发工作人员的负载,这可能是一个瓶颈。

您对这种架构有何看法?你有类似的应用程序设计吗?你当时的设计选择是什么?

0 投票
3 回答
337 浏览

web-services - 有哪些很好的资源可用于设计可以很好扩展的基于 Web 服务的架构?

我有一个 Web 应用程序,目前有大约 500,000 个用户,平均每小时大约 500 个页面浏览量,我们预计在明年内必须扩展到 20,000,000 个用户。

我们当前的系统无法处理这种规模,因此我们需要转向可以处理的系统。

我在想基于服务的架构会更加健壮,并允许组件服务相互独立地扩展,也可以独立于主应用程序进行扩展。

但有人警告我,可以很容易地设计一个无法很好扩展的服务架构,而且由于我几乎没有设计这样一个系统的经验,因此通过一些推荐的资源可能比仅仅“尝试一下”要好。 "

那么,推荐哪些资源来构建一个可扩展的系统呢?该平台是.Net,但我想同样的信息适用于任何基于服务的架构,无论平台如何。

0 投票
4 回答
2953 浏览

sql - 可扩展的数据库标记模式

编辑:对于构建标记系统的人。不要读这个。这不是你要找的。当我不知道RDBMS都有自己的优化方法时,我问了这个问题,只需使用简单的多对多方案即可。

我有一个拥有数百万个帖子的发布系统。每个帖子可以有无数个与之关联的标签。

用户可以创建包含注释、创建日期、所有者等的标签。标签几乎就像帖子本身,因为人们可以发布关于标签的注释。

每个标签关联都有一个所有者和日期,因此我们可以看到谁添加了标签以及何时添加。

我的问题是如何实现这一点?它必须通过标签或标签快速搜索帖子。此外,用户可以通过在字段中输入名称来为帖子添加标签,有点像谷歌搜索栏,它必须为您填写标签名称的其余部分。

我目前有 3 个解决方案,但不确定哪个是最好的,或者是否有更好的方法。

请注意,我没有显示笔记的布局,因为一旦我获得了适当的标签解决方案,这将是微不足道的。

方法一、链表

post中的tagId指向tag_assoc中的一个链表,应用程序必须遍历链表直到flink=0

方法 2. 非规范化

tags 只是一个 VARCHAR 或 TEXT 字段,其中包含一个制表符分隔的 tagId:ownerId 数组。它不能是固定大小。

方法 3. 毒物

(来自:http ://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html ,这里也一样:标签或标记的推荐 SQL 数据库设计

方法 3 提出了一个问题,遍历 tag_assoc 中的每一行的速度有多快?

方法 1 和 2 对于按帖子返回标签应该很快,但是对于按标签的帖子,必须制作另一个查找表。

我要担心的最后一件事是按名称优化搜索标签,我还没有解决这个问题。

我在这里做了一个ASCII图:http: //pastebin.com/f1c4e0e53

0 投票
2 回答
1287 浏览

architecture - 架构模式 Pub/Sub 扩展和灾难恢复

我们将有一个源系统通过符合 JMS 的发布/订阅基础设施广播消息。对于大多数发布的消息,订阅者将是使用消息中的数据更新屏幕的 GUI 应用程序。

然而,其中一个订阅者将是翻译服务。对于发布的某些消息,翻译服务会将消息翻译成不同的格式,并将其发布到企业不同部分拥有的辅助消息传递基础架构上。

如何扩展我的翻译服务并在理想情况下提供主动-主动容错?一些注意事项:

  • 消息需要按顺序发布到辅助消息传递基础架构上。
  • 消息只能在辅助消息传递基础架构上发布一次。

基本上,我如何确保只有 1 个翻译服务订阅者响应消息?我是否需要切换到基于队列的系统(但我的 GUI 仍需要发布/订阅语义)?

请注意,翻译服务将押注托管在 Windows Server 2003 中的 .Net 3.5 应用程序。我们提供 F5 Network 的 BigIP LTM/GTM。

需要更多详细信息,请询问/评论。

提前致谢。