На одном проекте начальство придумало отдавать партнёрским сайтам баннер + небольшой JS файл (при нажатии на баннер скрипт получает текущие координаты юзера и перекидывает на наш сайт с ними в параметрах). Баннер + JS — это BN пакет. Для каждого партнёра могут быть разные или только свои пакеты.
И проблема в том, что первый же партнёр имеет 2.5 миллиона уников в неделю. А в планах ещё несколько таких партнёров найти, т.е. нагрузка будет расти сразу и по многу.
И вот задача, как организовать такую раздачу лучшим образом?
Сам проект написан на РНР.
Как вариант мы рассматривали CDN, но у нас всё же логика присутствует, показывать только определённое количество раз, возможность приостановить показ и т.п.
Поискав в сети, нашёл вот хорошую презентацию
www.highload.ru/papers2009/12189.html
В итоге придумал следующую систему. И хотелось-бы услышать мнение опытных хабравчан, насколько это корректное решение, и возможно есть что-то более элегантное.
SS – Сервер статики, хранит и раздаёт статику
LB – Балансировщик нагрузки для начала видимо программный.
MS – (Main server) Сервер основного проекта
CM – (Content manager server). Сервер управления SS`ами, получает команды от MS и отправляет команды к SS.
Типы сообщений
SHOW, HIDE, DELETE
Задачи
SS
- Хранить, удалять и отдавать контент BN
- На каждом установлен Nginx, PHP, база MemcacheDB. У всех одинаковая конфигурация софта
- Также имеет доступ к базе MemcacheDB на CM
- В собственной базе MemcacheDB хранит текущие счётчики и статусы для всех BN и периодически синхронизирует их с CM
- Имеет набор скриптов для обработки поступающих сообщений от CM
CM
- Также хранит мастер-копии всех текущих BN`ов
- Установлен Nginx, PHP, база MemcacheDB.
- Может получать сообщения от MS и слать на SS
- Может синхронизировать SS со своим внутренним набором BN`ов
- Ведёт общую таблицу для всех BN`ов, со счётчиками, текущими статусами и пр.
- Также ведёт таблицу доступных (IP ?) адресов всех SS`ов. И в случае добавления/удаления SS`а в принципе должно быть достаточно прописать/удалить его адрес в этой таблице.
Такой расклад. Опыта к сожалению мало в такого рода задачах, очень интересует мнение хабранарода.
Может не парится и перейти на облачный хостинг? Или на таких нагрузках там дюже цена растёт?
Заранее спасибо!