170 likes | 387 Views
Как снизить нагрузку на высокопосещаемый проект?. Технический директор « Ленвендо » Виталий Гаврилов. +7 (812) 322-95-87 (Санкт-Петербург) +7 (495) 646-85-55 (Москва) info@lenvendo.ru. Какими бывают высокопосещаемые ресурсы. Высокодинамичные ресурсы Интернет СМИ Доски объявлений
E N D
Как снизить нагрузку на высокопосещаемый проект? Технический директор «Ленвендо» Виталий Гаврилов +7 (812) 322-95-87 (Санкт-Петербург) +7 (495) 646-85-55 (Москва) info@lenvendo.ru
Какими бывают высокопосещаемые ресурсы • Высокодинамичные ресурсы • Интернет СМИ • Доски объявлений • Часть Интернет - магазинов, активно использующих функции социального маркетинга • Низкодинамичные ресурсы • Интернет-магазины • Интернет-сервисы (например,kupikupon.ru) • Что мы сейчас не рассматриваем • Социальные сети, twitter и т.д. • Системы агрегации динамической информации (например,news.yandex.ru) тел.: +7 (812) 322-95-87 info@lenvendo.ru
Особенности высокодинамичных ресурсов • Высокая (от нескольких обновлений в минуту до сотен обновлений в секунду) скорость обновления информации • Четкое разделение страниц на списки информации, элементы информации, прочие статические страницы с низкой частотой обновления • Возможность выделения полностью динамической и условно статической частей в компоновке html страницы • Использование внешних сервисов (обычно функций предоставляемых соцсетями) для увеличения заинтересованности посетителя тел.: +7 (812) 322-95-87 info@lenvendo.ru
Особенности высокодинамичных ресурсов тел.: +7 (812) 322-95-87 info@lenvendo.ru
Особенности низкодинамичных ресурсов • Четкое разделение страниц на списки информации и элементы информации • Возможность выделения полностью динамической и условно статической частей в компоновке html страницы • Использование внешних сервисов (обычно функций предоставляемых соцсетями) для увеличения заинтересованности посетителя • Высокие требования к оперативности обновления информации тел.: +7 (812) 322-95-87 info@lenvendo.ru
Особенности низкодинамичных ресурсов тел.: +7 (812) 322-95-87 info@lenvendo.ru
Снижение нагрузки на высокодинамичных проектах • Разделение контента на полностью динамический и условно статический контент • Перекомпоновка страниц для оптимального использования AJAX • Статическое кеширование условно-статического контента тел.: +7 (812) 322-95-87 info@lenvendo.ru
Снижение нагрузки на низкодинамичных проектах • Разделение контента на полностью статический, условно-статический и высокодинамичный контент • Управляемое кешированиеусловно-статического контента тел.: +7 (812) 322-95-87 info@lenvendo.ru
Способы кеширования статического контента • Использование заголовков “Cache-Control” и “Expires”(дает разрешение браузеру не перезапрашивать содержимое страницы, не спасает от «скачков» посещаемости) • Использование кеширующего прокси сервера в связке с заголовками “Cache-Control” и “Expires”(дает устойчивость к «скачкам» посещаемости, не позволяет оперативно управлять обновлением кеша) • Использование управляемого статического кеширования(решает все поставленные задачи) тел.: +7 (812) 322-95-87 info@lenvendo.ru
Управляемое статическое кеширование тел.: +7 (812) 322-95-87 info@lenvendo.ru
Управляемое статическое кеширование (Сервера FE) • Принимают все входящие подключения • Фактически самое ненагруженное звено в обработке запроса посетителя • Не обладает информацией о связи запроса с элементом динамической информации • В большинстве случаев это nginx (www.nginx.ru) тел.: +7 (812) 322-95-87 info@lenvendo.ru
Управляемое статическое кеширование. (Сервера FE) • Nginx умеет • Сохранять полученный ответ в файлах по заранее определенному пути (директива proxy_store) • Определять наличие сохраненной копии файла • Отдавать готовые ответы из сохраненных копий • Nginxне умеет • Отслеживать корректность отдаваемых данных тел.: +7 (812) 322-95-87 info@lenvendo.ru
Управляемое статическое кеширование. Суть решения • За ведение статического кеша отвечает nginx • Из nginx на уровень приложения (в случае если запрос посетителя обрабатывается приложением, а не берется из закешированной копии, передается путь к файлу, в который будет сохранен ответ (файл кеша)) • На уровне приложения информация о связке информационных элементов и файла кеша сохраняется в БД (лучше всего подходят NoSQL базы данных) • При обновлении элемента информации на уровне приложения отдается команда на удаление файлов кеша по обновленному информационному элементу (можно делать это как прямой командой в nginx, который посредством встроенного perl сможет удалять файлы, так и через диспетчер очереди, в случае нескольких FE серверов) тел.: +7 (812) 322-95-87 info@lenvendo.ru
Управляемое статическое кеширование. Суть решения тел.: +7 (812) 322-95-87 info@lenvendo.ru
Что не вошло в рамки этой презентации • Способы очистки статического кеша и обработка исключительных ситуаций • Как хранить ключи в Redis так, чтобы БД не росла во времени от избытка ключей • Прочие тонкие моменты статического кеширования (сжатый и несжатый контент, заголовки с кодировкой и типом данных и т.д.) • Для чего еще можно использовать данное решение • Как сделать сервисы AMQP и Redis отказоустойчивыми тел.: +7 (812) 322-95-87 info@lenvendo.ru
А как же поисковые системы • Весь внешний контент необходимо по максимуму включать в сохраненные в статическом кеше копии страниц • У копии страницы есть время жизни, после которого она удаляется(что приводит к перестроению страницы, и, следовательно, к обновлению данных для поисковых систем) • Необходимо помнить об альтернативных способах передачи информации в поисковые системы (RSS ленты и т.д.) тел.: +7 (812) 322-95-87 info@lenvendo.ru
Спасибо за внимание! www.lenvendo.ru III место в рейтинге Best in digital 2013 в номинации«Разработка Highloadсистем» тел.: +7 (812) 322-95-87 info@lenvendo.ru