Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LiveJournal.docx
Скачиваний:
1
Добавлен:
13.09.2019
Размер:
83.1 Кб
Скачать

Программное обеспечение

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

Memcached

Залогом быстрой загрузки любой страницы крупного интернет-проекта является кэширование. Но как всегда возникает вопрос: а на каком уровне обработки данных его стоит выполнять? Для динамических страниц недопустимо кэширование на уровне готовых страниц. Можно кэшировать на уровне mod_perl, но по сути это пустая трата оперативной памяти, так как создастся отдельный кэш для каждого потока Apache, и количество промахов мимо кэша будет огромно. Кэширование запросов MySQL или HEAP таблицы также не дали бы требуемого результата ввиду чрезвычайной распределенности базы данных.

Выходом из сложившейся ситуации стало написание собственной распределенной системы кэширования объектов, получившей название memcached. Она позволяет:

  • использовать для кэширования свободную оперативную память практически любого компьютера, задействованного в системе;

  • кэшировать объекты практически любого языка программирования в сериализованном виде: PerlPHPJavaC++ и так далее;

  • использовать для передачи кэшируемых данных простой протокол, не требующий избыточности данных;

  • избегать даже теоретической возможности полного сбоя работы кэшируещей системы в связи с полной равнозначностью серверов;

  • достигать превосходной производительности при формировании HTML-кода страниц;

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

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

Perlbal

При решении вопроса, связанного с балансировкой нагрузки между веб-серверами, пришлось перепробовать далеко не один десяток готовых решений, но, к сожалению, ни один из них не смог удовлетворить все потребности проекта. Не растерявшись, разработчики написали свое решение этой задачи и назвали его Perlbal. Конкурентов у него множество, начиная от решений на уровне оборудования, например от Foundry, заканчивая proxy балансировщиками нагрузки встроенные в более популярные веб-сервера, но, тем не менее, продукт получился достаточно конкурентноспособным. Он удовлетворял всем требованиям, выдвигаемым разработчиками проекта:

  • быстрый;

  • небольшой размер;

  • «сообразительный»;

  • обработка «мертвых» узлов;

  • может выступать как в роли reverse proxy, так и балансировщика нагрузки;

  • базовый функционал классического веб-сервера;

  • реализация внутреннего перенаправления данных;

  • поддержка некоторых менее существенных трюков, реализованных обычно в виде plug-in'ов.

Perlbal не так активно используется вне LiveJournal, по сравнению с memcached, но для решения конкретной задачи он подошел как нельзя лучше.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]