(首先我要明确一点,我不是 .NET 开发人员,并且不依赖于任何其他环境。)
最近,我听说伦敦证券交易所下跌了一整天。我还听说该软件是用 .NET 编写的。到目前为止,他们在忙碌的日子里会遇到性能下降。人们似乎在指责 .NET。
我不想讨论这个故事,但它让我想起了 .NET 如何扩展的问题?.NET 有多大?
(首先我要明确一点,我不是 .NET 开发人员,并且不依赖于任何其他环境。)
最近,我听说伦敦证券交易所下跌了一整天。我还听说该软件是用 .NET 编写的。到目前为止,他们在忙碌的日子里会遇到性能下降。人们似乎在指责 .NET。
我不想讨论这个故事,但它让我想起了 .NET 如何扩展的问题?.NET 有多大?
老实说,我认为它归结为代码优化,而不仅仅是基础设施。
在StackOverflow 播客 19中,Jeff 讨论了他们必须如何调整 SQL Server 以处理 StackOverflow 的负载类型;请注意,这里需要调整的不是 .NET。
还必须注意,MySpace.com,最大的社交网络之一,运行在 ASP.NET 上。
MySpace 单独使用 ASP.NET 就证明了它的可伸缩性。它将归结为开发人员将如何以最能利用该功能的方式编写他们的应用程序。
不幸的是,还有很多其他问题可能会导致项目随着规模的扩大而失败,在你归咎于一个框架之前,你需要经历很多事情。除非你能看到并彻底分析源代码,否则很难说出根本原因是什么。我愿意打赌这不是框架。
不,我不是每天都使用 .NET。
您可以编写无法在任何语言中扩展的糟糕代码。
.Net 非常有能力扩展到任何规模的系统,但与任何其他技术堆栈一样,您必须在构建系统时考虑到可扩展性。
伦敦证交所在最糟糕的一天下跌,但无论出于何种原因,我怀疑问题在于底层堆栈。我怀疑这是一个可怜的工人指责他们的工具的案例。
这是一本关于这个主题的厚书供您阅读:
提高 .NET 应用程序性能和可扩展性(微软出版社)
实际上,LSE 的停机时间与它的 .NET 交易平台完全无关:
伦敦证交所表示,该系统受到“连接问题”的影响,并坚称问题不在于其旗舰交易平台 TradElect。
http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails
点网可很好地扩展。我们有运行 IIS 服务器和 asp.net 网站和应用程序的服务器集群,当我们的用户负载增加时,我们可以(轻松地)添加服务器以增加容量。这发生在某些事件中,.net 架构的可扩展性并没有让我们失望。
我会冒险猜测(就像其他人一样)这不是 .net 问题。
也许是交易量拉低了交易所。
尽管到目前为止给出的许多示例都很好,但它们只是大型网站。(你讨厌我说“只是”)他们向用户分发页面和偶尔的应用程序(即乱七八糟的)。证券交易所处理买卖并匹配买家/卖家。对于应用服务器来说,这将是几个数量级的工作量。
我可以看到数据库下降了。
这一切都归结为三件事:
MySpace 之前提到过,这是一个众所周知的事实,当他们达到新的扩展步骤(用户数/页面浏览量等)时,他们已经多次重写了他们的应用程序。如果他们一开始就选择构建最后一个版本,那么维护成本太高而且成本效益不高——可扩展性应该基于当前位置和下一个扩展目标。
最后一件事——尽管它通常被认为是回避性的,但可靠的压力测试可以让您很好地了解您的应用程序如何在用户体验它和灾难发生之前处理您的目标负载。
正如其他人所说 - 这不是平台问题。
重要的是您的应用程序的架构 - 负载平衡、状态管理、分区等......这些不是特定于平台的。
后来的消息...
“TradElect 是该集团的交易平台技术,将于今年晚些时候被 LSE 拥有的斯里兰卡技术供应商 MillenniumIT 开发的软件所取代。” ...
http://www.efinancialnews.com/story/2010-09-13/ex-lse-tech-chief-joins-green-investment-company
“这项交易使集团能够为我们未来的业务发展实施一种新的、更敏捷、创新和高效的 IT 能力,并运行一个新的现金交易平台,该平台将提供显着降低的延迟、显着更高的容量和改进的可扩展性。” ...
我运行着一个相对较大的 asp.net 网站,并且发现它可以很好地扩展。当然,这很大程度上归功于拥有一些出色的工具来诊断和修复代码中的瓶颈。我敢猜测,编码问题会导致人们在任何框架中遇到的 99.99% 的问题。
为什么.NET 会有其他平台没有的大小限制?我无法想象在任何情况下您都会对 .NET 变得“太大”。但是,您应该真正指定您是在谈论 .NET winforms 应用程序还是 ASP.NET 以及其他相关因素。这个问题太模糊了,无法详细回答。
顺便说一句,你的名字是“Dr Unix”确实暗示了一些偏见。
如果做得好,该架构会将大多数瞬态状态卸载到客户端,这使得集群更容易,这使得它具有惊人的可扩展性。所以这是系统作为一个整体的问题,而不是直接在这一点上的 ASP.NET。
我的 2 美分。
好吧,我认为这个网站是在.net 框架上的。微软网站也建立在它之上。所以我认为,如果做得好,.net 网站将会扩展。看看 Jeff 对这个站点所做的一些评论,问题往往来自编码错误或架构问题。
当人们说 .NET 是一个首选平台时,我真的很困扰,因为它“可扩展”,它的可扩展性不亚于任何其他平台:PHP、ColdFusion、JSP 或带有 C++/Delphi 等的本机编译应用程序......这不是框架的一个特性,它是应用程序设计的一个特性。
MySpace 肯定不提倡可扩展性,而是看看 Google 搜索背后的技术或 SETI@home 项目。
.NET 实际上是我最不喜欢使用的平台,因为它在尝试简化软件方面做得太过分了,以至于我想做的事情却做不到,因此试图克服 .NET 的限制会浪费时间使用 C++ 或 PHP 可以轻松快速地实现它。.NET 之于软件开发就像 duplo 积木之于机械工程 - 自尊心强的机械工程师不会希望只使用英寸宽的方块。
如果应用程序需要可扩展,您需要考虑需要在服务器之间共享哪些数据,以及应用程序运行和服务于其目的所需的最少数据是多少。通常可以通过首先使用超高效代码(例如,不是 .NET 或 Java)来避免扩展应用程序的需要,但这通常需要至少对汇编有基本的了解,以及您选择的语言是如何翻译成机器的代码。