Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимизация архитектуры для работы 24/7", Олег Краснов

1,726 views

Published on

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимизация архитектуры для работы 24/7", Олег Краснов (системный архитектор SEMrush)

Аннотация
Со времени предыдущего доклада прошло полгода и мы сделали огромный рывок вперёд. В 2008 году система хранения SEMrush была построена на базе сочетания SQL с файловым хранилищем и позволяла выдерживать нагрузку примерно в 3 миллиона запросов в день. К моменту прошлого выступления нагрузка возросла на порядок, а сейчас на подобной нагрузке было успешно введено обновление данных онлайн без потери производительности.

В докладе, через призму краткой ретроспективы, будут освещены изменения технологий обработки данных проекта SEMrush. В ходе выступления будет проведен обзор изменившихся требований к системе, как в плане надёжности, так и скорости реакции на запросы пользователей. Выступление будет дополнено реальными проблемами, программного обеспечения и оборудования, а также способами их решения. Кроме этого будет произведён обзор планов на ближайшее будущее.

О компании
Компания SEMrush является разработчиком программного обеспечения для анализа конкурентов и определения ключевых слов для SEO оптимизации, входит в тройку мировых лидеров разработчиков аналитических инструментов для изучения трафика. Существует на рынке с 2007 года. Сервис SEMrush предоставляет пользователям информацию, необходимую для анализа конкурентной среды и оптимизации поисковой выдачи. SEMrush незаменим для углубленного анализа ключевых слов, позиций конкурентов, AdWords кампаний.

Published in: Education
  • Be the first to comment

  • Be the first to like this

16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимизация архитектуры для работы 24/7", Олег Краснов

  1. 1. "Оптимизация архитектуры для работы 24x7" Олег Краснов Системный Архитектор SEMrush o.krasnov@semrush.com 2013 dev.it-portfolio.net
  2. 2. Что такое SEMrush - Ведущий сервис анализа конкурентов - Позволяет узнать ключевые слова - Позволяет анализировать не только ваши собственные данные - Сведения об бюджетах конкурентов на продвижение в поисковиках - Данные о затратах на каждое конкретное объявление и его содержимое dev.it-portfolio.net 2
  3. 3. Как выглядел SEMrush dev.it-portfolio.net 3
  4. 4. Как выглядит SEMrush сегодня dev.it-portfolio.net 4
  5. 5. Картина пользователей - Рядовые пользователи: более 350 тысяч - Крупные клиенты: более 60 - Интеграторы: более 100 dev.it-portfolio.net 5
  6. 6. Объёмы данных - 110 миллионов слов (90) 25 языковых баз (10) > 2.5 миллиардов URL (2) 30% AdWords объявлений 10 терабайт актуальных данных (4) 60 терабайт исторических данных (40) dev.it-portfolio.net 6
  7. 7. Характер данных - Ключевые слова Числовые данные URL Небольшие тексты объявлений dev.it-portfolio.net 7
  8. 8. Хорошие примеры - youtube.com : ~ 30 миллионов слов wikipedia.org : ~ 20 миллионов слов orderessay.blogspot.com : 20 слов ttyingtiffany.com : 14 слов dev.it-portfolio.net 8
  9. 9. Распределение данных dev.it-portfolio.net 9
  10. 10. Что хотелось сохранить - Быструю отдачу данных Асинхронную отдачу данных Отказоустойчивость Масштабируемость Простоту dev.it-portfolio.net 10
  11. 11. Что хотелось добавить - Обновление данных в режиме реального времени - 30 ежедневных точек для каждой базы - Производительность не менее 200 тысяч ключевых слов в час dev.it-portfolio.net 11
  12. 12. На базе чего это разрабатывалось - Файловая система Бинарные индексы Текстовые файлы Хорошая хэш-функция для поиска Компактное хранение числовых данных dev.it-portfolio.net 12
  13. 13. Магия файловых систем - Перелинковка Устойчивость к потерям данных Работа на уровне ядра Стабильность Простота Возможность создания виртуальных устройств (стало не актуально) dev.it-portfolio.net 13
  14. 14. Что было добавлено - Одна утилита для непрерывного построения - Две утилиты для применения ежедневных изменений - Rsync для сброса ежедневных точек - Nginx для балансировки и арбитража запросов - Немножечко BASHа dev.it-portfolio.net 14
  15. 15. Как это строится теперь - Основной индекс строится во время сбора данных, но на серверах хранилищах - Агрегированные данные строятся в виде файлов разницы - Файлы разницы применяются раз в сутки - Затем строятся дополнительные и текстовые индексы dev.it-portfolio.net 15
  16. 16. Как это хранится в рамках одной сущности - Основные индексы URLы и тексты объявлений Исторические индексы Исходники dev.it-portfolio.net 16
  17. 17. С чем мы столкнулись - Распределение индексов по папкам не было равномерным - Использование RAID не давало использовать процессорные мощности - Постоянное изменение больших индексов излишне нагружало дисковую подсистему - Нужен был ещё один столбец данных для хранения времени модификации записи dev.it-portfolio.net 17
  18. 18. Как мы решили эти проблемы - Перераспределили места хранения индексов по хэш-функции - Стали использовать диски раздельно - Ввели в обращение shared memory - Убрали расчётные столбцы из индексов dev.it-portfolio.net 18
  19. 19. Роли серверов - Сбор данных + хранение исходников - Актуальные данные + построение - Ежедневные срезы + построение ежедневных индексов - Полнотекстовый поиск и фильтры - Ежемесячные данные - Вспомогательные сервисы dev.it-portfolio.net 19
  20. 20. Проблемы оборудования и ОС - Медленно обходится дерево ФС - Ненадёжные HDD - Медленная реакция службы поддержки оборудования - Медленная процедура заказа дополнительного оборудования dev.it-portfolio.net 20
  21. 21. Решения по оборудованию и ОС - Увеличение количества памяти - Замена SATA на SAS - Значительное резервирование по количеству серверов + дополнительные сервера - Резервирование по количеству запасных частей (винчестеры и контроллеры) dev.it-portfolio.net 21
  22. 22. Резервное копирование в действии - Сервер источник продолжает отдавать данные клиентам при восстановлении небольших объёмов данных - Сервер источник останавливается, но это позволяет параллельно копировать данные со 100% утилизацией сети dev.it-portfolio.net 22
  23. 23. Как это отдаётся - JSON TCP сервер Для числовых данных event сервера Для текстового поиска и фильтров сервер полнотекстового поиска dev.it-portfolio.net 23
  24. 24. Что осталось незыблемым - C UNIX way Бинарный поиск Деревья Хэш таблицы dev.it-portfolio.net 24
  25. 25. Как это хранилось раньше iSCSI через внутренний сетевой интерфейс dev.it-portfolio.net 25
  26. 26. Как это хранится теперь dev.it-portfolio.net 26
  27. 27. Чего мы достигли - Онлайн обновления данных: система способна обработать около 500 тысяч ключевых слов в час - Сохранения производительности отдачи: количество обрабатываемых увеличилось с 30 до 40 миллионов запросов в сутки - Простоты развёртывания - Простоты резервного копирования и восстановления dev.it-portfolio.net 27
  28. 28. Вспомогательные сервисы - libevent + mmap - Sphinx - Python dev.it-portfolio.net 28
  29. 29. Выводы из вышесказанного - При правильном планировании архитектуры внедрение больших задач проходит быстро и безболезненно - Но только если они были стратегически запланированы в её рамках dev.it-portfolio.net 29
  30. 30. Спасибо за внимание! dev.it-portfolio.net 30
  31. 31. Будьте на связи Олег Краснов Системный архитектор компании SEMrush o.krasnov@semrush.com +7 (962) 700-1771 dev.it-portfolio.net 31

×