Highload

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

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

  • Scaling with memcached

    Краткий обзор возможностей масштабирования которые даёт использование memcached.

    09 сентября 2007
  • YouTube Architecture

    Заметки по архитектуре YouTube. Что хотелось бы отметить:

    • Используют JIT, а именно Python + psyco.
    • Используют lighttpd.
    • Большие проблемы с поддержкой статических картинок. В принципе традиционно, но здесь столкнулись ещё и с ограничениями на количество файлов в директории. Также кеширование такого количества файлов занимает часы. Соответственно, добавить новую машину для масштабирования также не просто (долго, по крайней мере). Решили проблему использованием BigTable - распределённой системы от Google (она же поддерживает и кеш).

    Также интересны намеченные направления деятельности: серьёзные оптимизации database - использования всех доступных средств как на уровне базы, выше: кеширование, sharding.

    Автор делает следующие выводы:

    • Нужно уметь рисковать, используя некоторые интересные, но рискованные трюки для оперативной оптимизации, пока вы работаете над log-term оптимизацией.
    • Нужно уметь расставлять приоритеты, т.е. понимать, что для вашего сервиса нужнее всего именно сейчас.
    • В своих сервисах нужно использовать внешние сервисы - нельзя сделать всё сразу.
    • Система должна оставаться простой, иначе она очень быстро станет чрезвычайно дорогой в обслуживании, и развитие её будет затруднено.
    • Нужно применять sharding, т.е. размазывать данные и функционал по большому количеству серверов, при этом не делая систему зависимой от доступности этих данных и функционала.
    • Нужно постоянно оптимизировать "узкие места": software (database, caching), ОС (disk I/O), hardware (memory, raid).
    • Команда, которая понимает стратегию и тактику развития проекта - большая часть успеха сервиса.

    07 августа 2007

Текущие тэги

  • Термин architecture здесь используется в значении архитектура программных систем.

  • Кеширование - одна из многих технологических уловок, которые могут применяться для увеличения производительности программных систем.

  • High Availability (HA), т.е. высокая доступность, требование, которое применяется к сервисам и программам, сбой или простой которых приводит к непоправимым последствиям. Основным средством достижения High Availability является кластеризация.

  • memcached (произносится как mem-cache-dee) - это фреймворк для кеширования данных. Задачи: снижение нагрузки на database, масштабирование приложений, увеличение надёжности приложений, за счёт многократного повторения кеширующих узлов.