LINUX.ORG.RU
ФорумTalks

как вы думаете, почему проекты высокой нагрузки (фб, вк) написаны на рнр и не тормозят?

 


1

2

ведь бытует мнение (?), что пых-пых годится лишь для хоумпаги васи.

а ведь есть же отлично мастабируемые (добавлением новых стоек серверов) проекты на пыхи. без намека на лаги.

почему там нет Илитных языков?


Ответ на: комментарий от tazhate

Наверное, я как-то не так выразился.

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

В редких случаях даже БД не нужна - есть H2/HSQLDB/Derby. В особо крайних случаях - можно напрямую из жабки вызвать Erlang (места с мессенджингом или разбором бинарных протоколов, критичные к падению) или C (места критичные по скорости).

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

А теперь давай то же, но без RabbitMQ и Эрланга, на чистом PHP.

Да легко, в принципе, но зачем? И кто будет оплачивать эту бесполезную работу? :) PHP на данный момент - уже более-менее полноценный язык программирования, который обрастает полезным функционалом и даже начинает избавляться от тяжелого легаси.

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

boombick ★★★★★
()
Ответ на: комментарий от BaBL

С прямыми руками почти все можно написать на практически любом языке.

имея бесконечное время, стабильную спецификацию и отличных инженеров

т.е. вещей, которых в природе не существует

на практике тебе дадут двух студентов - junior X developer, срок в месяц, бюджет в сто тысяч рублей, а новые фичи будут приходить по почте каждые два часа

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

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

Не путай мух и котлет, удобство и возможности.

Есть движки форумов и прочих сервисов на базе файловых БД, ничего не мешает «не тащить» чего-то лишнего, но зачем? Есть общеупотребительные сервисы, которые все используют. С помощью одной БД можно объединить приложения на разных языках, обрабатывая эффективно данные по каждому направлению. Зачем велосипеды изобретать?

Сам же пишешь:

В особо крайних случаях - можно напрямую из жабки вызвать Erlang (места с мессенджингом или разбором бинарных протоколов, критичные к падению) или C (места критичные по скорости).

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

BaBL ★★★★★
()
Ответ на: комментарий от stevejobs

имея бесконечное время, стабильную спецификацию и отличных инженеров

т.е. вещей, которых в природе не существует

на практике тебе дадут двух студентов - junior X developer, срок в месяц, бюджет в сто тысяч рублей, а новые фичи будут приходить по почте каждые два часа


А что, в мире Java как-то по-другому? Нет джуниоров студентов и дебилов работодателей, не умеющих корректно формировать задачи и строить процесс разработки?

BaBL ★★★★★
()
Ответ на: комментарий от stevejobs

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

Телл ми МОАР!!! Тебе о чем-нибудь говорят термины high scalability/high availibility? А «хоумпаги», как ты метко выразился, являются проектами, попадающими под эти определения.

И даже если мы берем для реализации бизнес-логики жабу, то ты ее никак не отмасштабируешь для серьезного трафика без инструментов, которые, вроде как, «не нужны»

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

boombick ★★★★★
()
Ответ на: комментарий от stevejobs

на практике тебе дадут двух студентов - junior X developer, срок в месяц, бюджет в сто тысяч рублей, а новые фичи будут приходить по почте каждые два часа

Все понятно :) Работаешь на потогонке по конвеерному производству визиток и мечтаешь о «серьезных проЭктах» :)

boombick ★★★★★
()
Ответ на: комментарий от marvin_yorke

Вменяемый спец (а, скорее, наглый :)) может смело рассчитывать примерно на 120 килорублей

boombick ★★★★★
()

мастабируемые

какие-какие, простите?

nanoolinux ★★★★
()
Ответ на: комментарий от boombick

ну вот можно человека за месяц научить прогать на JS, вручить ему nodejs, jquery, couchdb и он со всем справится. Это и стоимость, и скорость. Человеку не нужно учить 56 технологий чтобы запустить сайт. Есть один язык на все и сразу.

В Яве можно забить на кэширование вообще, пока приложение помещается в 128 Гб рамы. Это очень быстро и дешево, вместо того, чтобы две недели писать какие-то сложные алгоритмы кэширования - сразу фигачить все в оперативку. Месяц работы девелопера стоит 50-150 тысяч рублей. На 150 тысяч рублей можно купить столько оперативки, что кушать ее попой.

В Эрланге можно забить мессенджинг и парсинг бинарей. Вместо того, чтобы писать RPC поверх протобуфа (X дней на изучение, Y на проектирование, Z на реализацию), зафигачить собственный наколенный бинарный протокол (1 час покурить, 2 часа зафигачить). Пока Вася разбирается в гугловских реализациях, Петя уже нафигачит более 9000 разных протоколов :)

все это уже есть в самих базовых платформах. А что есть в базовой платформе PHP? А ничего нету! Так зачем она нужна?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

пока приложение помещается в 128 Гб рамы

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

1 час покурить, 2 часа зафигачить

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

А что есть в базовой платформе PHP? А ничего нету! Так зачем она нужна?

Да все там есть :) Просто тебе кто-то внушил, что пых - это плохо. Вот ты и сучишь ножками :) И что есть «базовая платформа», кстати?

boombick ★★★★★
()
Ответ на: комментарий от AGUtilities

Я вот именно в данный момент делаю highload-проект на питоне и огребаю нереальную кучу граблей. Совсем других, не пыховых, но огребаю.

boombick ★★★★★
()
Ответ на: комментарий от stevejobs

Хочешь? Возьми и сделай. Ты же знаешь как надо, судя по твоим высказываниям?

boombick ★★★★★
()
Ответ на: комментарий от stevejobs

Ты обрати внимание что большинство высоконагруженных проектов отчегото страдает велосипедостротиельством, вместо сипользования готовых технологий на javaee™.

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

Deleted
()

Кстати, не знаю, упоминали ли тут уже, но Одноклассники на java. Возможно, даже, целиком.

note173 ★★★★★
()
Ответ на: комментарий от boombick

огребаю нереальную кучу граблей.

из-за сишных расширений?

AGUtilities ★★★
()
Ответ на: комментарий от boombick

Вертикальное масштабирование имеет предел, а потом начинается ад.

надо вначале подумать, может проблемы можно не решать вообще :)

например, есть у нас MMORPG. Отлично работает на 5 тысячах человек, на 10 - уже предел вертикального масштабирования. Что делать? Не масштабировать. Сделать еще один игровой мир тупым клонированием сервера, поставить планку зарегистрированных пользователей в 6 тысяч на каждом.

пример - World of Warcraft, SWTOR, все остальные крупные ммо

например, есть у нас документы в вики. Три года документы хранятся, а четыре - уже предел. Что делать? Два урла: old.documents.local и new.documents.local.

пример - куча организаций, которых «интеграторы интегрировали, но не выинтегрировали». Например, есть какая-то помойка в Шарепоинте с новыми документами, начиная с 2011, и локальная шара со старыми документами.

которые будут пытаться это наколенный протокол расширять и внедрять

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

а жаба отлично рефакторится. Refactor rename - действительно ли вы хотите изменить 13 541 файла? О да, действительно. Полное говно, но оно просто работает. В то время как на питоне (не имея возможности быстрого и простого рефакторинга) нужно возводить мегафункциональные мегаабстракции, всеобщие теории всего, итп

И что есть «базовая платформа», кстати?

хорошо иметь что-то типа iOS/OSX SDK. Установил на комп, прочитал книжку «все что нужно знать разработчику», пошел печь пирожки, well done

может, для вской науки и прогресса такой подход не очень.

после того, как тебя уволят из-за профнепригодности

ты хотел сказать «заказчик не примет результат»? Заказчик примет. Ведь оно работает.

stevejobs ★★★★☆
()
Ответ на: комментарий от boombick

Просто тебе кто-то внушил, что пых - это плохо. Вот ты и сучишь ножками :)

у него просто зудит от того что пхп кодеры делают тоже самое, что и он, а порой и дешевле/легче/быстрее

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

так они не все такие, тебе просто не повезло или сам позволил так к себе относиться

Ну, знаешь. Позволил != они прям должны так и относиться. Или ты имеешь в виду, что они к этому все стремятся, если им не запретить вовремя в явном виде? Вот знаешь, я при знакомстве не привык явно запрещать коллегам срать мне на голову, и ты не поверишь, они все равно не срут. Даже если бы я был пьян и мне было пофигу. Им воспитание и базовая этика этого не позволяют. Хочешь ли ты сказать, что женщины лишены напрочь такого чувства?

shimon ★★★★★
()
Ответ на: комментарий от boombick

Я вот именно в данный момент делаю highload-проект на питоне и огребаю нереальную кучу граблей. Совсем других, не пыховых, но огребаю.

Расскажи, при случае. Интересно поговорить об устрицах с теми, кто их кушал, а то лоровские аналитеги со своим «раз пистон, значит говно», уже подзаколебали малость.

shimon ★★★★★
()
Ответ на: комментарий от shimon

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

xtraeft ★★☆☆
()
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от stevejobs

И что есть «базовая платформа», кстати?

хорошо иметь что-то типа iOS/OSX SDK. Установил на комп, прочитал книжку «все что нужно знать разработчику», пошел печь пирожки, well done


ээээ... я тебе большую тайну открою: iOS/OSX SDK - это не язык программирования.. там язык: Objective-C и «базовая платформа» у него не лучше чем у PHP.

Если ты в таких абстракциях рассуждаешь, то:
Zend Framework, Symfony, Kohana, Yii

вперед.

BaBL ★★★★★
()
Ответ на: комментарий от stevejobs

Такие женщины есть и твои запросы нормальны. Их просто мало, но при желании ты найдешь такую и будешь с ней счастлив. Главное - не отчаивайся и ищи свой идеал:)

gear ★★★
()
Ответ на: комментарий от stevejobs

RabbitMQ Redis все это внешнее говно
пока приложение помещается в 128 Гб рамы

так тонко что даже толсто

wxw ★★★★★
()

Пыха в таких проектах используется максимум как простенький шаблонизатор, остальное - на нормальных языках.

enchantner
()
Ответ на: комментарий от enchantner

Пыха в таких проектах используется максимум как простенький шаблонизатор, остальное - на нормальных языках.

Пыха - это какой-то шаблонизатор для нормального языка PHP?

BaBL ★★★★★
()
Ответ на: комментарий от stevejobs

Отлично работает на 5 тысячах человек

Мои проекты отлично работают на 3-4М хитов/сутки :) Я имею в виду, естественно, динамические вызовы, статику не считаем. И да, живут они на 20-30 серверах (каждый) и прекрасно себя чувствуют. Памяти на каждом не больше 16Gb, в основном - 8, только для сфинкса обычно ставлю 16, ему хочется

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

А роутить все балансером? :) Поздравляю, ты изобрел шардинг :)

В Эрланге все так делается, там люди настолько суровы, что даже не в курсе, есть ли у них тулзы для рефакторинга

Вот только не надо рассказывать мне про Эрланг :) Я на нем успешно пишу и представляю, что это такое и с чем это едят. И если в твоем мире все так делается, то принимай соболезнования. В _больших_ _коммерческих_ проектах никто ничего просто так не выкидывает, никогда. Ибо чревато попадосом на серьезное бабло. Поэтому там сначала думают, потом делают.

В то время как на питоне (не имея возможности быстрого и простого рефакторинга) нужно возводить мегафункциональные мегаабстракции

Кому нужно? Вообще highload == Keep It Simple Stupid. И в этом вся сложность разработки веб-проектов под большую нагрузку. Каждый новый девелопер в моей команде всегда стремится наворотить именно такого. После двух-трех месяцев, обычно, подобные желания успешно умирают. Все делается как можно проще и линейнее, а жабовские декораторы фабрики адаптеров фабрик фабрик фабрик тут не канают вообще никак. И решения на жабе (как в моем случае этот гребаный neo4j) внедряются совсем уж от безысходности. И то, для того, чтобы эта дрянь могла нормально масштабироваться и деплоиться, пришлось написать солидную питонячью обвязку вокруг нее

ты хотел сказать «заказчик не примет результат»? Заказчик примет. Ведь оно работает.

Я сказал именно то, что хотел сказать. У ВК и ФБ (равно как у многих больших проектов) работу принимает не заказчик, а техдиры и сеньоры, которые очень в теме. Делают жесткий code review и оценивают не красоту иерархии классов, а применимость решения в условиях текущего состояния production-среды. «Оно работает» - это подход школьников-быдлокодеров на потогонках, в моем случае код уходит на продакшен только в случае «оно работает, не создает проблем окружающим сервисам, умеет красиво умереть и сообщить об этом всем зависимым компонентам, внятно и грамотно пишет логи, не встает колом в случае недоступности внешних источников данных, не создаёт оверхед по ресурсам и умеет горизонтально отмасштабироваться на любое количество серверов. При этом документировано и в таск-трекере помечено как solved»

Установил на комп, прочитал книжку «все что нужно знать разработчику», пошел печь пирожки, well done

Не надо тебе в маськву, там таких на рубль пучок можно купить.

boombick ★★★★★
()
Ответ на: комментарий от BaBL

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

enchantner
()
Ответ на: комментарий от shimon

Питоноспецифичные грабли типа GIL, circle import, memory leaks в зеленых тредах и тому подобное :) Еще вызывает прям-таки физическую боль то, что питон позволяет творить кучу всякой магии и каждый, сцуко, стремится продемонстрировать, что он ее знает и ей владеет. А также крайне кривые, блин, сторонние модули, которые приходится с микроскопом проходить. Хотя этой траблой страдают все, по-моему :) Не знаю насчет рубей, меня от этого говна тошнит, потому даже не прикасаюсь. Но вот перловский CPAN и пыховский PEAR - те еще помойки

boombick ★★★★★
()
Ответ на: комментарий от enchantner

Все страдают от легаси. Если есть возможность не морочиться этим, то пых становится вполне себе нормально языком. Особенно в комплекте с php-fpm, который уже есть в стандартной поставке.

Вообще, по-моему, для реализации бизнес-логики в вебе подход «запустился-отработал-умер» идеален. Состояния пусть хранят внешние источники и получать эти состояния можно on demand (хотят тут есть некие траблы с реализацией пула коннектов к БД, например. Но и это тоже решается. Более того, часто коннект к БД не является прям таким уж серьезным боттлнеком). А внятный фастцги-менеджер (особенно в комплекте с каким-нибудь кэширующим оптимизатором байт-кода), который позволяет не инициализировать при каждом обращении к скрипту весь энвайронмент, вообще решает кучу проблем. И его перезапуск - гораздо менее болезненная операция, нежели перезапуск того же uwsgi, например. Я имею в виду живой проект с серьезной нагрузкой.

Я не защищаю пых, у него есть куча косяков, от которых меня тошнит давно и серьезно. Но отношение к нему явно предвзятое и оно, как правило, исходит от тех, кто дальше «своей CMS с нескучными обоями» не продвинулся

boombick ★★★★★
()
Ответ на: комментарий от boombick

питон позволяет творить кучу всякой магии и каждый, сцуко, стремится продемонстрировать, что он ее знает и ей владеет

Если вспомнить, что рядом такие титаны жанра, как Lisp и Perl - не аргумент. Да и писать на питоне далеко не все умеют нормально, к сожалению.

А также крайне кривые, блин, сторонние модули, которые приходится с микроскопом проходить.

Тут соглашусь, но микроскоп не нужен - питон читабельный, понять, чего откуда произрастает, довольно просто. В упомянутых PHP и Perl (да и Ruby) все куда печальнее.

enchantner
()
Ответ на: комментарий от unanimous

Ну вот смотри какое интересное обсуждение в конце пошло.

Молодец я :)

dk-
() автор топика
Ответ на: комментарий от enchantner

Да какие аргументы? :) Я просто рассказываю о сложностях, с которыми я сталкиваюсь при разработке на питоне. В целом мне приятно и легко на нем писать, прекрасный язык.

boombick ★★★★★
()
Ответ на: комментарий от boombick

Питоноспецифичные грабли типа GIL, circle import, memory leaks в зеленых тредах и тому подобное :) Еще вызывает прям-таки физическую боль то, что питон позволяет творить кучу всякой магии и каждый, сцуко, стремится продемонстрировать, что он ее знает и ей владеет.

Грабли делятся в моем понимании на два класса:
1) путь с граблями казался наиболее очевидным по причине архитектурного недосмотра на любой стороне (в том числе и самого питона);
2) путь с граблями выбирался от незнания пути без граблей (обычное дело прийти со знанием перлов/пхпов и моментально построить велосипед, не покопавшись сперва в батарейках питона).

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

Вот меня более всего интересуют грабли, которые можно причислить к пункту 1: они появляются, если только прочесть документацию, которая может оказаться неполной/ошибочной, а для полноценной разработки надо знать некоторые не совсем очевидные нюансы.

shimon ★★★★★
()
Ответ на: комментарий от boombick

Если честно, мое отношение к пыху строится примерно на тех же принципах, что и отношение к node.js - язык очень сильно старается найти применение в задачах, которые выходят за его область применения. То есть пых изначально не предназначен для решения задач, отличных от серверсайд-генерации html и базовой работы с БД, но при этом в него пытаются всеми силами впихнуть, пусть даже костылями, черты, которые присущи языкам общего назначения. Это неправильно и это портит язык, имхо.

enchantner
()
Ответ на: комментарий от shimon

Слушай, я так с ходу тебе не выдам, наверное :) Я, вообще, архитектор и кода пишу не так уж много, в основном прототипы, тесты или что-то специфичное.

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

boombick ★★★★★
()
Ответ на: комментарий от anthill

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

boombick ★★★★★
()
Ответ на: комментарий от enchantner

Ну.. Вообще, не могу не согласиться. Однако это не повод кричать, что пых - говно и место его на свалке неудачных экспериментов

boombick ★★★★★
()
Ответ на: комментарий от boombick

питон позволяет творить кучу всякой магии и каждый, сцуко, стремится продемонстрировать

Чем реально хороша идея явы - платформа так и говорит «вы нихрена не можете» но потом придумали spring, тьфу!

Deleted
()
Ответ на: комментарий от boombick

Может, я неправ, но вообще мне кажется, что многие пинки разработчики PHP заслужили - просто потому что не слишком усердствуют при реализации, в общем-то, базовых для языка вещей, и оставляют лазейки для ужасно глупых дыр в неумелых руках. Про те же дырки в рандоме не говорил только ленивый. При развитии разного рода ORM SQL-инъекций и прочей подобной ерунды стало сильно меньше - однако, за саму концепцию прямого выполнения SQL-кода из приложения надо отрывать руки. Проблема не в том, что это МОЖНО, проблема в том, что никто из разработчиков не написал нормального стайлгайда и не написал, что это НЕЛЬЗЯ и за это надо отрывать руки. А сейчас уже поздно, помидоры сползают по лицу.

enchantner
()

Потому что писать надо уметь. Все равно на чем. Правильная структура это главное.

Sociopsih ★☆
()
Ответ на: комментарий от Deleted

В том, что для них есть нормальные правила кодинга и гайды, да и любой нормальный программист, увидев такое, сломает об коллегу клавиатуру. А в PHP это норма, потому что никто не написал, что вообще-то так делать не стоит. Самое смешное - именно поэтому во многих языках нет встроенного модуля работы с БД через SQL-строки.

enchantner
()
Ответ на: комментарий от enchantner

В том, что для них есть нормальные правила кодинга и гайды

Ниразу не видел таких. Не есть всякие онанистские тексты как называть методы, классы как ставить отступы и т.п.

А вот как работать с базой - только тупые статеки на швабре, да на буржуйских сайтах.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.