Масштабируемая система голосования на базе PostgreSQL PgQ презентация

Содержание

План доклада Обзор PgQ Как мы используем PgQ Pros & Cons

Слайд 1Масштабируемая система голосования на базе PostgreSQL PgQ
Сергей Нековаль
«Грамант»


Слайд 2План доклада
Обзор PgQ
Как мы используем PgQ
Pros & Cons


Слайд 3Вступление
Сервис позволяет пользователям бесплатно загружать и просматривать видео-контент (японский аналог YouTube):

Основной источник дохода – реклама.
Число показов в сутки – более 20 млн., 5 ТБ трафика
Число зарегистрированных пользователей – более 150 тыс.

Слайд 4Голосуем за видео
Обновление статистики голосов и показов
Обновление рейтингов
Запись истории голосов/показов

Что нужно?


Слайд 5События


Слайд 6Где тут голосование?


Слайд 8В наличии на 2008 год:
Суммирование голосов с помощью файлов
Рейтинги обсчитываются раз

в день
БД перегружена, статистика запаздывает

Слайд 9«Китайский» вариант


Слайд 10Что делать?


Слайд 12Skytools
Разработка компании Skype
Open Source
Репликация: Londiste
Очереди: PGQ



Слайд 13PgQ to the rescue
Предоставляет API для работы с очередью
Хранит данные в

“event tables”
Можно передавать любые данные в событии
Ориентирован на обработку множества событий (batch)

Слайд 14Компоненты PgQ


Слайд 15Ticker
Ротация таблиц
Формирование batches
Контроль доставки batches
Обработка retry-событий


Слайд 16Consumer
API для SQL, Python, PHP, Java
Обрабатывает не события, а пачки

Producer
SELECT pgq.insert_event(queue,

type, data, …)

Слайд 17В чем польза PgQ
Транзакционность (ничего не пропадает)
Асинхронность (регулируется нагрузка)
Consumer логически отделен

от БД
Простота мониторинга (все в БД)


Слайд 18Голосование с помощью PGQ


Слайд 19Новый вариант


Слайд 20Сохраняем структуру БД
Front-End (PHP) становится producer-ом
На каждый чих в очередь заносится

событие
Memcache: статистика + рейтинги

Слайд 22Тюнинг очередей
ticker_max_lag (время)
ticket_max_count (число)


Слайд 23Система как трубопровод


Слайд 24max_lag = 30 мин.
max_count = 150 000
max_lag = 3 мин.
max_count =

5 000

Слайд 25Disk I/O


Слайд 26Производительность
Vacuum
fsync = off
Asynchronous commit
SET LOCAL synchronous_commit TO OFF;
SELECT pgq.insert_event(‘COUNTER’, ‘V’, ‘movie_id=77958023’);
COMMIT;


Слайд 27Асинхронность
Где подвох?
Результат часто нужен немедленно


Слайд 28Куда расти?
Отделение исторических таблиц
Несколько БД с очередями
Skytools 3 cooperative consumers
Предварительное суммирование



Слайд 29Pitfalls
Нельзя узнать длину очереди!
Нельзя очистить очередь!
Текстовый формат событий
Документация аскетична
http://wiki.postgresql.org/wiki/Skytools


Слайд 30Вопросы?

snekoval@gramant.ru


Слайд 31Бонусный слайд
Consumer: lag, last_seen


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика