![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
Вопрос адресован к профессионалам, поэтому людям не имеющим реального опыта просьба не офтопить.
Итак суть проблемы. Создаю рекламную систему: банеры, объявления. Предполагаются очень большие нагрузки на БД, т.к. будет индексация площадок, вывод материалов и подсчёт статистики. Реализую всё на связке php5 + MySQL5. Вопрос такой, как сбалансировать систему, может есть конкретные примеры как сделать связку из нескольких выделенных серверов, что не было потери данных при пиковых нагрузках. Ориентировочно предполагается до 100000000 обращение к БД в сутки. Очень нужны конкретные примеры физического разделения back-end и front-end, создание кластеров БД с возможностью безболезненного наращивания ресурсов. Буду признателен за любую информацию по теме. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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! |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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! |
|||
|
||||
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
MuToGeN, я правильно понял? на первый уровень можно поставить nginx в качестве прокси и определённый статический контент хранить в кеше на нём. Далее, если можете, проясните вопрос, потому что пока я как-то плаваю в нём. К примеру на 2 уровне у нас 3 сервера для back-end(следовательно на три машины ставится один и тот-же скрипт), а на 3 уровне 5 машин образуют кластер БД. Поправте меня, если я что-то понимаю не правильно.
|
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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! |
|||
|
||||
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
MuToGeN, спасибо, ваши разъяснения мне очень помогли. теперь буду копать глубже в сторону такой архитектуры.
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 0 Всего: 140 |
akazed, все что накопаешь выкладывай сюда. Очень полезный материал.
-------------------- Amazing |
|||
|
||||
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
Вот нашёл наглядный пример реализации 3-х уровневой системы
Пример построения высоконагруженной системы на основе открытого решения |
|||
|
||||
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
Появился новый вопрос, на который я пока не могу найти ответа.
Сетевой админ предложил использовать MySQL NDBcluster. Может у кого есть пример реализации php скрипта с MySQL сluster. Я с такой задачей сталкиваюсь впервые. И ещё, а стоит ли вообще применять MySQL NDBcluster для создания отказоустойчивой и масштабируемой системы, может лучше использовать репликацию и InnoDB? |
|||
|
||||
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
Проведя вечер за исследованием вопроса и материалов конференции highload++ 2008 пришол к выводу, что для построения хорошей системы с лёгкой горизонтальной масштабируемостью, репликация не подходит абсолютно.
ИМХО, хабре прогеры сильно прогадали, сделав распределение нагрузок между серверами БД на php. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 4 Всего: 32 |
Я на самом деле порой поглядываю на то, какими инструментами пользуются ребята из Футурико. Просто потому что они наступали на гораздо большее кол-во граблей в плане критичнонагруженных штук. Предпочитаю учиться на чужих ошибках -) А насчет 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! |
|||
|
||||
| akazed |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.5.2008 Где: Россия Репутация: нет Всего: нет |
Сравнивая InnoDB vs NDBCluster, пришол к выводу, что NDBCluster работает быстрее и более устойчив к нагрузкам. Но часть задачи при работе с запросами приходится перекладывать на php. Однако это не создаёт проблем, если изначально использовать оптимально сконфигурированный физ. сервер. Хочу сразу уточнить, что для работы связки php + MySQL cluster нужно как минимум 3 машины. Хотя сейчас хочу поизвращаться и попробовать всё поставить на одну под FreeBSD 7.0
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |