[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Принципы разработки под высокие нагрузки
Страницы: 1, 2, 3, 4, 5, 6, 7
twin
Да конечно разберется)))

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

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

Пример. Я уже приводил.

Имеется задача получить данные пользователя для анкеты. В рамках фреймворка мы привычно пишем модель User, в нем метод getUserData(), который любезно нам их предоставляет.

А потом появляется потребность вывести 50 анкет пользователей на страницу. В рамках того же фреймворка мы пишем контроллер, который 50 раз дергает метод getUserData() к примеру. Потому что есть базовые принципы фреймворка. И вот, мы имеем 50 запросов вместо одного возможного, только потому, что экономим людской фактор. Ведь железо дешевле человекочасов, которые нужно потратить на изменение класса User, на внедрение в него нового метода. Зачем, как говорит возмущенный T1grOK изобретать велосипед? Есть метод - пользуйся. Только о какой оптимизации под большие нагрузки может идти речь? 50 запросов вместо одного могут запросто повалить сервер, если он работает на пределе. А это потери времени, клинтуры, денег.

Это конечно вопиющий пример, но часто встречаются подобного рода ляпы, которые и не разглядишь с первого раза. И чтобы найти такое тонкое место, нужно очень серьёзно перелопатить кучу кода, а часто и сам фреймворк, что недопустимо. Ибо пропадет преемственность версий. А это грозит костылями. Потому что приложение расширяется. А не проектируется под конкретную задачу.

Так вот, что бы тут не говорили, фреймворк и высокие нагрузки (особенно в динамическом, часто модифицируемом приложении) вещи совершенно несовместимые.

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

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

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

user posted image
waldicom
вы бы это... того... шли бы флеймить в дургую ветку....
тут же разговор про highload, а это интереснее, чем "фреймворк атстой vs фреймворк круть"

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
twin
Ну вообще то не так. Нами муссируется вопрос "стоит ли использовать фреймворк под большие нагрузки"
Так что все законно smile.gif

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

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

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

user posted image
Joker
Цитата (sharki @ 16.01.2013 - 18:16)
камень в огород Joker, считающий что ООП в ПХП еще не доросло до "нормального ООП"

Я так не считаю) с чего ты взял?))) я считаю что по сей день до сих пор нету серверов (либо они ООООООООЧень дорогие) чтоб ООП использовать в полной мере. Если ты считаешь Symfony ZF фреймворками нормальными с точки зрения ООП то тогда посмотри сшные фреймворки и сразу поймешь ВООООБЩЕ всю мощ ООП. К сожелению пхп интерпритируемый язык и пока просто не вытягивает он всех возможностей (по скорости и ресурсоёмкости) на которые уже реально способен.
Joker
Цитата (T1grOK @ 16.01.2013 - 18:08)
На чем, на чем, а на хорошей основе в виде того или иного фреймворка не стоит пренебрегать даже в высоконагруженных системах. И не поверите  пишут высоконагруженные проекты и на Symfony, так как структура кода очень хорошая, возможности впечатляющие, расширяемость отличная.

Не знаю, меня так учили, так говорят оч многие на HighLoad++ (а дураки там не выступаю) и поводов для не доверия этим людям я не вижу.
Winston
Цитата (Joker @ 16.01.2013 - 14:08)
стандартные пхп сессие тоже отпадают

А вместо их что используется?
inpost
Winston
Их вешают на мем-кеш.

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

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Игорь_Vasinsky
у некоторых тупо ngnix, это если виртуальный хостинг, т.е. хостер - считает кеширование на уровне ngnix вполне достаточно.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Joker
Цитата (Игорь_Vasinsky @ 16.01.2013 - 22:55)
у некоторых тупо ngnix, это если виртуальный хостинг, т.е. хостер - считает кеширование на уровне ngnix вполне достаточно.

высоко нагруженные проекты не когда не сидят на хостингах)
Joker
Invis1ble
многие говорят что мемкеш или аналоги

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


на всякий случай еще раз повторю:
Цитата
я хоть и работал уже с этими правилами, чуть чуть, реально я знаю это только в большей части в теории.
Семён
Joker,
Стараюсь обходить стороной memcache, и использовать простой кеш в tmpfs.
inpost
Invis1ble
Я думаю, что можно догадаться, что я говорил о всех видах кешей, а не только одного конкретного.

Joker
Глупая идея, обычная сессия хранится на файлах, смысл перепихивать с файлов на файлы... какой-то велосипед получается. Киллер писал про интересную вещь, целую папку файловой системы отправить в memory, вместо винта, разве что такую альтернативу, но об этом говорить не буду, сам же не тестировал.

Семён
Та да, не люблю я memcache, какой-то тормознутый он.

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


Их дома на балконе ставят)))

Дата центр может быть и хостером и параллельно сдавать в аренду сервера...

_____________
Ex3m.com.ua — Активный образ жизни
Joker
inpost
Цитата (inpost @ 16.01.2013 - 23:56)
Joker
Глупая идея, обычная сессия хранится на файлах, смысл перепихивать с файлов на файлы... какой-то велосипед получается. Киллер писал про интересную вещь, целую папку файловой системы отправить в memory, вместо винта, разве что такую альтернативу, но об этом говорить не буду, сам же не тестировал.

убирают блокировку нескольких запросов.


s1.php


<?php
session_start();
sleep(30);
echo 's1';


s2.php
<?php
session_start();
echo 's2';


запусти запрос на s1.php а после сразу не дожидаясь пока он выполнится s2.php и увидишь что пока s1.php не отработает s2.php тоже будет висеть... вот переписывают на теже файлы но без блокировки.
Быстрый ответ:

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