Това не е работа само на уеб девелопъри, такива неща изискват системни администратори да настройват сървърите, софтуерни архитекти, които да измислят целия дизайн по начин, който да позволява лесно да се scale-ва в зависимост от натоварването, вероятно мрежови администратори да се занимават с vlan-и, хардуерни load-balancer-и ако има и т.н.
Пак казвам, PHP не е добра идея за такива уеб-приложения. Разните комерсиални j2ee сървъри имат къде по-големи възможности. Примерно два много прости казуса ще ти дам.
Първият е със сесиите, очевидно трябва да ги пазиш някъде. Като имаш простичко PHP приложение, което се хоства на един сървър, не мислиш много за това. Ползваш или файлове, или SQL база. Като имаш няколко машини, които се занимават с динамичното съдържание и load-balancer, който разпределя натоварването, става сложно. Може balancer-а да е умен и да stick-ва сесиите към определен бекенд в зависимост от сесийното cookie. Но дори при това положение, какво става ако една от машините, които търкаля динамичното съдържание крашне или трябва да се спре за подръжка? Ако се е ползвала локална файлова система, всичките сесии отиват по дяволите и хората псуват. Ако се ползва споделена файлова система за сесиите, става грозно, създава се доста мрежов трафик, доста локване и е бавно. Ако се ползва SQL база тотално си ебало майката, неприемливо много SELECT-и. J2EE приложенията могат да си имат сесийни обекти и сесийна репликация между нодовете, това нещо се пише лесно и ти идва почти наготово. PHP не може да прави такива неща, там RPC не се използва.
Втори казус: искаш да разпределиш натоварването по равно между отделните сървъри, които сервират динамично съдържание. Само дето load-balancer-а обикновено е тъп и няма никаква идея за CPU load-а на машините, за изразходваната памет. Могат да станат грозни сцени от сорта на един от бекендите кляка при десетина паралелни заявки, които обаче са тежки, докато останалите си кютат щастливо при 5 пъти повече паралелни заявки. Очевидно това не е оптимално. Това е проблем, който е решен в J2EE света, при PHP ще ти трябва някой C програмист, който да ти напише някакъв бърз load-balancer, който да взема предвид това, защото няма наготово такъв софтуер (vbox-а тръгнаха по този път).
Та такива работи. Пак казвам, фейсбук могат да го правят това, но далеч не е лесно.