Насколько хорошо .NET масштабируется?

(Я начну с того, что поясню, что я не разработчик .NET и не привязан к какой-либо другой среде.)

Недавно я услышал, что Лондонская фондовая биржа обрушилась на целый день. Я также слышал, что программное обеспечение было написано на .NET. До этого момента в загруженные дни их производительность снижалась. Кажется, люди обвиняют .NET.

Я не хочу обсуждать эту историю, но она напомнила о том, как масштабируется .NET? Насколько велико для .NET?

Я недавно разговаривал с компанией ... они перешли на Java, но не из-за недостаточной масштабируемости .NET, а в большей степени из-за чрезмерной масштабируемости ... лицензионных сборов. Этому небольшому стартапу нужно было потратить более миллиона долларов, чтобы не добиться единой точки отказа для своего критически важного приложения. :(

Thomas W 17.11.2013 02:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
1
3 809
16

Ответы 16

К сожалению, существует так много других проблем, которые могут привести к ухудшению проекта по мере его масштабирования, что вам придется многое преодолеть, прежде чем вы сможете обвинить фреймворк. И если вы не сможете увидеть и тщательно проанализировать исходный код, будет трудно сказать, в чем была основная причина. Готов поспорить, что это была не структура.

И нет, я не работаю с .NET каждый день.

Почему у .NET были какие-то ограничения по размеру, которых не было бы на других платформах? Я не могу представить себе ситуацию, когда вы станете «слишком большим» для .NET. Однако вам действительно следует указать, говорите ли вы о приложении .NET winforms или ASP.NET, а также о других соответствующих факторах. Этот вопрос слишком расплывчатый, чтобы дать подробный ответ.

Кстати, то, что вас зовут Dr Unix, подразумевает некоторую предвзятость.

Тот факт, что его зовут «Dr Unix», должен означать, если вообще что-либо, что он хорошо разбирается в Unix, но трудно думать, что это подразумевает какое-либо предубеждение за или против .NET. Только мои 2 цента.

Brian Ensink 11.09.2008 01:04

Вопрос Dr.UNix о масштабируемости .NET, приводящий отрицательный пример, является необъективным. Как бы ты это ни выразился, Брайан.

Andrei Rînea 08.10.2008 02:07

Многие крупные сайты, такие как Мое пространство, Dell.com, работают на asp.net. Также обратите внимание на этот Статья MSDN, который дает хорошую точку зрения экспертов.

Если все сделано правильно, архитектура перекладывает большинство переходных состояний на клиента, что упрощает кластеризацию и делает ее на удивление масштабируемой. Таким образом, в этот момент это проблема Системы в целом, а не ASP.NET.

Мои 2 цента.

Что ж, я думаю, что этот сайт находится на платформе .net. На нем также построены сайты Microsoft. Поэтому я думаю, что если все будет сделано правильно, то сайт .net будет масштабироваться. Посмотрите некоторые комментарии Джеффа об этом сайте, и их проблемы, как правило, связаны с ошибками кодирования или проблемами архитектуры.

Честно говоря, я думаю, что все сводится к оптимизации кода, помимо инфраструктуры.

В Подкаст StackOverflow 19 Джефф рассказал о том, как им пришлось настроить SQL Server для обработки нагрузок, которые имеет StackOverflow; обратите внимание, что здесь требовалась не настройка .NET.

Также следует отметить, что MySpace.com, одна из самых массовых социальных сетей, работает на ASP.NET..

Использование MySpace только ASP.NET свидетельствует о его масштабируемости. Все сводится к тому, как разработчики будут писать свои приложения таким образом, чтобы максимально использовать эту возможность.

Кашель I am not sure I would defend anything using MySpace as an example.
GEOCHET 10.09.2008 22:09
Кашель MySpace may suck as a place for social networking (as they say, it is the trailer park of social networks), but it делает have a lot of traffic and seems to handle it quite well, regardless of what you think of it.
Jason Bunting 10.09.2008 23:22

@RichB, я использую MySpace только ради трафика, и ничего больше: p Принеси немного сиропа от кашля!

Jon Limjap 11.09.2008 03:51

Да, StackOverflow написан на C# / .NET и является очень успешным примером крупномасштабного сайта.

Thomas W 17.11.2013 01:57

Возможно, именно объем транзакций обрушил биржу.

Хотя многие примеры, приведенные до сих пор, хороши, это всего лишь крупные веб-сайты. (Вы ненавидите меня за то, что я говорю «просто»). Они раздают пользователям страницы и случайные приложения (например, скребковые). Фондовая биржа обрабатывает покупки / продажи и сопоставляет покупателей / продавцов. Это на несколько порядков больше работы для серверов приложений.

Я видел, как базы данных падают.

MySpace заставляет людей быстро добавлять и читать в течение всего дня. Это не просто приложение для обслуживания страниц и скрабов.

Brian Warshaw 11.09.2008 00:32

Что ж, .NET хорошо подходит для сред HTP. Причина, по которой произошел сбой обмена, не должна быть связана с .NET ... скорее с архитектурой. Однако, насколько мне известно, архитектура основана на обмене сообщениями, поэтому она должна хорошо масштабироваться при добавлении дополнительных узлов.

flalar 14.04.2009 01:55

Dot Net хорошо масштабируется. У нас есть кластеры серверов, на которых запущен сервер IIS, а также веб-сайты и приложения asp.net, и когда наша пользовательская нагрузка увеличивается, мы можем добавлять серверы (легко) для увеличения емкости. Это происходит во время определенных событий, и масштабируемость архитектуры .net нас не подвела.

Я бы рискнул предположить (как и другие), что это не проблема .net.

Вот вам большая толстая книга по этой теме:

Повышение производительности и масштабируемости приложений .NET (Microsoft Press)

Это действительно хорошая книга. Его надо преподавать в университете.

Peter Wone 17.09.2009 04:53

Вы можете написать плохой код, который не масштабируется ни на одном языке.

.Net вполне может масштабироваться до любого размера системы, но, как и в случае с любым другим технологическим стеком, вы должны строить систему с учетом масштабирования.

LSE упала в худший из возможных дней, но по какой бы то ни было причине я сомневаюсь, что проблема заключалась в основном стеке. Я подозреваю, что это случай, когда плохие рабочие обвиняют свои инструменты.

На самом деле простои на LSE не имели абсолютно никакого отношения к торговой платформе .NET:

The LSE said the system had been hit by a "connectivity issue" and insisted that the problem did not lie with its flagship TradElect trading platform.

http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails

Так кто-то буквально за провод дернул? В этом случае любая технология «потерпела бы неудачу».

Andrei Rînea 08.10.2008 02:09

Все сводится к трем вещам:

  • Насколько хорошо спланировано приложение
  • Какова была первоначальная масштабная цель человека, который ее построил
  • Постоянные работы в ямах для улучшения и масштабирования решения.

MySpace упоминался ранее, это известный факт, что они переписывали свое приложение несколько раз, когда переходили на новый шаг масштабирования (количество пользователей / просмотров страниц и т. д.). Если бы они решили создать последнюю версию для начала, это было бы слишком дорого в обслуживании и было бы нерентабельно - масштабируемость должна основываться на текущем положении и следующей цели масштабирования.

И последнее: хотя его часто считают уклончивым, надежное стресс-тестирование может дать вам хорошее представление о том, как ваше приложение справляется с нагрузкой, к которой вы стремитесь, до того, как ваши пользователи испытают это и случится катастрофа.

Как говорили другие, дело не в платформе.

Важна архитектура вашего приложения - балансировка нагрузки, управление состоянием, секционирование и т. д. Они не зависят от платформы.

Меня действительно беспокоит, когда люди говорят, что .NET - это предпочтительная платформа, потому что она «масштабируема», она не более или менее масштабируема, чем любая другая платформа: PHP, ColdFusion, JSP или собственные скомпилированные приложения с C++ / Delphi и т. д. Это особенность фреймворка, это особенность дизайна приложения.

MySpace, конечно, не сторонник масштабируемости, вместо этого посмотрите на технологию, лежащую в основе поиска Google, или на проект SETI @ home.

На самом деле .NET - моя наименее любимая платформа для работы, потому что она зашла слишком далеко в попытках упростить программное обеспечение, настолько, что есть вещи, которые я хочу сделать, а она не может, и поэтому попытки преодолеть ограничения .NET тратят время где это было бы легко и быстро сделать с помощью C++ или PHP. .NET для разработки программного обеспечения - это то же самое, что duplo bricks для машиностроения - ни один уважающий себя инженер-механик не захочет ограничиваться квадратными блоками шириной в дюйм.

Если приложение должно быть масштабируемым, вам нужно подумать о том, какие данные должны быть разделены между серверами, и какие минимальные данные необходимы для того, чтобы приложение работало и служило своей цели. Необходимости масштабирования приложения часто можно избежать, имея в первую очередь сверхэффективный код (например, не .NET или Java), но для этого обычно требуется базовое понимание сборки, по крайней мере, и того, как выбранный вами язык переводится на машину. код.

Я несколько не согласен с тем, что масштабируемость является особенностью фреймворка, а не особенностью дизайна приложения. Скомпилированный язык будет лучше масштабироваться (ну, по крайней мере, использовать меньше ресурсов), чем язык сценариев, такой как PHP. Ruby сейчас очень популярен, но также имеет некоторые проблемы с масштабируемостью потенциал, поскольку он однопоточный. Я уверен, что меня заинтересует этот вопрос, потому что, конечно, есть способы справиться с этим.

ChickenMilkBomb 17.09.2009 04:52

Инфраструктура может предоставлять функции, позволяющие разрабатывать масштабируемые приложения, или может опускать такие функции и препятствовать разработке таких приложений.

John Saunders 17.09.2009 05:00

Я думаю, вы обнаружите, что PHP (несмотря на то, что он написан в сценариях) может превзойти ASP.NET в достижении того же результата, потому что ASP.NET имеет очень дорогие накладные расходы на создание серверной DOM для каждой отображаемой страницы. Трудно найти объективные тесты, поэтому я могу только предложить вам проверить их на себе на предмет веских доказательств - я это сделал. Не поймите меня неправильно, я всегда предпочитаю C++ для повышения производительности, PHP имеет свое место, и .NET тоже. Дело в том, что многие люди защищают .NET из ложных убеждений; что .NET более масштабируема или более производительна, чем что-либо еще.

John W 18.09.2009 02:20

Я запустил относительно большой сайт asp.net и обнаружил, что он отлично масштабируется. Конечно, большую часть этого я приписываю наличию отличных инструментов для диагностики и исправления узких мест в коде. Рискну предположить, что проблемы с кодированием вызывают 99,99% проблем, которые возникают у людей во фреймворке любой.

Позже новости ...

«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/

Другие вопросы по теме