Главная > Опыт > Масштабирование в Web - опыт Ebay

Масштабирование в Web - опыт Ebay

ebay - масштабирование, архитектура

Ebay - один из самых больших интернет проектов сегодня во всех смыслах, в том числе и по техническим показателям. Рэнди Шуп, архитектор проекта, делится опытом в вопросах масштабирования. Он подготовил отличную презентацию, в которой касается не только практических вопросов, но и общих принципов “того, как нужно думать при построении крупных масштабируемых систем”.

Статистика Ebay

Для начала, некоторые поразительные показатели проекта:

  • Более 89 миллионов активных пользователей
  • 190 миллионов товаров в 50 тыс. категорий
  • Более 8 миллиардов URL запросов в день
  • Большая динамика развития - сотни новых функциональных улучшений каждые 3 месяца
  • 39 стран, 9 языков, 24 часа в сутки, 7 дней в неделю, круглый год
  • 70 миллиардов операций чтения/записи в день
  • Обработка 50 Тб данных в день
  • Анализ 50 Пб данных каждый день

10 главных уроков из опыта Ebay

  1. Партиционируйте все, что только можно. Если Вы не сможете что-то делить, Вы не сможете это масштабировать. Делите все на управляемые функциональный и информационные сектора.
  2. Асинхронность везде. Пользуйтесь очередями для отработки асинхронных задач.
  3. Автоматизируйте все. Все компоненты системы должны самообучаться и подстраиваться под нужды.
  4. Следите за провалами и узкими местами. Нужно мониторить все.
  5. Думайте о том, как обеспечить доступность, даже если некоторые компоненты системы не работают
  6. Эволюция (и даже революция) не обратима. Изменения - это постоянный процесс, планируйте расширение и последовательное внедрение изменений
  7. Зависимости важны. Минимизируйте и контролируйте их, используйте абстракцию и виртуализацию.
  8. Определяйте важность компонент и данных. Зная это, устанавливайте приоритеты задач.
  9. Сохраняйте как можно больше данных, это важно для анализа и прогнозирования.
  10. Максимизируйте утилизацию всех ресурсов системы, не давайте простаивать ресурсам.

Презентация

Самое интересное - это презентация, которая содержит в себе все выше перечисленные моменты с детальными комментариями. Скачать презентацию:

ebay-presentation

Google Bookmarks Digg I.ua Ru-marks Ruspace Zakladok.net Reddit delicious Technorati Yahoo My Web News2.ru БобрДобр.ru Memori.ru rucity.com

Статьи по теме

  1. Stas
    20 Ноябрь 2009 в 03:59 | #1

    вот бы понять, что пункт 7 значит

  2. 20 Ноябрь 2009 в 13:10 | #2

    @Stas
    Это значит, что зависимостей нужно избегать, а компоненты нужно делать максимально автономными. Например, если Главная страница сайта подтягивает RSS, то ее работа не должна быть прервана, когда не будет доступен RSS источник.
    Существуют также зависимости в коде, которые также нужно минимизировать. Пример, когда один программный модуль зависит от пяти других, и для внесения изменений в этот модуль, необходимо вносить изменения в остальные пять и наоборот.
    Пример более глубокой зависимости - работа с хранилищем. Если у Вас есть прямая зависимость от типа хранилища, Вы не сможете принимать гибких решений, быстро переехать на другое хранилище, либо изменить его структуру. В таких случаях и нужна абстракция либо виртуализация.

  1. Пока что нет уведомлений.