Несколько кейсовиз жизни "больших" проектовВиталий ГавриловТехнический директор «Ленвендо»info@lenvendo.ruwww.lenvendo.ru2...
«Ленвендо» в приближениител.: +7 (812) 322-95-87 info@lenvendo.ruПрофессионал в области разработки сложных Интернет - реше...
О чем мы сегодня поговорим?тел.: +7 (812) 322-95-87 info@lenvendo.ruУправляемое статическое кеширование√ nginx + embed per...
Хитрости проекта сиспользованием СУБДPostgreSQL,оптимизированного подвысокие нагрузкиРаздел 1.
тел.: +7 (812) 322-95-87 info@lenvendo.ruМасштабирование проекта с использованием pl_proxy в каждой БД - полная копия все...
Хитрости проекта с использованиемСУБД PostgreSQL
Хитрости проекта с использованиемСУБД PostgreSQL
тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованиемСУБД PostgreSQL
тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованиемСУБД PostgreSQL
тел.: +7 (812) 322-95-87 info@lenvendo.ruДоступ к сессии пользователя через embed perl хранение сессий в memcached перед...
тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованием СУБДPostgreSQL
тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованием СУБДPostgreSQL
тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости при использовании СУБДPostgreSQL
Резервное копированиевысоконагруженного проекта:проблемы и решенияРаздел 2.
тел.: +7 (812) 322-95-87 info@lenvendo.ruТипы контента: Файлы проекта Статический контент проекта База данных проекта ...
Резервное копирование высоконагруженногопроекта: проблемы и решениятел.: +7 (812) 322-95-87 info@lenvendo.ruМного задач? И...
тел.: +7 (812) 322-95-87 info@lenvendo.ruРезервная копия БД – о чем надо помнить? должна выполнятся в наименее загруженно...
тел.: +7 (812) 322-95-87 info@lenvendo.ruПолная резервная копия конфигурационных файлов всех узловсистемы Копия нужна пос...
тел.: +7 (812) 322-95-87 info@lenvendo.ruНаличие резервной копии не гарантирует оперативноевосстановлениеРезервное копиров...
Особенности построенияпроекта, распределенного на 2и более датацентрахРаздел 3.
Особенности построения проекта,распределенного на 2 и более датацентрахтел.: +7 (812) 322-95-87 info@lenvendo.ruПричины ос...
тел.: +7 (812) 322-95-87 info@lenvendo.ruПреимущества встроенная поддержка шифрования продуманные механизмы определения ...
тел.: +7 (812) 322-95-87 info@lenvendo.ruОсновные настройки server_id = N log-bin = <путь к файлу журнала транзакций> r...
тел.: +7 (812) 322-95-87 info@lenvendo.ruОсновные команды START SLAVE [IO_THREAD | SQL_THREAD] STOP SLAVE [IO_THREAD | S...
тел.: +7 (812) 322-95-87 info@lenvendo.ruГде хранить сессии? Конечно, в memcachedПреимущества общее хранилище для всех ви...
Управляемое статическоекеширование, какспособ снижения нагрузкиРаздел 4.
Управляемое статическое кеширование, какспособ снижения нагрузки
Управляемое статическое кеширование, как способснижения нагрузкител.: +7 (812) 322-95-87 info@lenvendo.ruСпособы снижение ...
Управляемое статическое кеширование, какспособ снижения нагрузкител.: +7 (812) 322-95-87 info@lenvendo.ruИспользование заг...
Управляемое статическое кеширование, какспособ снижения нагрузкител.: +7 (812) 322-95-87 info@lenvendo.ru
тел.: +7 (812) 322-95-87 info@lenvendo.ruСервера FE Принимают все входящие подключения Фактически самое ненагруженное зв...
тел.: +7 (812) 322-95-87 info@lenvendo.ruNginx умеет Сохранять полученный ответ в файлах по заранееопределенному пути (ди...
тел.: +7 (812) 322-95-87 info@lenvendo.ruЗа ведение статического кеша отвечает nginxИз nginx на уровень приложения (в случ...
тел.: +7 (812) 322-95-87 info@lenvendo.ruУправляемое статическое кеширование, какспособ снижения нагрузки
тел.: +7 (812) 322-95-87 info@lenvendo.ruА как же поисковые системы? Весь внешний контент необходимо по максимуму включат...
Где и когда нужно использоватьСУБД Oracle?Раздел 5.
Где и когда нужно использовать СУБДOracle?тел.: +7 (812) 322-95-87 info@lenvendo.ru Требования заказчика по безопасности ...
тел.: +7 (812) 322-95-87 info@lenvendo.ru Если масштабы проекта не смогут окупить трудозатрат наего поддержание Если жел...
www.lenvendo.ruinfo@lenvendo.ruтел.: +7 (812) 322-95-87 info@lenvendo.ruIII место в рейтинге Best in digital 2013в номинац...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько кейсов из жизни "больших" проектов", Виталий...
Upcoming SlideShare
Loading in …5
×

20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько кейсов из жизни "больших" проектов", Виталий Гаврилов

1,322 views

Published on

20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько кейсов из жизни "больших" проектов", Виталий Гаврилов (технический директор "Ленвендо")

Аннотация
Команда разработчиков «Ленвендо» реализовала сотни проектов, среди которых были сайты и интернет-магазины для компаний: Эльдорадо, Газпромбанк, Связной, SUP media, Эхо Москвы в Петербурге, Банк БФА и другие. Специалисты компании в совершенстве владеют языками программирования от низкоуровневого C++ до высокоуровневых PHP, Perl, Bash и умею разрабатывать проекты с многомиллионной посещаемостью.

В рамках презентации будет рассмотрено несколько интересных кейсов из практики «Ленвендо». Мы поговорим об особенностях построения высоконагруженных проектов с использованием БД PostgreSQL, о резервном копировании и особенностях его организации в высоконагруженных проектах с большими объемами данных. Также остановимся на специфике проектов, размещенных в 2-х и более датацентрах, и тех инструментах, которые мы используем для построения таких проектов (csync2, MySQL Multi-Master Replication и т.д.).

Особое внимание будет уделено теме управляемого статического кеширования, позволяющего существенно (от 30% до нескольких раз) снизить нагрузку на backend-сервера с сохранением актуальности отображаемой на сайте информации (с помощью RabbitMQ, RedisDB, Nginx embedded Perl).

И напоследок - короткое «лирическое» отступление о том, когда и для чего имеет смысл использовать СУБД Oracle.

О компании
Компания «Ленвендо» - профессионал в области разработки, внедрения и технической поддержки высоконагруженных Интернет-решений. Компания была признана одной из лидеров по разработке Highload-систем (рейтинг Best in Digital 2013).

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,322
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
20
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько кейсов из жизни "больших" проектов", Виталий Гаврилов

  1. 1. Несколько кейсовиз жизни "больших" проектовВиталий ГавриловТехнический директор «Ленвендо»info@lenvendo.ruwww.lenvendo.ru2013 dev.it-portfolio.net
  2. 2. «Ленвендо» в приближениител.: +7 (812) 322-95-87 info@lenvendo.ruПрофессионал в области разработки сложных Интернет - решений ивысоконагруженных проектов
  3. 3. О чем мы сегодня поговорим?тел.: +7 (812) 322-95-87 info@lenvendo.ruУправляемое статическое кеширование√ nginx + embed perl√ Redis√ RabbitMQГде и когда нужно использовать СУБД OracleХитрости проекта с использованием СУБД PostgreSQL, оптимизированногопод высокие нагрузки√ pl_proxy√ embed perlРезервное копирование высоконагруженного проекта: проблемы и решенияОсобенности построения проекта, распределенного на 2 и болеедатацентрах,√ round-robin DNS√ csync2√ mysql multimaster replication√ Memcached
  4. 4. Хитрости проекта сиспользованием СУБДPostgreSQL,оптимизированного подвысокие нагрузкиРаздел 1.
  5. 5. тел.: +7 (812) 322-95-87 info@lenvendo.ruМасштабирование проекта с использованием pl_proxy в каждой БД - полная копия всех данных использование встроенной WAL-PITR нативной репликации всего два кластера master и slave в кластере master: 2 сервера (можно больше). Основнойсценарий использования: RUN ON ALL в кластере slave: 4 сервера (можно больше, но должно бытькратно двум). Основой сценарий использования: RUN ON ANYХитрости проекта с использованием СУБДPostgreSQL
  6. 6. Хитрости проекта с использованиемСУБД PostgreSQL
  7. 7. Хитрости проекта с использованиемСУБД PostgreSQL
  8. 8. тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованиемСУБД PostgreSQL
  9. 9. тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованиемСУБД PostgreSQL
  10. 10. тел.: +7 (812) 322-95-87 info@lenvendo.ruДоступ к сессии пользователя через embed perl хранение сессий в memcached передача ключа сессии через сессию PostgreSQL доступ в систему полнотекстового поиска Sphinx через mysql интерфейснепосредственно из plperlХитрости проекта с использованиемСУБД PostgreSQL
  11. 11. тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованием СУБДPostgreSQL
  12. 12. тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости проекта с использованием СУБДPostgreSQL
  13. 13. тел.: +7 (812) 322-95-87 info@lenvendo.ruХитрости при использовании СУБДPostgreSQL
  14. 14. Резервное копированиевысоконагруженного проекта:проблемы и решенияРаздел 2.
  15. 15. тел.: +7 (812) 322-95-87 info@lenvendo.ruТипы контента: Файлы проекта Статический контент проекта База данных проекта Настройки виртуальных (и хостовых)машин или образы виртуальных машинРезервное копирование высоконагруженногопроекта: проблемы и решения
  16. 16. Резервное копирование высоконагруженногопроекта: проблемы и решениятел.: +7 (812) 322-95-87 info@lenvendo.ruМного задач? Инструмент один – baculaФайлы сайта: полная резервная копия - 1 раз в 1-2 недели, дифференциальная копия - 1 раз/деньCтатические файлы: полная резервная копия - 1 раз/месяц, дифференциальная копия – 1 раз в 3-7 дней, инкрементальная копия – 1 раз/день резервная копия БД (бизнес-критичные таблицы) не реже 1раз/день полная целостная резервная копия - не реже 1 раз/нед.(http://www.bacula.org/en/)
  17. 17. тел.: +7 (812) 322-95-87 info@lenvendo.ruРезервная копия БД – о чем надо помнить? должна выполнятся в наименее загруженное время со slave сервера, накотором нет продуктивной нагрузки во время снятия копии должна быть логически целостной помните, резервная копия - это не спасение и дублирующий slave сервер тожеЧто можно сделать? Дублирующий slave сервер с отставанием во времени от 15 минут дочаса (зависит от квалификации службы поддержки)Резервное копирование высоконагруженногопроекта: проблемы и решения
  18. 18. тел.: +7 (812) 322-95-87 info@lenvendo.ruПолная резервная копия конфигурационных файлов всех узловсистемы Копия нужна после каждого внесения измененийРезервное копирование образов виртуальных машин Обеспечить наличие образов виртуальных машин после каждоговнесения изменений в настройке узлов, желательно сохранятьминимум две последние копииРезервное копирование высоконагруженногопроекта: проблемы и решения
  19. 19. тел.: +7 (812) 322-95-87 info@lenvendo.ruНаличие резервной копии не гарантирует оперативноевосстановлениеРезервное копирование высоконагруженногопроекта: проблемы и решения необходимо регулярно проводить процедурытестового восстановления системы процедура должна выполняться как минимумпосле каждого внесения изменений вконфигурацию
  20. 20. Особенности построенияпроекта, распределенного на 2и более датацентрахРаздел 3.
  21. 21. Особенности построения проекта,распределенного на 2 и более датацентрахтел.: +7 (812) 322-95-87 info@lenvendo.ruПричины особенностей Скорость взаимодействия внутри датацентра гораздо выше, чеммежду датацентрами Если взаимодействие между датацентрами идет по публичнымсетям, трафик должен цифроваться В общем случае невозможно предугадать в какой из датацентровпридет следующий запрос посетителя, поэтому каждыйдатацентр должен содержать достаточно данных для подготовкиответа, либо запрос должен быть прозрачно проксирован вдатацентр, где есть необходимые данные
  22. 22. тел.: +7 (812) 322-95-87 info@lenvendo.ruПреимущества встроенная поддержка шифрования продуманные механизмы определения «кто прав» в случаеконфликтов синхронизации понятная структура конфигурационного файлаНедостатки критичен к стабильности соединения (может зависнуть, нуженконтроль) недостаточно документирован синхронизация требует большого числа дисковых операций идостаточно много времени (до 15 минут на 50 Гб данных), приэтом одновременная двусторонняя синхронизация хотя ивозможна, но не рекомендуетсяСинхронизация файлов – csync2
  23. 23. тел.: +7 (812) 322-95-87 info@lenvendo.ruОсновные настройки server_id = N log-bin = <путь к файлу журнала транзакций> relay-log = <путь к файлу журнала транзакций мастер-сервера> relay-log-index = <путь к индексному файлу журнала транзакций мастер-сервера> auto_increment_increment определяет шаг измененияAUTO_INCREMENT auto_increment_offset определяет начальное значение инкремента log_slave_updates логирует обновления с мастера slave_net_timeout таймаут получения данных с мастера перед сбросомсоединенияMultimaster репликация MySQL
  24. 24. тел.: +7 (812) 322-95-87 info@lenvendo.ruОсновные команды START SLAVE [IO_THREAD | SQL_THREAD] STOP SLAVE [IO_THREAD | SQL_THREAD] SET GLOBAL sql_slave_skip_counter=<N> CHANGE MASTER TO … RESET SLAVEMultimaster репликация MySQL
  25. 25. тел.: +7 (812) 322-95-87 info@lenvendo.ruГде хранить сессии? Конечно, в memcachedПреимущества общее хранилище для всех виртуальных машин кластера позволяет получить доступ к сессии достаточно быстроНедостатки требует кастомных инструментов поддержания актуальностиданных между ДЦ нагружает канал большим числом мелких пакетов в случае падения службы все сессионные данные могутоказаться потеряннымиОсобенности построения проекта,распределенного на 2 и более датацентрахhttp://www.memcached.org/
  26. 26. Управляемое статическоекеширование, какспособ снижения нагрузкиРаздел 4.
  27. 27. Управляемое статическое кеширование, какспособ снижения нагрузки
  28. 28. Управляемое статическое кеширование, как способснижения нагрузкител.: +7 (812) 322-95-87 info@lenvendo.ruСпособы снижение нагрузки Разделение контента на полностью динамический и условностатический контент Перекомпоновка страниц для оптимального использования AJAX Статическое кеширование условно-статического контента
  29. 29. Управляемое статическое кеширование, какспособ снижения нагрузкител.: +7 (812) 322-95-87 info@lenvendo.ruИспользование заголовков “Cache-Control” и “Expires”(дает разрешение браузеру не перезапрашивать содержимоестраницы, не спасает от «скачков» посещаемости)Использование кеширующего прокси сервера в связке сзаголовками “Cache-Control” и “Expires”(дает устойчивость к «скачкам» посещаемости, не позволяетоперативно управлять обновлением кеша)Использование управляемого статическогокеширования(решает все поставленные задачи)
  30. 30. Управляемое статическое кеширование, какспособ снижения нагрузкител.: +7 (812) 322-95-87 info@lenvendo.ru
  31. 31. тел.: +7 (812) 322-95-87 info@lenvendo.ruСервера FE Принимают все входящие подключения Фактически самое ненагруженное звено в обработке запросапосетителя Не обладает информацией о связи запроса с элементомдинамической информации В большинстве случаев это nginx (www.nginx.ru)Управляемое статическое кеширование, какспособ снижения нагрузки
  32. 32. тел.: +7 (812) 322-95-87 info@lenvendo.ruNginx умеет Сохранять полученный ответ в файлах по заранееопределенному пути (директива proxy_store) Определять наличие сохраненной копии файла Отдавать готовые ответы из сохраненных копийNginx не умеет Отслеживать корректность отдаваемых данныхУправляемое статическое кеширование, какспособ снижения нагрузки
  33. 33. тел.: +7 (812) 322-95-87 info@lenvendo.ruЗа ведение статического кеша отвечает nginxИз nginx на уровень приложения (в случае если запрос посетителяобрабатывается приложением, а не берется из закешированной копии,передается путь к файлу, в который будет сохранен ответ (файл кеша))На уровне приложения информация о связке информационныхэлементов и файла кеша сохраняется в БД (лучше всего подходятNoSQL базы данных)При обновлении элемента информации на уровне приложенияотдается команда на удаление файлов кеша по обновленномуинформационному элементу (можно делать это как прямой командой вnginx, который посредством встроенного perl сможет удалять файлы, так ичерез диспетчер очереди, в случае нескольких FE серверов)Управляемое статическое кеширование, какспособ снижения нагрузки
  34. 34. тел.: +7 (812) 322-95-87 info@lenvendo.ruУправляемое статическое кеширование, какспособ снижения нагрузки
  35. 35. тел.: +7 (812) 322-95-87 info@lenvendo.ruА как же поисковые системы? Весь внешний контент необходимо по максимуму включать всохраненные в статическом кеше копии страниц У копии страницы есть время жизни, после которого онаудаляется (что приводит к перестроению страницы, и,следовательно, к обновлению данных для поисковых систем) Необходимо помнить об альтернативных способах передачиинформации в поисковые системы (RSS ленты и т.д.)Управляемое статическое кеширование, какспособ снижения нагрузки
  36. 36. Где и когда нужно использоватьСУБД Oracle?Раздел 5.
  37. 37. Где и когда нужно использовать СУБДOracle?тел.: +7 (812) 322-95-87 info@lenvendo.ru Требования заказчика по безопасности и надежностихранения данных (при условии поддержки проектаквалифицированным DBA) Специфика проекта, требующая тесного взаимодействия свнутренними системами заказчика, построенными напродуктах Oracle Наличие у заказчика развернутого RAC и командыадминистраторов Oracle
  38. 38. тел.: +7 (812) 322-95-87 info@lenvendo.ru Если масштабы проекта не смогут окупить трудозатрат наего поддержание Если желание сделать проект на Oracle вызвано тем, что«Это же круто!», «А почему бы и нет?», «А вот у нихOracle, а мы что хуже?» Заказчик не имеет возможности поддержки Oracle и непредставляет во что это выльется У вас в штате нет ни одного сотрудника, способногосделать резервную копию БД OracleКогда не стоит переходить на Oracle?
  39. 39. www.lenvendo.ruinfo@lenvendo.ruтел.: +7 (812) 322-95-87 info@lenvendo.ruIII место в рейтинге Best in digital 2013в номинации «Разработка Highload систем»С удовольствием отвечу на ваши вопросы!

×