1

在 Java 和 .NET 中创建可扩展的 Web/企业应用程序的推荐步骤是什么?我对从低容量应用程序到高容量应用程序需要什么更感兴趣(假设原始架构中没有重大故障)。例如,每个平台的集群、负载平衡、会话管理、缓存等选项有哪些。

4

4 回答 4

3

不幸的是,您的问题有很多方面将取决于上下文。根据您的要求和应用程序,可扩展性可能意味着不同的事情。在您提出架构时需要回答的问题(无论您使用何种技术)包括:

  • 例如,您是想支持处理大量数据的用户,还是只需要支持大量用户,每个用户处理相对少量的数据?
  • 您的应用程序是否做更多的读取而不是写入,因为读取便宜且写入昂贵,读取繁重的应用程序可能比写入繁重的应用程序更易于扩展。
  • 您的应用程序中的数据是否始终保持一致或最终的一致性就足够了?想想在社交网站上发布消息而不是从银行账户中取款)。
  • 您的应用程序需要有多可用?严格的高可用性要求可能会要求您在一台服务器崩溃时顺利故障转移到其他服务器。

There are many other questions like this that need to be answered about your specific application before a proper discussion on your application architecture can take place.

However so I don't just leave you questions and not a single answer here is what I think is the single most important thing to take into account when designing a web application for scalability: Reduce (down to zero if possible) the amount of shared session state in your application (global application counters, cached primary key blocks and the like). Replicating shared state across a cluster has a very high cost, when you are trying to scale up

于 2010-01-17T11:04:29.657 回答
1

也许有这么多的选择,我不确定有人会全面考虑所有的选择。通常,首先选择语言,然后再决定如何实现您想要的结果。

我的猜测是,您几乎可以在任何主要的通用语言中都有不错的选择。这在 10 年前会是一个问题,但恕我直言,今天不是。

Java 中可用的开源技术的一个很好的比较是http://java-sources.org/ 当您深入到每个类别时,您会发现这是相当广泛的,它甚至考虑了商业产品或 C#

对于任何可扩展系统,您还需要考虑硬件解决方案,例如网络组件。

我对将低容量应用程序转变为高容量应用程序的建议是,首先从容量相当大的应用程序开始,并期望在进行时对其进行重新设计。

你在说什么类型的卷?每个人对高音量和低音量都有不同的期望。例如,当谷歌的数据量低于平均水平时,他们会切换整个数据中心以节省电力。;)

于 2010-01-17T09:54:02.147 回答
0

刚刚看到关于 MySpace 如何扩大规模解释,非常有趣,正是我正在寻找的信息。但是,没有讨论用于创建分区或缓存等的技术......

于 2009-02-05T21:21:50.957 回答
0

简短的回答 - 这取决于。涉及哪些(如果有)业务目标?项目预算和时间表是多少?哪个行业(受监管)?

于 2010-01-17T09:57:44.900 回答