Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> highload php project, отказоустойчивая php система  
:(
    Опции темы
akazed
Дата 19.12.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



Вопрос адресован к профессионалам, поэтому людям не имеющим реального опыта просьба не офтопить.
Итак суть проблемы. Создаю рекламную систему: банеры, объявления. Предполагаются очень большие нагрузки на БД, т.к. будет индексация площадок, вывод материалов и подсчёт статистики. Реализую всё на связке php5 + MySQL5. Вопрос такой, как сбалансировать систему, может есть конкретные примеры как сделать связку из нескольких выделенных серверов, что не было потери данных при пиковых нагрузках. Ориентировочно предполагается до 100000000 обращение к БД в сутки. Очень нужны конкретные примеры физического разделения back-end и front-end, создание кластеров БД с возможностью безболезненного наращивания ресурсов. Буду признателен за любую информацию по теме.
PM   Вверх
MuToGeN
Дата 20.12.2008, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Тут уже 3хуровневая архитектура будет больше к месту. На морде - лютый, бешеный прокси под фряхой (или, как мне советовали в аналогичном вопросе, хитрая цисковская железка), дальше - несколько машин, между которыми первый уровень распределяет задачи и общий для всех на 2м уровне источник данных. На последний придется поставить дофига оперативы и серьезно оттюнинговать. 


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
MuToGeN
Дата 20.12.2008, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Да, насчет связи между ур.2 и ур.3 - вроде одна контора, для которой мы делали софт, линковала это на пачке firewire шлангов, но я, честно говоря, так и не понял, почему именно так. Возможно, чего-то не знаю.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
akazed
Дата 20.12.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



MuToGeN, я правильно понял? на первый уровень можно поставить nginx в качестве прокси и определённый статический контент хранить в кеше на нём. Далее, если можете, проясните вопрос, потому что пока я как-то плаваю в нём. К примеру на 2 уровне у нас 3 сервера для back-end(следовательно на три машины ставится один и тот-же скрипт), а на 3 уровне 5 машин образуют кластер БД. Поправте меня, если я что-то понимаю не правильно. 
PM   Вверх
MuToGeN
Дата 20.12.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



akazed, извиняюсь, был пьян, посему мысль изложил непонятно. По пунктам:
1 уровень - легковесный веб-сервер. Что делает - раздает статический контент, запросы на динамику передает на 2й уровень, иногда проверяя, кто на 2м уровне сильно загружен, а кто отдыхает.
2 уровень - берет данные с 3го уровня, обрабатывает их, передает на 1й.
3 уровень - источник данных. Тут надо иметь в виду то, что он не должен быть чем-то большим, чем просто источником данных, т.е. не перекладывать на него задачи 2го уровня.
При таком подходе есть огромный плюс - можно без всяких хитрых средств следить за нагрузкой и наращивать аппаратные ресурсы в случае необходимости. Наращивать обычно приходится только 2й уровень.

Я когда-то проектировал одну критичнонагруженную систему, остановился именно на таком варианте. Чуть позже узнал, что гугол, жж и прочие подобные сервисы работают точно так же.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
akazed
Дата 20.12.2008, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



MuToGeN, спасибо, ваши разъяснения мне очень помогли. теперь буду копать глубже в сторону такой архитектуры.
PM   Вверх
MoLeX
Дата 21.12.2008, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



akazed, все что накопаешь выкладывай сюда. Очень полезный материал.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
akazed
Дата 21.12.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



Вот нашёл наглядный пример реализации 3-х уровневой системы
Пример построения высоконагруженной системы на основе открытого решения

PM   Вверх
akazed
Дата 21.12.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



Появился новый вопрос, на который я пока не могу найти ответа.
Сетевой админ предложил использовать MySQL NDBcluster. Может у кого есть пример реализации php скрипта с MySQL сluster. Я с такой задачей сталкиваюсь впервые. И ещё, а стоит ли вообще применять MySQL NDBcluster для создания отказоустойчивой и масштабируемой системы, может лучше использовать репликацию и InnoDB?
PM   Вверх
akazed
Дата 22.12.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



Проведя вечер за исследованием вопроса и материалов конференции highload++ 2008 пришол к выводу, что для построения хорошей системы с лёгкой горизонтальной масштабируемостью, репликация не подходит абсолютно. 
ИМХО, хабре прогеры сильно прогадали, сделав распределение нагрузок между серверами БД на php.
PM   Вверх
MuToGeN
Дата 23.12.2008, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Цитата(akazed @  22.12.2008,  12:42 Найти цитируемый пост)
хабре прогеры сильно прогадали

Я на самом деле порой поглядываю на то, какими инструментами пользуются ребята из Футурико. Просто потому что они наступали на гораздо большее кол-во граблей в плане критичнонагруженных штук. Предпочитаю учиться на чужих ошибках -)

А насчет InnoDB vs NDBCluster - это подбирается эмперически. Все зависит от конечной задачи. Вот Аструм Интертеинмент, к примеру, который держит ТаймЗиро и многие другие проекты, связанные с критичными нагрузками, пользуют в основном NDBCluster.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
akazed
Дата 23.12.2008, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2008
Где: Россия

Репутация: нет
Всего: нет



Сравнивая InnoDB vs NDBCluster, пришол к выводу, что NDBCluster работает быстрее и более устойчив к нагрузкам. Но часть задачи при работе с запросами приходится перекладывать на php. Однако это не создаёт проблем, если изначально использовать оптимально сконфигурированный физ. сервер. Хочу сразу уточнить, что для работы связки php + MySQL cluster нужно как минимум 3 машины. Хотя сейчас хочу поизвращаться и попробовать всё поставить на одну под FreeBSD 7.0
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.