比较Java和.NET上的可扩展Web应用程序架构

时间:2009-02-05 21:13:31

标签: java .net architecture scalability

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

4 个答案:

答案 0 :(得分:3)

不幸的是,您的问题有很多方面会依赖于上下文。根据您的要求和应用程序,可伸缩性可能意味着不同的东西。在您提出架构时需要回答的问题(无论您使用何种技术)包括:

  • 例如,您是否希望支持使用大量数据的用户,或者您是否只需要支持大量用户,每个用户使用相对适量的数据?
  • 你的应用程序是否比写入更多读取,因为读取很便宜而且写入成本很高,读取繁重的应用程序比写入的应用程序更容易扩展。
  • 您的应用程序中的数据是否始终一致或最终的一致性是否足够?考虑向社交网站发布消息而不是从银行账户中提取资金。)
  • 您的申请需要多少?当一台服务器崩溃时,严格的高可用性要求可能需要您顺利地故障转移到其他服务器。

在对应用程序架构进行适当讨论之前,还有许多其他类似的问题需要在特定应用程序中得到解答。

然而,所以我不只是给你留下问题而且这里没有一个单一的答案是我认为在设计可扩展性的Web应用程序时要考虑的最重要的事情:减少(如果降低到零)可能)应用程序中的共享会话状态量(全局应用程序计数器,缓存的主键块等)。当您尝试向上扩展时,在群集中复制共享状态的成本非常高

答案 1 :(得分:1)

也许有很多选择,我不确定是否有人全面考虑所有选项。通常,首先选择语言,然后决定如何实现所需的结果。

我猜你几乎可以选择任何一种主要的通用语言。 这可能是10年前的一个问题,但今天恕我直言。

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

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

我建议将小批量应用程序转换为高容量应用程序,首先从一个相当高的量开始,并期望在你去的时候重新设计它。

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

答案 2 :(得分:0)

刚刚遇到this解释MySpace如何扩展,非常有趣,以及我正在寻找的那种信息。但是,没有讨论用于创建分区或缓存等的技术......

答案 3 :(得分:0)

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