Upload
sportgid
View
121
Download
0
Embed Size (px)
Citation preview
Как снизить нагрузку на высокопосещаемый проект?
Технический директор «Ленвендо»
Виталий Гаврилов
+7 (812) 322-95-87 (Санкт-Петербург) +7 (495) 646-85-55 (Москва) [email protected]
Какими бывают высокопосещаемые ресурсы
тел.: +7 (812) 322-95-87 [email protected]
Высокодинамичные ресурсы
√ Интернет СМИ√ Доски объявлений√ Часть Интернет - магазинов, активно использующих функции
социального маркетинга
Низкодинамичные ресурсы
√ Интернет-магазины√ Интернет-сервисы (например, kupikupon.ru)
Что мы сейчас не рассматриваем
√ Социальные сети, twitter и т.д.√ Системы агрегации динамической информации (например,
news.yandex.ru)
Особенности высокодинамичных ресурсов
тел.: +7 (812) 322-95-87 [email protected]
Высокая (от нескольких обновлений в минуту до сотен обновлений в секунду) скорость обновления информации
Четкое разделение страниц на списки информации, элементы информации, прочие статические страницы с низкой частотой обновления
Возможность выделения полностью динамической и условно статической частей в компоновке html страницы
Использование внешних сервисов (обычно функций предоставляемых соцсетями) для увеличения заинтересованности посетителя
Особенности высокодинамичных ресурсов
тел.: +7 (812) 322-95-87 [email protected]
Особенности низкодинамичных ресурсов
тел.: +7 (812) 322-95-87 [email protected]
Четкое разделение страниц на списки информации и элементы информации
Возможность выделения полностью динамической и условно статической частей в компоновке html страницы
Использование внешних сервисов (обычно функций предоставляемых соцсетями) для увеличения заинтересованности посетителя
Высокие требования к оперативности обновления информации
Особенности низкодинамичных ресурсов
тел.: +7 (812) 322-95-87 [email protected]
Снижение нагрузки на высокодинамичных проектах
тел.: +7 (812) 322-95-87 [email protected]
Разделение контента на полностью динамический и условно статический контент
Перекомпоновка страниц для оптимального использования AJAX
Статическое кеширование условно-статического контента
Снижение нагрузки на низкодинамичных проектах
тел.: +7 (812) 322-95-87 [email protected]
Разделение контента на полностью статический, условно-статический и высокодинамичный контент
Управляемое кеширование условно-статического контента
Способы кеширования статического контента
тел.: +7 (812) 322-95-87 [email protected]
Использование заголовков “Cache-Control” и “Expires”(дает разрешение браузеру не перезапрашивать содержимое страницы, не спасает от «скачков» посещаемости)
Использование кеширующего прокси сервера в связке с заголовками “Cache-Control” и “Expires”(дает устойчивость к «скачкам» посещаемости, не позволяет оперативно управлять обновлением кеша)
Использование управляемого статического кеширования(решает все поставленные задачи)
Управляемое статическое кеширование
тел.: +7 (812) 322-95-87 [email protected]
Посетитель
Internet
FE 1
FE 2
FE K
Посетитель
Посетитель
Посетитель
BE 1
BE 2
BE N
DB1
DB2
DB3
Управляемое статическое кеширование (Сервера FE)
тел.: +7 (812) 322-95-87 [email protected]
Принимают все входящие подключения
Фактически самое ненагруженное звено в обработке запроса посетителя
Не обладает информацией о связи запроса с элементом динамической информации
В большинстве случаев это nginx (www.nginx.ru)
Управляемое статическое кеширование. (Сервера FE)
тел.: +7 (812) 322-95-87 [email protected]
Nginx умеет
Сохранять полученный ответ в файлах по заранее определенному пути (директива proxy_store)
Определять наличие сохраненной копии файла
Отдавать готовые ответы из сохраненных копий
Nginx не умеет
Отслеживать корректность отдаваемых данных
Управляемое статическое кеширование. Суть решения
тел.: +7 (812) 322-95-87 [email protected]
За ведение статического кеша отвечает nginx
Из nginx на уровень приложения (в случае если запрос посетителя обрабатывается приложением, а не берется из закешированной копии, передается путь к файлу, в который будет сохранен ответ (файл кеша))
На уровне приложения информация о связке информационных элементов и файла кеша сохраняется в БД (лучше всего подходят NoSQL базы данных)
При обновлении элемента информации на уровне приложения отдается команда на удаление файлов кеша по обновленному информационному элементу (можно делать это как прямой командой в nginx, который посредством встроенного perl сможет удалять файлы, так и через диспетчер очереди, в случае нескольких FE серверов)
Управляемое статическое кеширование. Суть решения
тел.: +7 (812) 322-95-87 [email protected]
FE 1
Локальный кешЛокальный кеш
BE 1
Посетитель
Redis
Контент-менеджер
FE 2BE 2
AMQP
Обработчик очереди заданий
Удаление файлов
Что не вошло в рамки этой презентации
тел.: +7 (812) 322-95-87 [email protected]
Способы очистки статического кеша и обработка исключительных ситуаций
Как хранить ключи в Redis так, чтобы БД не росла во времени от избытка ключей
Прочие тонкие моменты статического кеширования (сжатый и несжатый контент, заголовки с кодировкой и типом данных и т.д.)
Для чего еще можно использовать данное решение
Как сделать сервисы AMQP и Redis отказоустойчивыми
А как же поисковые системы
тел.: +7 (812) 322-95-87 [email protected]
Весь внешний контент необходимо по максимуму включать в сохраненные в статическом кеше копии страниц
У копии страницы есть время жизни, после которого она удаляется (что приводит к перестроению страницы, и, следовательно, к обновлению данных для поисковых систем)
Необходимо помнить об альтернативных способах передачи информации в поисковые системы (RSS ленты и т.д.)
www.lenvendo.ru
Спасибо за внимание!
тел.: +7 (812) 322-95-87 [email protected]
III место в рейтинге Best in digital 2013
в номинации «Разработка Highload систем»