(我首先要说清楚,我不是.NET开发人员,也不依赖于任何其他环境。)
最近,我听说伦敦证券交易所下跌了一整天。我也听说过该软件是用.NET编写的。到目前为止,他们将在繁忙的日子里遇到性能点击。人们似乎在谴责.NET。
我不想辩论这个故事,但是它让我想到了.NET如何扩展的问题? .NET有多大?
答案 0 :(得分:25)
老实说,我认为除了基础设施之外,它归结为代码优化。
在StackOverflow Podcast 19中,Jeff讨论了他们如何调整SQL Server以处理StackOverflow所具有的负载类型;请注意,这里不需要调整.NET。
还必须注意MySpace.com, one of the most massive social networks out there, runs on ASP.NET。
MySpace单独使用ASP.NET就证明了它的可扩展性。它将归结为开发人员如何以最佳利用该功能的方式编写应用程序。
答案 1 :(得分:13)
不幸的是,还有很多其他问题可能会导致项目随着规模的扩大而下降,在你可以归结为一个框架之前,你需要花很多时间来解决这个问题。除非您能够看到并彻底分析源代码,否则很难说出根本原因是什么。我愿意打赌它不是框架。
不,我每天都不使用.NET。
答案 2 :(得分:7)
许多大型网站如MySpace,Dell.com都在asp.net上运行。另外,请查看此MSDN article,其中提供了专家的良好视角。
答案 3 :(得分:6)
您可以编写无法以任何语言扩展的错误代码。
.Net能够扩展到任何规模的系统,但是,与任何其他技术堆栈一样,您必须在构建系统时考虑到扩展。
LSE在可能的最糟糕的一天下跌,但无论出于何种原因,我怀疑底层堆栈是否是问题。我怀疑这是一个贫穷的工人责备他们的工具的案例。
答案 4 :(得分:5)
这是一本很棒的书,供你阅读这个主题:
Improving .NET Application Performance and Scalability(微软出版社)
答案 5 :(得分:5)
实际上,LSE的停机时间与它的.NET交易平台完全无关:
伦敦证券交易所称该系统受到“连接问题”的影响,并坚称问题不在于其旗舰TradElect交易平台。
http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails
答案 6 :(得分:2)
Dot Net很好地扩展。我们有运行IIS服务器和asp.net网站和应用程序的服务器集群,当我们的用户负载增加时,我们可以(轻松地)添加服务器以增加容量。这种情况发生在某些事件中,而.net架构的可扩展性并没有让我们失望。
我会冒险猜测(正如其他人一样)这不是.net问题。
答案 7 :(得分:1)
也许正是交易量降低了交易所。
虽然到目前为止给出的许多例子都很好,但它们只是大型网站。 (你讨厌我说“只是”)他们向用户发出页面和偶尔的应用程序(即scrabulous)。证券交易所流程购买/出售并匹配买家/卖家。对于应用服务器来说,这将会增加几个数量级的工作量。
我可以看到数据库倒塌了。
答案 8 :(得分:1)
这一切归结为三件事:
MySpace之前曾被提到,事实上,当他们达到新的缩放步骤(用户/浏览量/等)时,他们已经重写了几次应用程序。如果他们选择构建最后一个版本,那么维护成本太高并且不具成本效益 - 可扩展性应该基于当前位置和下一个规模目标。
最后一件事 - 虽然它通常被认为是回避性的,但是可靠的压力测试可以让您很好地了解应用程序如何处理您在用户体验和灾难发生之前所针对的负载。
答案 9 :(得分:1)
正如其他人所说 - 这不是平台问题。
重要的是应用程序的体系结构 - 负载平衡,状态管理,分区等......这些不是特定于平台的。
答案 10 :(得分:1)
后来的新闻......
“TradElect,该集团的交易平台技术将于今年晚些时候由伦敦证券交易所所拥有的斯里兰卡技术供应商MillenniumIT开发的软件取代。” ...
http://www.efinancialnews.com/story/2010-09-13/ex-lse-tech-chief-joins-green-investment-company
“此交易使集团能够为我们未来的业务发展实施新的,更灵活,更具创新性和效率的IT功能,以及运行新的现金交易平台,该平台将提供更低的延迟,更高的容量和更高的可扩展性“......
答案 11 :(得分:0)
为什么.NET对其他平台不具备的大小有任何限制? 我无法想象你会为.NET变得“太大”的任何情况。 但是,您应该确定是否要讨论.NET winforms应用程序或ASP.NET以及其他相关因素。这个问题太过模糊,无法详细回答。
你的名字是'Dr。Unix',这确实意味着一些偏见,顺便说一句。
答案 12 :(得分:0)
如果做得好,该架构会将大多数瞬态状态卸载到客户端上,这使得集群变得更容易,这使得它具有令人惊讶的可扩展性。所以这是整个系统的一个问题,而不是直接在那时的ASP.NET。
我的2美分。
答案 13 :(得分:0)
嗯,我认为这个网站是在.net框架上。此外,Microsoft站点也是基于它构建的。所以我认为如果做得好,那么.net网站就会扩展。看看Jeff对这个网站所做的一些评论,问题往往是编码错误或架构问题。
答案 14 :(得分:0)
我运行一个相对较大的asp.net网站,并发现它可以很好地扩展。当然,我认为有很多很好的工具来诊断和修复代码中的瓶颈。我冒昧地猜测,编码问题导致人们在任何框架中遇到99.99%的问题。
答案 15 :(得分:-3)
当人们说.NET是一个可选择的平台时,它真的让我感到困扰,因为“它具有可扩展性”,它的可扩展性不低于任何其他平台:PHP,ColdFusion,JSP或使用C ++ / Delphi等的本机编译应用程序。可伸缩性不是框架的一个特性,它是应用程序设计的一个特性。
MySpace当然不是可扩展性的倡导者,而是关注Google搜索或SETI @ home项目背后的技术。
.NET实际上是我最不喜欢使用的平台,因为它在尝试简化软件方面走得太远,以至于有些东西我想要它不能做,所以试图克服.NET限制浪费了使用C ++或PHP轻松快速实现的时间。 .NET是软件开发的重要组成部分 - 机械工程 - 没有自尊的机械工程师会想要仅限于使用英寸宽的方块。
如果应用程序需要可扩展,您需要考虑需要在服务器之间共享哪些数据,以及应用程序运行和服务其目的所需的最低数据是多少。通常可以通过首先使用超高效的代码(例如,不是.NET或Java)来避免扩展应用程序的需要,但这通常需要至少基本了解程序集以及如何将所选语言转换为机器代码。