Без обид, но я сильно подозреваю, что вы сильно переоцениваете сколько показов вы будете обслуживать.
Это говорит:
PHP или другие языки, используемые на уровне приложений, действительно мало связаны с масштабируемостью. Поскольку уровень приложения делегирует свое состояние базе данных или эквивалентной ей, просто добавить столько емкости, сколько вам нужно, за счет соответствующей балансировки нагрузки. Выбор языка влияет на эффективность сервера и, следовательно, на затраты, но это отличается от масштабируемости.
Масштабирование состояния / хранилища данных усложняется.
Для вашего приложения у вас есть три основных задания:
- какое объявление мы показываем?
- обслуживает добавку
- регистрация впечатлений
Каждый из них потребует обдумывания и, вероятно, различных инструментов.
Второй, обслуживающий добавку, наиболее прост: используйте CDN . Если вы фактически обслуживаете объем, на который претендуете, вы сможете договориться о выгодных ставках.
Решение о том, какое объявление показывать, будет очень специфичным для вашей сети. Это может быть так же просто, как чтение нескольких строк из базы данных, в которых размещаются рекламные объявления для данного свойства за определенный календарный период. Или это может быть сложная контекстная реклама, как Google. Если предположить, что это скорее первое, а база данных размещений мала, то это простая задача масштабирования операций чтения базы данных. Вы можете использовать деревья репликации или, альтернативно, слой кэширования, например memcached .
Последнее в конечном итоге будет самым сложным: как масштабировать записи. Общий подход заключается в том, чтобы по-прежнему использовать базы данных, но принять стратегию масштабного масштабирования. Более экзотическими вариантами может быть использование хранилища ключей / значений, поддерживающего инструкции счетчика, такого как Redis , или масштабируемой базы данных OLAP, такой как Vertica .
Все вышеперечисленное предполагает, что вы в состоянии защитить пространство центра обработки данных и сетевую инициализацию, способную обслуживать эту нагрузку, что не является тривиальным при разговорах по номерам.