Распределенная Архитектура LAMP приложений Петр Зайцев Директор, Percona Ltd. pz@mysqlperformanceblog.com.

Презентация:



Advertisements
Похожие презентации
Оптимизация MySQL Петр Зайцев Директор, Percona Ltd.
Advertisements

Большой Drupal Клера Виленская. Производительность на одном сервере 99 пользователей: 80% аутентифицированных 30% добавляют контент зарегистрировано 1000.
Поддержка кластерных решений и разделения модулей на разные базы данных Максим, Смирнов программист.
Построение системного ландшафта для высоко нагруженного проекта ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор тел.: +7 (812)
Разработка высоконагруженных проектов Олег Бунин.
Архитектура новой почты Рамблера Андрей Шетухин. Rambler Mail сегодня 240 тысяч новых регистраций в день 66 миллионов пользователей 20 миллионов живых.
Использование MySQL в сервисе дневников LiveInternet.ru Практика, практика, практика Гурьянов Андрей, программист Новиков Лев, системный администратор.
Веб-кластер, планы по развитию, распределенный веб-кластер Максим Смирнов ведущий разработчик.
Разработка многопользовательских онлайн игр. Архитектура Dozory.ru и Chernovik-online.ru Лекция 3.
Разработка высоконагруженных проектов (например – сайтов для сообществ) Олег Бунин.
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования Александр Демидов руководитель направления арендных.
Территориально распределенная поисковая система.
Microsoft TechDays Пронькин Дмитрий MCSE, MCITP, MCT.
1С-Битрикс: Управление сайтом 10.0 Веб-кластер.
РАЗРАБОТКА ВЫСОКОНАГРУЖЕННЫХ WEB- ПРИЛОЖЕНИЙ inln.ru Кондратьев Денис.
Архитектура Яндекс.Поиска v 1.04 Анатолий Орлов Сентябрь 2007 – Май 2008.
Веб-кластер 1С-Битрикс – примеры работающих проектов Александр Сербул Руководитель направления контроля качества интеграции и внедрений ООО «1С-Битрикс»
Разгони свой сайт Лекция 1: Особенности клиентской оптимизации Мациевский Николай 1 / 23 webo.in.
Сергей Рыжиков генеральный директор компании «1С-Битрикс» Архитектура и запуск SaaS решения в Amazon AWS. Как обеспечить реальные 24?
Тема 3 Рассматриваемые вопросы 1. Классификация сетей 2. Назначение сетей 3. Компоненты вычислительных сетей 4. Топологии сетей 5. Архитектура сетей.
Транксрипт:

Распределенная Архитектура LAMP приложений Петр Зайцев Директор, Percona Ltd.

Немного о Докладчике Percona Ltd – Консалтинг в области производительности MySQL LAMP MySQL Inc – Консалтинг, Поддержка, Работа с партнерами по вопросам производительности SpyLOG.RU – Один из основателей, Тех. Директор в далеком 1999

Немного о Докладе Введение в Архитектуру LAMP приложений –Что можно успеть рассказать за 20 минут Принципы построения архитектур Проблемы роста Успешные архитектуры крупных проектов Фокус на MySQL

Два типа Приложений Скромные стартапы –Один человек с классной идеей –Начинаются с одного сервера, простая архитектура –Требуется быстрый рост в случае успеха Рожденные крупными –Yahoo открывает новый проект –Строятся для большой нагрузки с первого дня

Типичные этапы масштабирования MySQL Одна Машина Репликация –Для надежности и производительности Распределение по ролям/типам данных Горизонтальный партишенинг

Просто репликация Плюсы –Просто использовать – пишем на мастер читаем со слейвов –Надежность – можно использовать один из слейвов если мастер падает Минусы – Запись не масштабируется –Много слейвов – много копий данных –Не эффективное использование кэша

Оптимизация использования кэша Обращение к разным слейвам за разными данными –четные пользователи на одном не четные на другом Надо учаесть что кэшируются страницы Средняя эффективность особенно при интенсивной записи

Разделение Ролей Выделение слейвов для полнотекстового поиска –Репликация Innodb->MyISAM Выделение других тяжелых запросов Улучшение использование кэша При перегрузке страдают только эти функции системы

Разделение данных Схема разбивается на независимые модули (нет или мало joins между) Каждый хранится на отдельном сервере/группе – Сессии (если используется база данных) – Логгинг – Биллинг Часто один тип объектов отвечает за большинство нагрузки

Горизонтальный Партишенинг Данные разбиваются на много «кластеров» Спец кластер содержит таблицу приписки Возможно требуется несколько копий данных с разным партишенингом Серьезно усложняет приложение Уровень абстракции внутренний или Web Service

Как организовать «Кластеры» Master-Slave –Нужно клонировать после падения мастера Master-Master –Можно леко переключать роли Master-N-Slaves –Сложнее переключать. Больше копий –Не так падает производительность при отказе одного сервера Master+DRDB/SAN

Множество Дата Центров Можно использовать Master-Master + несколько слейвов для каждого при 2х центрах –Аккуратная политика записи чтобы не было конфликтов «Circular Replication» - сложна и не надежна «Ручная» репликация для большего числа или спец трюки с реаликацией

Как использовать Слейв ? На слейве данные не актуальные –Задержка плавает от миллисекунд до минут Разные техники использования –Запросы не критичные к задержке –Сессии без записи могут читать старые данные –Если объект давно не обновлялся его состояние можно читать со слейва

Кэширование Кэширование Кэширование Лучшая оптимизация операции – ее исключения Лучше всего если веб сервер вообще не получит запрос Если получит пусть он будет статическим Если динамический то пусть не трогает базу Если трогает базу то пусть не требует чтения с диска

Кэширование Правильно сконфигурированный Expire для веб сервера. Иногда Server Side Proxy Прегенеренный статический контент –Можно создавать по запросу и кэшировать Кэширование статических длоков страниц Кэширование объектов/данных/запросов

Где кэшировать Memcached –Распределенный сетевой кэш – легко и дешево наращивать –Хранилише сессий APC/Eaccelerator/XCache – Быстрый доступ в разделяемой памяти –Хорош для часто используемых объектов малого объема Диск – Долговременное кэширование больших объемов

Работа с Web Уровнем Легко решать проблемы производительности наращиванием серверов Можно использовать дешевые сервера так как сбои не критичны Часто настроен не оптимально

Keep-Alive и медленные клиенты Использование отдельных серверов для картинок и статики –Nginx, lighttpd Использование их же как reverse-proxy чтобы не держать apache процесс долго –Экономия памяти FastCGI Если нет Web IO редко нужно более 20 параллельных процессов

Картинки фильмы итд «Content Distribution Networks» – AKAMAI, S3 итд Или Собственные системы хранения Отдавать непосредственно с сервера хранения (быстрее чем NFS итд) Ручное дублирование по серверам –Нужен аккуратный протокол –MogiloFS - OpenSource от LiveJournal Или Глобальные Файловые Системы, SAN

Приглашаем работать с нами Вам интересны вопросы производительности ? Вы отлично знаете MySQL и Unix/Linux ? PHP, Perl, Ruby или Java Владеете английским языком Самостоятельны в решении задач Свяжитесь с нами –