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

Презентация:



Advertisements
Похожие презентации
Делаем дешевый видео- хостинг в условиях кризиса Сергей Нековаль Денис Елданди «Грамант»
Advertisements

Масштабирование системы баннерной рекламы с централизованной базой данных Сергей Нековаль Компания «Грамант» Сергей Нековаль Компания «Грамант»
Что такое Google App Engine Сервис хостинга сайтов и web-приложений в инфраструктуре Google. PaaS Оплата только ресурсов Простота использования, поддержки.
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ) КАФЕДРА ИКТ Дипломный проект на тему: Студент: Руководитель проекта:
Использование MySQL в сервисе дневников LiveInternet.ru Практика, практика, практика Гурьянов Андрей, программист Новиков Лев, системный администратор.
Контент ориентированное программирование JSR-170,JSR-283.
NSAdv Media Универсальная клиент-программа для информационных интернет-сервисов. Приложение позволяет пользователям иметь доступ к вашему сервису в любое.
Тел.: (8442) Екатерина MAIL: WEB: Способы продвижения в социальной сети vkontakte.ru AdvertCenter Информационно-ресурсный.
Google App Engine Алексей Сурков разработчик Google РИФ+КИБ 2010.
1 Сравнительный анализ систем показа интернет- рекламы AdRiver и OpenX: инструментарий, возможности, преимущества для рекламодателей 1.
Moscow, Russia October 2010 AMARENA Digital Solutions.
Обработка статистики в системе управления баннерной рекламой Артём Вольфтруб.
Разработка ABL приложений с использованием OpenEdge ORACLE DataServer Сергей Климов ЗАО «Банковские информационные системы» («БИС») Разработка.
= предоставляется Облачным сервисом Свои серверы IaaSPaaSSaaS Приложение Системные библиотеки База Данных Операционная система Управление виртуализацией.
Технические возможности. Наши цели Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота.
СУБД Microsoft Access 2003 ЗНАКОМСТВО. Что такое Access? Access – Приложение, входящее в состав пакета Microsoft Office (разработано компанией Microsoft).
Rails Scale: 1000 запросов в секунду Макс Лапшин
Митюгина Татьяна Геннадьевна, учитель английского языка МОУ «Кокинская СОШ» Брянской области 2011 г.
Взаимодействие с клиентом в Интернет-системах. Возможности языка PHP.
Практика разработки корпоративных веб-приложений 2007 Дмитрий Шейко (
Транксрипт:

Масштабируемая система голосования на базе 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 = max_lag = 30 мин. max_count = max_lag = 3 мин. max_count = 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= ); COMMIT;

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

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

Pitfalls Нельзя узнать длину очереди! Нельзя очистить очередь! Текстовый формат событий Документация аскетична

Вопросы?

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