1

我目前正要重新设计一个正在运行的、特殊用途的德语社交网络 Web 应用程序。当前版本太混乱了,我们决定从头开始。我不想再遇到所有的问题,所以我一直在思考和阅读很多关于:

  1. 可扩展性
  2. 代码的可维护性
  3. 表现

我在一篇博文中争辩说,对于我们系统的架构,我将完全使用重要性顺序,如上面发布的含义:

可扩展性 >> 可维护性 >> 性能

这些结果让我有点惊讶,因为我一直认为性能对于创建可扩展系统至关重要。

  1. 您对这三个因素的重要性有何看法?
  2. 我还认为,为了实现这些目标,需要事先进行仔细的规划和设计。你有什么其他必须有的建议吗?
4

2 回答 2

0

可扩展性是与性能不同的野兽。

性能通常以单个请求的执行速度来衡量。在我有其他用户的本地机器上,我的请求通常非常快,10 毫秒或以下。现在把它放在一个有 50,000 个并发用户的面向外部的 Internet 服务器上,你不会看到任何接近这样的速度的地方。

可扩展性是总体上的性能——您可以多好地支持大量并发请求并且仍然让系统在合理的时间内做出响应。这可能是您最关心的问题,因为如果在任何特定时间只有少数用户可以使用社交网站,那么它有什么用呢?您的用户增长也可能最终呈指数级增长,因此您需要处于可以轻松扩展到更多硬件(在云中或本地数据中心)的位置。

如果它是一个社交网站,我会将这些项目排名为:

可扩展性 > 性能 > 维护

于 2013-07-29T17:10:17.493 回答
0

我相信应该是

可维护性>>可扩展性>>性能

可扩展性/性能

对我来说,可扩展性是一种特殊的性能问题。性能还包括响应时间。但我认为可扩展性与响应时间一样重要。特别是对于社交网络。但在这个比较中,两者都非常接近。

一般来说,如果出现性能问题,最好处理它们。如果您尝试针对您没有遇到的问题优化您的代码,那么您很可能只会浪费您的时间。您可以做的是模拟页面上的用户流量以强制出现性能问题。

可维护性

对我来说最重要的是可维护性,因为它更昂贵。stackoverflow 博客上有一篇关于此的帖子,但我现在找不到。如果您只是购买更好/更多的硬件并将其扔到问题上,那么性能问题基本上可以得到解决。硬件相对便宜,而且价格不断下降。真正昂贵的是程序员的编码时间。

于 2013-08-07T08:32:14.847 回答