Подтвердить что ты не робот

Что входит в создание веб-сайта, который должен масштабироваться?

Я планирую создать приложение, которое получит большой объем трафика. (Пожалуйста, не говорите, что я не получу трафик, это для внутренней сети, поэтому трафик будет там. Просто старайтесь избегать "Вы не получите такой трафик, не беспокойтесь об этом".

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

Какие вещи мне нужно сделать, чтобы они не просто разбивались под нагрузкой большого количества пользователей?

Что станет ограничивающим фактором? База данных? I/O с интерфейсом?

Я никогда не разрабатывал серьезное веб-приложение раньше и ищу какую-то помощь.

EDIT: Я рассматривал возможность использования Erlang для бэкэнда, так как я использовал его немного и действительно люблю все concurrency. Будет ли это жизнеспособным выбором или я должен попробовать что-то более традиционное?

4b9b3361

Ответ 1

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

  • Сохранение состояния сеанса. Очевидно, что хранение сеансов занимает память или дисковое пространство. Вам необходимо иметь стратегию для хранения информации о сеансе должным образом и способом, который может использоваться веб-фермой.

  • Кэширование

    . Прочная стратегия кэширования может значительно снизить нагрузку. Сделайте много исследований относительно того, когда, что и где вы должны кэшировать.

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

  • Оптимизация базы данных. Удостоверьтесь, что вы понимаете, как правильно оптимизировать свою базу данных для тысяч (миллионов?) Операций в минуту. Если ваше приложение сильно загружено, вам может потребоваться хранить старые данные, которые больше не нужно включать в индексы, чтобы ускорить ваши операции записи.

  • Путь обновления. Ваш трафик будет расти с течением времени? Не забудьте понять, как вы подключаете больше серверов и памяти к вашему приложению, если это необходимо, и что потребуется.

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

Ответ 2

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

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

Ответ 3

Что касается Erlang: это звучит как приемлемо хороший язык (основанный на том, что я знаю об этом), но это, конечно, не волшебная палочка, которая дает вам масштабируемость. Здесь нужно учитывать множество факторов и продуктов. Выбор языка является одним из них... и, вероятно, одним из наименее значимых.

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

Ответ 4

Базовое хранилище, обработка базы данных, динамический контент и кеширование - это одно. Рассмотрение вашего поставщика услуг хоста и доступной пропускной способности сети - другое.

Обратитесь к службе хостинга за ограничениями пропускной способности, максимальным объемом памяти для каждого запроса, максимальными размерами загрузки файлов и максимальными запросами базы данных. Если ваш текущий хост не предлагает дешевые услуги, которые соответствуют вашим требованиям к масштабированию, перейдите на другой хост, прежде чем вы либо выключите, либо поймаете offguard с помощью трехзначного ежемесячного счета за пропускную полосу пропускания.

Изменить: просто перечитайте и поймайте ссылку на "внутреннюю сеть". Таким образом, в этом случае вы, вероятно, не будете зацикливаться на несколько сотен долларов своим администратором сети, но они все равно могут вас закрыть. Обязательно поддерживайте линии связи с сетевыми администраторами и администраторами любых других сервисов, с которыми взаимодействует ваш собственный сайт, или вы, скорее всего, сделаете их врагами довольно быстро. Другими словами: хороший сетевой этикет.

Кроме того, если вы действительно являетесь владельцем и создаете сервер, убедитесь, что ОС, стек программного обеспечения и аппаратное обеспечение соответствуют новейшим версиям стабильного программного обеспечения и прошивки, способным обрабатывать нагрузку и контролироваться для бесперебойной работы раз.

Редактировать # 2: Я знаю, что вы спросили конкретно, как ваше приложение может обрабатывать нагрузку, и я могу просто переговариваться вне темы здесь, но вы также должны подумать, можете ли вы и ваши товарищи по команде справиться с нагрузкой. Полоса пропускания рабочей силы столь же важна, и разочарование от рабочей нагрузки - это то, как такие проекты терпят неудачу. Пиво - лучший друг программиста, особенно при решении сложных и творческих задач программирования, но это может привести к серьезным проблемам с употреблением алкоголя, если трудовые ресурсы не будут правильно управляться или нехватки людских ресурсов. Кто будет отвечать на это уведомление об отключении в 3 часа ночи? Кто будет отвечать на халат из религиозных фундаменталистов или троллей или проползать через закон и патенты, чтобы проверить, является ли это выражение о запрете ложным? Если это не концерт, который может оплачивать счета, вероятно, большинство людей не могут потратить много времени и энергии. Я вовсе не хочу вас отговаривать, и, надеюсь, вы уже все это покрыли.

Ответ 5

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