SlideShare a Scribd company logo
Масштабируемая система голосования на базе PostgreSQL PgQ Сергей Нековаль «Грамант»
План доклада Обзор  PgQ Как мы используем  PgQ Pros & Cons
Вступление Сервис позволяет пользователям бесплатно загружать и просматривать видео-контент (японский аналог  YouTube) : Основной источник дохода – реклама. Число показов в сутки –  более  20  млн. , 5  ТБ трафика Число зарегистрированных пользователей –  более  150 тыс.
Что нужно? Голосуем за видео Обновление статистики голосов и показов Обновление рейтингов Запись истории голосов/показов
События Просмотр 8-9 млн. в сутки Голосование 25-30 тыс. в сутки Добавление в избранное 5 тыс. в сутки
Где тут голосование?
 
В наличии на 2008 год: Суммирование голосов с помощью файлов Рейтинги обсчитываются раз в день БД перегружена, статистика запаздывает
«Китайский» вариант
Что делать?
 
Skytools Разработка компании  Skype Open Source Репликация:  Londiste Очереди:  PGQ
PgQ   to the rescue Предоставляет  API  для работы с очередью Хранит данные в  “event tables” Можно передавать любые данные в событии Ориентирован на обработку множества событий ( batch)
Компоненты  PgQ
Ticker Ротация таблиц Формирование  batches Контроль доставки  batches Обработка  retry- событий
Consumer API  для  SQL, Python, PHP, Java Обрабатывает не события, а  пачки Producer SELECT pgq.insert_event(queue, type, data, …)
В чем польза  PgQ Транзакционность (ничего не пропадает) Асинхронность (регулируется нагрузка) Consumer   логически отделен от БД Простота мониторинга (все в БД)
Голосование с помощью  PGQ
Новый вариант
Сохраняем структуру БД Front-End (PHP)  становится  producer- ом На каждый чих в очередь заносится событие Memcache:  статистика + рейтинги
 
Тюнинг очередей ticker_max_lag  (время) ticket_max_count  (число)
Система как трубопровод
max_lag = 30  мин. max_count = 150 000 max_lag =  3 мин. max_count =  5 000
Disk I/O
Производительность Vacuum fsync = off Asynchronous commit SET LOCAL synchronous_commit TO OFF; SELECT pgq.insert_event(‘COUNTER’, ‘V’, ‘movie_id=77958023’); COMMIT;
Асинхронность Где подвох? Результат часто нужен немедленно
Куда расти? Отделение исторических таблиц Несколько БД с очередями Skytools 3   cooperative consumers Предварительное суммирование
Pitfalls Нельзя узнать длину очереди! Нельзя очистить очередь! Текстовый формат событий Документация аскетична http://wiki.postgresql.org/wiki/Skytools
Вопросы? [email_address]
Бонусный слайд Consumer:  lag ,  last_seen

More Related Content

PDF
2015.02.06 PostgreSQL в Яндексе: история успеха №2
PPTX
Мониторинг всех слоев web проекта (hl2015)
PDF
Cоздаем пробки или тюнинг postgresql для расчетных задач
PDF
Twisted Framework - сетевые приложения в Python
PDF
Smirnov Twisted Python
PPTX
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
PPTX
мониторинг производительности Web приложений на python
PPTX
Управление памятью в CPython
2015.02.06 PostgreSQL в Яндексе: история успеха №2
Мониторинг всех слоев web проекта (hl2015)
Cоздаем пробки или тюнинг postgresql для расчетных задач
Twisted Framework - сетевые приложения в Python
Smirnov Twisted Python
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
мониторинг производительности Web приложений на python
Управление памятью в CPython

Similar to Масштабируемая система голосования на базе PostgreSQL. PGQ (Сергей Нековаль) (20)

PPT
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
PPT
Компонентная среда разработки инструментария нагрузочного тестирования
PDF
Программируемость коммутаторов для ЦОД Cisco Nexus
PPTX
Разработка средств управления и мониторинга распределенной мультиагентной сис...
PPT
Hl2008 Spy Log Architechture 169
PPT
New SpyLOG architechture (Highload 2008)
PDF
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
PDF
Android Telegram S Optimizations
PPTX
6 кареев киров
PPTX
Вячеслав Смирнов - Инструменты нагрузочного тестирования
PDF
владивосток форум производительность_ha
PDF
Flame graph: новый взгляд на старое профилирование
PPT
Pronet bmc pro activenet monitoring. Современная система мониторинга и упра...
PDF
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
PPT
Log+
PDF
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
PDF
Lviv PMDay 2016 S Микита Семенов: Як привести великий проект до успіху? Від і...
ODP
анализ кода: от проверки стиля до автоматического тестирования
PPTX
вебинар взаимодействие Info watch traffic monitor c субд oracle
PDF
Twisted Framework - сетевые приложения в Python
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Компонентная среда разработки инструментария нагрузочного тестирования
Программируемость коммутаторов для ЦОД Cisco Nexus
Разработка средств управления и мониторинга распределенной мультиагентной сис...
Hl2008 Spy Log Architechture 169
New SpyLOG architechture (Highload 2008)
Пакетное ядро мобильного оператора: ASR5k, поиски устранение неисправностей
Android Telegram S Optimizations
6 кареев киров
Вячеслав Смирнов - Инструменты нагрузочного тестирования
владивосток форум производительность_ha
Flame graph: новый взгляд на старое профилирование
Pronet bmc pro activenet monitoring. Современная система мониторинга и упра...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Log+
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
Lviv PMDay 2016 S Микита Семенов: Як привести великий проект до успіху? Від і...
анализ кода: от проверки стиля до автоматического тестирования
вебинар взаимодействие Info watch traffic monitor c субд oracle
Twisted Framework - сетевые приложения в Python
Ad

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ad

Масштабируемая система голосования на базе PostgreSQL. PGQ (Сергей Нековаль)

Editor's Notes

  • #25: Не воспринимать как универсальный рецепт!