Насколько хорошо масштабируется .NET?
(Я начну с того, что дам вам понять, что я не .NET-разработчик и не привязан к какой-либо другой среде.)
Недавно я слышал, что Лондонская фондовая биржа ушла целый день. Я также слышал, что программное обеспечение было написано в .NET. До этого момента они будут испытывать хиты производительности в дни напряженного дня. Люди, похоже, обвиняют .NET.
Я не хочу обсуждать эту историю, но она вспомнила вопрос о том, как масштабируется .NET? Насколько большой размер для .NET?
Ответы
Ответ 1
Честно говоря, я думаю, что это сводится к оптимизации кода, кроме как только инфраструктуры.
В StackOverflow Podcast 19 Джефф рассказал о том, как им пришлось настраивать SQL Server для обработки типов загрузок, которые StackOverflow имеет; обратите внимание, что здесь не нужно было настраивать .NET.
Также следует отметить, что MySpace.com, одна из самых массивных социальных сетей, работает на ASP.NET.
Использование ASP.NET только для ASP.NET является свидетельством его масштабируемости. Это сводится к тому, как разработчики будут писать свои приложения таким образом, чтобы лучше использовать эту возможность.
Ответ 2
К сожалению, существует так много других проблем, которые могут привести к тому, что проект будет уменьшаться по мере того, как он масштабируется, что вам нужно много пройти, прежде чем вы сможете перейти к фреймворку. И если вы не сможете увидеть и тщательно проанализировать исходный код, было бы трудно сказать, в чем была главная причина. Я был бы готов поспорить, что это не рамки.
И нет, я не работаю с .NET на ежедневной основе.
Ответ 3
Многие крупные сайты, такие как MySpace, Dell.com работает на asp.net. Кроме того, ознакомьтесь с этой статьей
Ответ 4
Вы можете написать плохой код, который не масштабируется на любом языке.
.Net вполне способна масштабироваться до любого размера системы, но, как и любой другой технический стек, вам нужно создать систему с масштабированием.
LSE опустился на худший возможный день, но по какой-то причине я сомневаюсь, что это был основной стек, который был проблемой. Я подозреваю, что это случай, когда плохие рабочие обвиняют свои инструменты.
Ответ 5
Фактически время простоя на LSE не имело ничего общего с платформой .NET:
LSE заявила, что система была затронута "проблемой подключения" и настаивала на том, что проблема не связана с ее флагманской торговой платформой TradElect.
http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails
Ответ 6
Вот большая толстая книга для вас, чтобы читать по этой теме:
Повышение производительности и масштабируемости .NET приложений (Microsoft Press)
Ответ 7
Dot Net хорошо масштабируется. У нас есть кластеры серверов, на которых запущены сервер IIS и веб-сайты и приложения asp.net, и когда наша загрузка пользователя увеличивается, мы можем добавлять серверы (легко) для увеличения емкости. Это происходит во время определенных событий, а масштабируемость архитектуры .net не подвела нас.
Я бы поставил под угрозу (как и другие), что это не проблема .net.
Ответ 8
Возможно, это был объем транзакции, который сбил биржу.
Хотя многие примеры, приведенные до сих пор, хороши, это просто крупные веб-сайты. (Вы ненавидите меня за то, что говорите "просто" ). Они заполняют страницы и случайное приложение (то есть scrabulous) для пользователей. Процессы фондовой биржи покупают/продают и сопоставляют покупателей/продавцов. Это будет на несколько порядков больше работы для серверов приложений.
Я мог заметить, что базы данных падают, хотя.
Ответ 9
Все это сводится к 3 вещам:
- Насколько хорошо запланировано приложение
- Какова была первоначальная масштабная цель человека, который его построил.
- Текущая работа в ямах для улучшения и масштабирования решения.
Ранее упоминалось MySpace, это факт, что они несколько раз переписали свое приложение, когда они натолкнулись на новый шаг масштабирования (количество пользователей/просмотров страниц и т.д.). Если они решили построить последнюю версию для начала, было бы слишком дорого поддерживать и не было экономически выгодно - масштабируемость должна основываться на текущей позиции и следующей цели масштабирования.
Одна из последних вещей - хотя это часто считается уклончивым, тщательное стресс-тестирование может дать вам хорошую картину того, как ваше приложение имеет дело с нагрузкой, на которую вы нацеливаетесь, прежде чем ваши пользователи испытают ее и ударят по бедствиям.
Ответ 10
Как говорили другие люди - это не вопрос платформы.
Важно то, что архитектура вашего приложения - балансировка нагрузки, управление состоянием, разделение и т.д. Это не зависит от платформы.
Ответ 11
Поздняя новость...
"TradElect - технология торговой платформы для групп, которая должна быть заменена в конце этого года программным обеспечением, разработанным MillenniumIT, поставщиком технологий Шри-Ланки, принадлежащим LSE"....
http://www.efinancialnews.com/story/2010-09-13/ex-lse-tech-chief-joins-green-investment-company
"Эта транзакция позволяет Группе внедрить новые, более гибкие, инновационные и эффективные ИТ-возможности для нашего будущего развития бизнеса, а также запустить новую платформу для торговли наличными, которая обеспечит существенно более низкую задержку, значительно более высокую пропускную способность и улучшенную масштабируемость"....
http://www.computerworlduk.com/news/it-business/16590/london-stock-exchange-buys-millennium-it-trading-platform-supplier/
Ответ 12
Почему .NET имеет какие-либо ограничения по размеру, которые не имели бы другие платформы?
Я не могу представить ситуацию, когда вы собираетесь "слишком большой" для .NET.
Однако вы действительно должны указать, говоришь ли вы о приложении winforms.NET или ASP.NET, а также о других соответствующих факторах. Этот вопрос слишком расплывчато, чтобы когда-либо отвечать подробно.
Тот факт, что ваше имя является "Dr Unix", подразумевает некоторый уклон, кстати.
Ответ 13
Сделано правильно, архитектура выгружает большинство переходных состояний на клиент, что упрощает кластеризацию, что делает его удивительно масштабируемым. Таким образом, это проблема системы в целом, в отличие от ASP.NET непосредственно в этот момент.
Мои 2 цента.
Ответ 14
Ну, я думаю, что этот сайт находится в среде .net. Кроме того, на нем построены сайты Microsoft. Поэтому я думаю, что если сделать правильно, то сайт .net будет масштабироваться. Посмотрите на некоторые из комментариев, высказанных Джеффом об этом сайте, и проблемы, как правило, приводят к ошибкам кодирования или проблемам архитектуры.
Ответ 15
Я запускаю относительно большой сайт asp.net и нашел, что он отлично масштабируется. Конечно, многое из этого я объясняю наличием отличных инструментов для диагностики и устранения узких мест в коде. Я бы рискнул догадаться, что проблемы с кодированием вызывают 99,99% проблем, которые люди имеют в любых рамках.
Ответ 16
Это действительно беспокоит меня, когда люди говорят, что .NET - это платформа выбора, потому что "ее масштабируемая", ее не более или менее масштабируемая, чем любая другая платформа: PHP, ColdFusion, JSP или собственные скомпилированные приложения с С++/Delphi и т.д. Масштабируемость не является особенностью фреймворка, это особенность дизайна приложения.
MySpace, безусловно, не защищает масштабируемость, а вместо этого смотрит на технологию поиска Google или проект SETI @home.
.NET на самом деле является моей наименее любимой платформой для работы, потому что она слишком зашла слишком далеко, пытаясь упростить программное обеспечение, настолько, что есть вещи, которые я хочу сделать, чего не могу, и поэтому пытаюсь преодолеть .NET. ограничения теряют время, когда это было бы легко и быстро достигнуто с помощью С++ или PHP..NET - это разработка программного обеспечения, для чего используются кирпичи дублоков для машиностроения - ни один уважающий себя инженер-механик не захочет использовать только квадратные квадраты размером в дюйм.
Если требуется масштабируемое приложение, вам нужно подумать о том, какие данные должны быть распределены между серверами, и каковы минимальные данные, необходимые для запуска и обслуживания приложения. Необходимость масштабирования приложения часто можно избежать, если в первую очередь использовать суперэффективный код (например, не .NET или Java), но это обычно требует базового понимания сборки по крайней мере и того, как ваш выбранный язык переводится на машину код.