Распределение нагрузки между несколькими серверами

Max[storm]

Новичок
Распределение нагрузки между несколькими серверами

Доброго времени суток)

Столкнулся с одной проблемой - если делать проект в рамках 1-го сервера - все относительно понятно - но вот в последнее время все чаще слышу - проект на 5 серверах. Вот тут я начинаю немного задумываться - ну отдельно вынесли сервер баз данных, а дальнешее дробление по какому принципу происходит? В крупных проектах я замечал, что многие картинки загружаются с отдельного поддомена - типа img.sitename.com/image_name.png. А как остальное дробление происходит? и насколько оно оправданно?

Есть ли какой-нибудь материал по программированию/администрированию проектов с высокой нагрузкой. Причем интересует материал не только по программированию, но и по администрированию. Желательно *nix машин. Пробовал и гуглить и юзать прочие поисковики - выдает кучу всякого хлама. Думаю я просто не до конца понимаю суть проблемы. Если кто с этим сталкивался или знает об этой теме - подскажите, пожалуйста. Можно хотя бы направить) Желательно по изложенной выше теме)))

P.S.

Кто-нить ставил в качестве серверной операционки Mac Os X Server? Насколько это оправданно? До этого я использовал только CentOS, openSUSE, Ubuntu Server и конечно же FreeBSD)
 

Adelf

Administrator
Команда форума
статику можно держать на отдельных машинах
кеш можно держать на разных машинах(memcache например может)
Сами веб-серверы можно держать на разных машинах, а какой-нибудь nginx их балансированно вызывать когда надо.
Да и база данных может быть разбросана на несколько машин.

Надо искать по словам "горизонтальное масштабирование", почитать про nginx и что он умеет - многое станет ясно.
 

Max[storm]

Новичок
Спасибо) Вопрос - подобное распределение между серверами - это прерогатива только nginx или Apache тоже умеет подобное? и, если проводились какие либо тесты, кто как себя продемонстрировал?
 

Gas

может по одной?
Max[storm]
Начни хотя бы с почти художественной литературки - http://www.insight-it.ru/, там есть как теоритические статьи (мало) по масштабированию, так и примеры небольших проектов.
 

fixxxer

К.О.
Партнер клуба
>> Есть ли какой-нибудь материал по программированию/администрированию проектов с высокой нагрузкой

http://highload.ru/papers2008/7145.html дальше гугл

* по веб серверам - google: c10k problem, load balancing
* по базам - google: sharding / partitioning
* алсо - google: NoSQL, memcached
* ну и отложенный процессинг/очереди

>> в качестве серверной операционки Mac Os X Server? Насколько это оправданно?

нинасколько разве что если ты не делаешь интранет для офиса дизайн-студии

-~{}~ 12.01.10 22:33:

>> одобное распределение между серверами - это прерогатива только nginx или Apache тоже умеет подобное?

тут дело в другом

c10k problem алсо google "unix faq как писать сервера"
 

Alexandre

PHPПенсионер
но вот в последнее время все чаще слышу - проект на 5 серверах
это копейки, у Контакта их сотня...
в остальном см комменты fixxxer , он собаку на этом съел.
материала по теме полно, есть книги на англ в электронном виде.
google: HiLoad

Есть ли какой-нибудь материал по программированию/администрированию проектов с высокой нагрузкой.
администрирование - оно и в Африке администрирование, что с низкой, что с высокой нагрузкой... Единственное отличие - есть тонкости настройки и оптимизация ядра сервера.
программирование - оно и в Африке программирование, и что самое интересное, практически не зависит от используемого языка. Говнокодеров как на РНР, так и на С++ полно (и я, к сожалению, один из них. Общался с программерами Контакта и Фотостраны - и там и там много говнокода)

а вот куда следует копать, так это архитектура WEB приложения с высокой нагрузкой.

Вопрос - подобное распределение между серверами - это прерогатива только nginx или Apache тоже умеет подобное?
вообще-то часть нагрузки распределяется на сетевом уровне ( циска )
nginx - может делать балансировку между серверами (это второй уровень распределения)
Апач - этого не умеет (по крайней мере в то время, когда я на нем сидел), и вообще забудь это слово в контексте высоких нагрузок.
-~{}~ 13.01.10 10:50:

предлагаю тему перенести в оффтоп
ни с настройкой, ни с хостингом топик не связан...
 

Farsh

~ on ~ high ~ wave ~
Автор оригинала: Alexandre
это копейки, у Контакта их сотня...
ну уж тогда наверное не сотня, а тысяча, как минимум ;)
У фейсбука пользователей в 6 раз больше, а серверов 35к+
 

Adelf

Administrator
Команда форума
Если уж начали меряться количеством серверов, то надо смотреть сколько у гугля. Помоему, еще года два назад оно перевалило за миллион.
 

Alexandre

PHPПенсионер
да, хотел поправить:
сотня - это только SQL
сколько фронт и контент-сторадж я не в курсе.

что касается фейсбука, на сколько я помню, там технология АСПНЕТ, по этому все не оптимально, так что делим все на 2 или 4 :)
 

phprus

Moderator
Команда форума
Server infrastructure
At QCon San Francisco 2008,[113] Director of Engineering Aditya Agarwal indicated that the front-end servers are running a PHP LAMP stack with the addition of Memcache, and the back-end services are written in a variety of languages including C++, Java, Python and Erlang. Other components of the Facebook infrastructure (which have been released as open source projects) include Scribe, Thrift and Cassandra, as well as existing open-source components such as ODS.
(c) http://en.wikipedia.org/wiki/Facebook

Под снаружи подразумевалось front-end
 
Сверху