[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Принципы разработки под высокие нагрузки
Страницы: 1, 2, 3, 4, 5, 6, 7
ApuktaChehov
Ни одного высоконагруженого сайта не писал. Зато разрабатывал высоконагруженный движок на PHP. Делал нагрузочное тестирование. На стареньком компе обрабатывал примерно 2000 запросов в секунду. Так же проводил тесты сравнивая JQ и чистый JS.


И в правду, чего-то я разошелся. Всем спасибо за диалог.
Мы все тут мега отцы своего дела. Только почему-то при нашей крутости, до сих пор миллионов не заработали.

Есть кто заработал? Делись! biggrin.gif

_____________
RCuPeR
Да задрали вы, а ну прекратите! Вон нафиг пальцами мерятся в личку или еще куда!
Вчера был здравый холивар на тему "фреймворки в высоконагруженных проектах", сегодня - хрен знает что. Прекращайте!

Прошу модераторов обратить внимание.

_____________
Гнусный социопат с комплексом Бога.
twin
Joker
Цитата
Движок твина это точно такой же фреймворк с какой то структурой и стилем, разница не использует ООП.
Ты отстал от жизни))) Коньюнктура диктует свое, и в моем движке есть ООП в его самом злокачественном проявлении. И да, он теперь похож на фреймворк.

Однако это движок для обычных сайтов, не для высоконагруженных. И от классических фреймворков отличается тем, что в его ядре собраны только те функции и классы, которым нет аналогов в PHP. Допустим функция htmlspecialchars() не может работать с массивами. А моя обертка htmlchars() может. Если бы первая могла, не стал бы я писать свою. А вот классические фреймворки зачастую просто подменяют одна другую, добавляя быть может только расширенный дебаггинг. Что важно только на стадии разработки, и остается в приложении на всегда. И потому классические фреймворки и получаются тормознутыми и ресурсоемкими.

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

А под твое определение фреймворка можно подвести любое, более-менее внятное приложение. Неужели кто-то в здравом уме и рассудке будет в каждом приложении снуля писать пагинатор или почтовый класс. Конечно будет собрана библиотека готовых решений. Однако если не зажиматься в рамки, можно использовать любые наработки. А фреймворк диктует свои законы. Да, можно конечно расширить его и своими наработками, в чем тогда его смысл вообще?

Смысл фреймворка - собрать сайт несколькими строчками, используя внутренние резервы. Библиотеки фреймворка. Дополнять его своими альтернативными решениями, это так же, как поставить на запорожец спереди еще один двигатель от жигулей. Он лучше, но ему и тот, который сзади, придется за собой тащить.

Уж лучше спроектировать самоделку из готовых, проверенных агрегатов, подгоняя один к другому и дополняя эксклюзивными деталями, чем пытаться сделать боллид формулы 1. взяв за основу москвич 412.

Так что мимо. Структура - еще не значит фреймворк. И без структуры никак. Но высоконагруженные проекты лично я не стал бы обременять костными правилами фреймворков.

Цитата
Это сорказм? Если нет то я понимаю почему ты и твои ученики очень плохо относятся к фреймам, текущие фреймы уже давно от такого ушли) Сделается только 1 запрос)))
Это не сарказм. Это пример из жизни. Лично я с этим сталкивался. И я же написал - пример вопиющего безобразия. Есть моменты гораздо прозаичнее, которые и не разглядишь сразу. Ибо инкапсуляция. Не лезь в фреймворк, не твоего ума дело. А там может все что угодно твориться.

На высоких нагрузках код должен быть максимально прозрачным и управляемым. Каждая секунда простоя, как серпом по фаберже. А фреймворки прозрачностью не блещут, увы. Или ты хочешь сказать, что с закрытыми глазами знаешь, как устроен ZF в любой его части?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Joker
sharki
Я не меряюсь письками, я сам за жинь написал 7 сайтов и 0 высоко нагруженных, суть в другом что кроме высоких нагрузок фреймы могут сделать ВСЕ. А те кто говорят что нет, только потому что незнают.

Цитата (twin @ 17.01.2013 - 16:44)
На высоких нагрузках код должен быть максимально прозрачным и управляемым. Каждая секунда простоя, как серпом по фаберже. А фреймворки прозрачностью не блещут, увы. Или ты хочешь сказать, что с закрытыми глазами знаешь, как устроен ZF в любой его части?



на высоких на грузках я и не спорю, но на всех остальных проектах, ты выигрываешь в скорости разработки, а значит в деньгах, а его тормазнутость не когда не кто не узнает о ней т.к. НАГРУЗОК не будет, люди вы о чом джумлу половина студий юзает которая со стороны сткорости вообще черепаха.
VELIK505
Цитата (RCuPeR @ 16.01.2013 - 09:59)
В требованиях к разработчику веб-приложений, все больше и больше компаний указываю следующие требование:
Цитата
Понимание принципов разработки под высокие нагрузки;
Опыт с высоко-нагруженными проектами (есть ли, в чем проявлялся highload на ваших проектах)?


Что это? Как это? Зачем это?

Убедительная просьба: не уверен - не пиши. Советы типа: "нужно, кароче, тупо оптимизировать свой код и все будет зашибись" - оставлять в своей базе знаний и не пускать дальше.

Я понимаю это так. Знать и умение работать с memcache(d), redis, какие-то nosql базы, реплика mysql, оптимизация, клиентская оптимизация. Ещё по тему можешь почитать тут http://www.insight-it.ru/highload/ может чего ещё надумаешь.
Joker
Ну я бы еще добавил что, бд надо проектировать с точки зрения запросов, которые будут посылаться в неё, а не с точки зрения теории стоительства "правильной" бд.
ApuktaChehov
RCuPeR - я добавлю нотку о БД.

Стоит учитывать тот факт, что работу php могут разделять сколько угодно количество серверов. В то время как БД бывает сложно разнести на несколько машин.

По этому имеет смысл перенести часть работы СУБД на php.

_____________
Joker
Цитата (ApuktaChehov @ 17.01.2013 - 17:05)
По этому имеет смысл перенести часть работы БД на php.

Это ты про какую часть????
ApuktaChehov
Joker - сложные алгоритмы обработки выбранных из БД данных.

_____________
Joker
Я скажу больше про сложные выборки вообще можете забыть)
twin
Joker
Цитата
на высоких на грузках я и не спорю, но на всех остальных проектах, ты выигрываешь в скорости разработки, а значит в деньгах,

Величина нагрузки - вещь относительная. Вконтакт тот же к примеру имеет столько серверов, что ежедневно меняют 8-10 жестких дисков. У них одна нагрузка.

Кто-то ограничен в ресурсах, и для него 1000 уников в сутки - уже нагрузка.

Твой подход - рвануть бабла, а дальше не мое дело, имеет конечно место быть. И почему то часто поборниками фреймворков выдаются за плюс. Но есть еще и обслуживание. Не только разработка. Так вот, повторюсь. Фреймворк выгоден только на стадии разработки и выгоден в первую очередь исполнителю. Заказчик тоже может сэкономить, но скупой платит дважды. Сэкономив на разработчиках, он рискует потратиться на сервера, если популярность его ресурса превысит ожидания.

А раз мы тут пытаемся рассмотреть действительно большие нагрузки (для меня это от 1000 запросов в секунду, с такими проектами приходится работать), то сторона обслуживания мне знакома не по наслышке. И этот аспект в частности.

Хотя это дело этики и совести скорее. Желание заработать побольше - вполне законное желание.

По сути что могу сказать. Нужно стараться как можно больше разгрузить СУБД, перекладывая максимум вычислений на сторону PHP. На первый взгляд абсурд - сервера БД работают быстрее. Однако однопоточность их сводит на нет выигрыш по скорости.

Можно коротеньким запросом получить данные, а потом долго обрабатывать в несколько потоков на стороне PHP, а можно слепить один сложный запрос и забить очередь.

А на стороне PHP стараться поменьше использовать перезаписей. Чем кстати очень грешат фреймворки. Это ускорит процессы и сэкономит память.

Ну а о репликациях отдельный разговор, тут в двух словах не расскажешь. Слишком специфичная вещь, на каждом приложении своя структура и свои правила.

UPD ApuktaChehov опередил чутка. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Joker
Цитата (twin @ 17.01.2013 - 17:15)
Твой подход - рвануть бабла, а дальше не мое дело. имеет конечно место быть.

Нет ну если вы все такие хорошие и строите системы за мизер, любому заказчику под высокую нагрузку то флаг вам со своим движком) И мой подход выполнить требования тз, а не выделываться на весь белый свет пол года что я умею писать
Цитата (ApuktaChehov @ 17.01.2013 - 16:40)
высоконагруженный движок на PHP



Просто есть требования к каждому проекту при таких то ресурсах держать такую то нагрузку. И если заказчик не бродяга с улицы то хостинг за 5к в год позволить себе сможет, а туда уже любой двиг заливай хоть джумлу хоть ZF. Вытянит.
RCuPeR
Цитата (ApuktaChehov @ 17.01.2013 - 12:05)
RCuPeR - я добавлю нотку о БД.

Стоит учитывать тот факт, что работу php могут разделять сколько угодно количество серверов. В то время как БД бывает сложно разнести на несколько машин.

По этому имеет смысл перенести часть работы СУБД на php.

Именно об этом сейчас читаю в той книге, которую рекомендовал выше (первая страница). Благо, тут все понятно.
Не понятно следующее: смысл репликации (дублирования), вот тут-то я закипел sad.gif

VELIK505, спасибо за точный, лаконичный ответ! smile.gif

_____________
Гнусный социопат с комплексом Бога.
Joker
Цитата (RCuPeR @ 17.01.2013 - 17:39)
Не понятно следующее: смысл репликации (дублирования), вот тут-то я закипел 

Разносят на минимум не 2 сервера, один мастер (в него только пишут insert update), а все остальные серваки выводят (select), данные реплицируются с мастера (на который пишут) на слейвы (которые выводят).
inpost
"запусти запрос на s1.php а после сразу не дожидаясь пока он выполнится s2.php и увидишь что пока s1.php не отработает s2.php тоже будет висеть... вот переписывают на теже файлы но без блокировки."
Запустил, в разных браузерах, всё ок работает smile.gif
Может ты имел ввиду блокировку БРАУЗЕРА, когда первый запрос не будет выполнен - не отправляется второй запрос? Так это уже дело браузера.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.