SlideShare a Scribd company logo
"Оптимизация архитектуры
для работы 24x7"
Олег Краснов
Системный Архитектор
SEMrush
o.krasnov@semrush.com

2013

dev.it-portfolio.net
Что такое SEMrush
- Ведущий сервис анализа конкурентов
- Позволяет узнать ключевые слова
- Позволяет анализировать не только ваши
собственные данные
- Сведения об бюджетах конкурентов на
продвижение в поисковиках
- Данные о затратах на каждое конкретное
объявление и его содержимое
dev.it-portfolio.net

2
Как выглядел SEMrush

dev.it-portfolio.net

3
Как выглядит SEMrush сегодня

dev.it-portfolio.net

4
Картина пользователей
- Рядовые пользователи: более 350 тысяч
- Крупные клиенты: более 60

- Интеграторы: более 100

dev.it-portfolio.net

5
Объёмы данных
-

110 миллионов слов (90)
25 языковых баз (10)
> 2.5 миллиардов URL (2)
30% AdWords объявлений
10 терабайт актуальных данных (4)
60 терабайт исторических данных (40)

dev.it-portfolio.net

6
Характер данных
-

Ключевые слова
Числовые данные
URL
Небольшие тексты объявлений

dev.it-portfolio.net

7
Хорошие примеры
-

youtube.com : ~ 30 миллионов слов
wikipedia.org : ~ 20 миллионов слов
orderessay.blogspot.com : 20 слов
ttyingtiffany.com : 14 слов

dev.it-portfolio.net

8
Распределение данных

dev.it-portfolio.net

9
Что хотелось сохранить
-

Быструю отдачу данных
Асинхронную отдачу данных
Отказоустойчивость
Масштабируемость
Простоту

dev.it-portfolio.net

10
Что хотелось добавить
- Обновление данных в режиме реального
времени
- 30 ежедневных точек для каждой базы
- Производительность не менее 200 тысяч
ключевых слов в час

dev.it-portfolio.net

11
На базе чего это разрабатывалось
-

Файловая система
Бинарные индексы
Текстовые файлы
Хорошая хэш-функция для поиска
Компактное хранение числовых данных

dev.it-portfolio.net

12
Магия файловых систем
-

Перелинковка
Устойчивость к потерям данных
Работа на уровне ядра
Стабильность
Простота
Возможность создания виртуальных
устройств (стало не актуально)
dev.it-portfolio.net

13
Что было добавлено
- Одна утилита для непрерывного
построения
- Две утилиты для применения ежедневных
изменений
- Rsync для сброса ежедневных точек
- Nginx для балансировки и арбитража
запросов
- Немножечко BASHа
dev.it-portfolio.net

14
Как это строится теперь
- Основной индекс строится во время сбора
данных, но на серверах хранилищах
- Агрегированные данные строятся в виде
файлов разницы
- Файлы разницы применяются раз в сутки
- Затем строятся дополнительные и
текстовые индексы

dev.it-portfolio.net

15
Как это хранится в рамках одной сущности
-

Основные индексы
URLы и тексты объявлений
Исторические индексы
Исходники

dev.it-portfolio.net

16
С чем мы столкнулись
- Распределение индексов по папкам не
было равномерным
- Использование RAID не давало
использовать процессорные мощности
- Постоянное изменение больших индексов
излишне нагружало дисковую подсистему
- Нужен был ещё один столбец данных для
хранения времени модификации записи
dev.it-portfolio.net

17
Как мы решили эти проблемы
- Перераспределили места хранения
индексов по хэш-функции
- Стали использовать диски раздельно
- Ввели в обращение shared memory
- Убрали расчётные столбцы из индексов

dev.it-portfolio.net

18
Роли серверов
- Сбор данных + хранение исходников
- Актуальные данные + построение
- Ежедневные срезы + построение
ежедневных индексов
- Полнотекстовый поиск и фильтры
- Ежемесячные данные
- Вспомогательные сервисы
dev.it-portfolio.net

19
Проблемы оборудования и ОС
- Медленно обходится дерево ФС
- Ненадёжные HDD
- Медленная реакция службы поддержки
оборудования
- Медленная процедура заказа
дополнительного оборудования

dev.it-portfolio.net

20
Решения по оборудованию и ОС
- Увеличение количества памяти
- Замена SATA на SAS
- Значительное резервирование по
количеству серверов + дополнительные
сервера
- Резервирование по количеству запасных
частей (винчестеры и контроллеры)

dev.it-portfolio.net

21
Резервное копирование в действии
- Сервер источник продолжает отдавать
данные клиентам при восстановлении
небольших объёмов данных
- Сервер источник останавливается, но это
позволяет параллельно копировать данные
со 100% утилизацией сети

dev.it-portfolio.net

22
Как это отдаётся
-

JSON
TCP сервер
Для числовых данных event сервера
Для текстового поиска и фильтров сервер
полнотекстового поиска

dev.it-portfolio.net

23
Что осталось незыблемым
-

C
UNIX way
Бинарный поиск
Деревья
Хэш таблицы

dev.it-portfolio.net

24
Как это хранилось раньше
iSCSI через внутренний сетевой интерфейс

dev.it-portfolio.net

25
Как это хранится теперь

dev.it-portfolio.net

26
Чего мы достигли
- Онлайн обновления данных: система
способна обработать около 500 тысяч
ключевых слов в час
- Сохранения производительности отдачи:
количество обрабатываемых увеличилось с
30 до 40 миллионов запросов в сутки
- Простоты развёртывания
- Простоты резервного копирования и
восстановления
dev.it-portfolio.net

27
Вспомогательные сервисы

- libevent + mmap
- Sphinx
- Python
dev.it-portfolio.net

28
Выводы из вышесказанного
- При правильном планировании
архитектуры внедрение больших задач
проходит быстро и безболезненно
- Но только если они были стратегически
запланированы в её рамках

dev.it-portfolio.net

29
Спасибо за внимание!

dev.it-portfolio.net

30
Будьте на связи
Олег Краснов
Системный архитектор компании SEMrush
o.krasnov@semrush.com
+7 (962) 700-1771

dev.it-portfolio.net

31

More Related Content

PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
PDF
Александр Киров — Acronis — ICBDA 2015
PPTX
Александр Сербул —1С-Битрикс — ICBDA 2015
PDF
Где сегодня использовать ElasticSearch
PDF
Построение системы аналитики
PDF
Практика миграции реляционных баз данных в экосистему Hadoop
PPTX
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
PPT
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
Александр Киров — Acronis — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015
Где сегодня использовать ElasticSearch
Построение системы аналитики
Практика миграции реляционных баз данных в экосистему Hadoop
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...

What's hot (20)

PPTX
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PDF
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
PPTX
Машинное обучение в электронной коммерции — практика использования и подводны...
PDF
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
PDF
Александр Соловьёв, Griddynamics.com
PDF
Andrei Kirilenkov. Vertica
PPTX
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
PDF
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
PPTX
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
PDF
High load++2016.highlights (dropbox+clickhouse)
ODP
ClickHouse
PPTX
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
PDF
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
PPTX
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
PDF
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
PDF
Василий Суханов — SAP — ICBDA 2015
PDF
Aлександр Зайцев, LifeStreet
PDF
Электронная коммерция: от Hadoop к Spark Scala
PDF
Модернизация хранилища данных для использования передовой аналитики
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
Машинное обучение в электронной коммерции — практика использования и подводны...
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Александр Соловьёв, Griddynamics.com
Andrei Kirilenkov. Vertica
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
High load++2016.highlights (dropbox+clickhouse)
ClickHouse
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
Василий Суханов — SAP — ICBDA 2015
Aлександр Зайцев, LifeStreet
Электронная коммерция: от Hadoop к Spark Scala
Модернизация хранилища данных для использования передовой аналитики
Ad

Viewers also liked (9)

PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
PPTX
NoSQL - World IT Planet, Saint Petersburg 2015
PDF
Couchbase, что за зверь и на что способен.
PPTX
MongoDB в продакшен - миф или реальность?
PDF
NoSQL thumbtack experience, Анатолий Никулин
PPTX
Преимущества NoSQL баз данных на примере MongoDB
PDF
Вадим Шашенко, 2ГИС
PPTX
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Алексей Чумаков. Apache Cassandra на реальном проекте
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
NoSQL - World IT Planet, Saint Petersburg 2015
Couchbase, что за зверь и на что способен.
MongoDB в продакшен - миф или реальность?
NoSQL thumbtack experience, Анатолий Никулин
Преимущества NoSQL баз данных на примере MongoDB
Вадим Шашенко, 2ГИС
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Ad

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

PPTX
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
PPTX
Dev {highload}. When you should do your own db.
PDF
Презентация аналитической системы для ритейла СуперМаг BI
PDF
CleverDATA_Oracle Cloud BI Day 2015
PPTX
Виталий Гаврилов (Ленвендо)
PPTX
IBM Technology Day 2013 Sy Storage
PDF
Знакомство с виртуализацией данных для профессионалов в области данных
PDF
Построение Data Mesh на основе Виртуальных Данных
PDF
Знакомство с виртуализацией данных для профессионалов в области данных
PPTX
доклад на вмк 15.10.2015
PPT
Как снизить нагрузку на высокопосещаемый проект
PDF
Модернизация хранилища данных для использования передовой аналитики
PPT
BI Pre-Sale
PDF
Запчасти онлайн
PPTX
АНАЛИТИКА ПЛЮС, вебинар 10 декабря «НОВЫЕ ТЕХНОЛОГИИ HP VERTICA + TABLEAU, КА...
PPTX
Логическая витрина данных
PPT
Битрикс-Framework
PDF
MySQL Enterprise Monitor
PPTX
как из трех стоек сделать две.
PPTX
Windows Azure - BigData and Hadoop
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
Dev {highload}. When you should do your own db.
Презентация аналитической системы для ритейла СуперМаг BI
CleverDATA_Oracle Cloud BI Day 2015
Виталий Гаврилов (Ленвендо)
IBM Technology Day 2013 Sy Storage
Знакомство с виртуализацией данных для профессионалов в области данных
Построение Data Mesh на основе Виртуальных Данных
Знакомство с виртуализацией данных для профессионалов в области данных
доклад на вмк 15.10.2015
Как снизить нагрузку на высокопосещаемый проект
Модернизация хранилища данных для использования передовой аналитики
BI Pre-Sale
Запчасти онлайн
АНАЛИТИКА ПЛЮС, вебинар 10 декабря «НОВЫЕ ТЕХНОЛОГИИ HP VERTICA + TABLEAU, КА...
Логическая витрина данных
Битрикс-Framework
MySQL Enterprise Monitor
как из трех стоек сделать две.
Windows Azure - BigData and Hadoop

More from IT-Portfolio (10)

PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
PPT
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
PPTX
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
PDF
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
PDF
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
PPT
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
PDF
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
PDF
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
PPTX
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
PPT
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Несколько...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Шардинг в...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Особенности р...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура п...

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

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