Вообщем есть проект написанный не мной, на PHP. PHP вообще ненавижу из-за кучи версий, настроек и прочего. Люблю Node за простоту в этом плане. Go только присматривался и писал хеллоу ворды. Но сейчас стоит задача, для которой не могу выбрать инструмент...
Будет много I/O. Как запросы от клиента (очень много, до 5 запросов в секунду от одного клиента). И много работы с базой.
Но в каждом запросе клиента будут расчеты, по типу собрать из 10 массивов случайные числа, перемножить, проверить что полученные данные больше или меньше того что содержится в базе, так же проверить что выбранные числа содержатся в другом массиве. Записать выбранные числа в базу.
Много читал про ноду, что якобы вычисления ее слабое место. Но ведь есть воркеры, и им можно отдавать такие задачи. PHP я точно не хочу. Я уже давно хочу уйти от него. И встал выбор между Node JS и Go. Go быстрый в этом плане, и хочется пощупать его в реальной задаче. Но если возьму его - то будет времязатраты на изучение. А с Node JS знаком уже на реальных проектах, но без больших вычислений, ну и плюс во фронте JS, хочется писать все на одном языке, без переключений в голове xD
Помогите определится, справится ли нода, если будет 500-1000 одновременных клиентов с расчетами и проверками в базе.
Но в каждом запросе клиента будут расчеты, по типу собрать из 10 массивов случайные числа, перемножить, проверить что полученные данные больше или меньше того что содержится в базе, так же проверить что выбранные числа содержатся в другом массиве. Записать выбранные числа в базу.
Зависит от того сколько времени в среднем происходит чисто вычисление, без учёта обращений к СУБД.
Капитан Пронин, Ни разу не сталкивался что мне нужно держать несколько версий ноды, и что то там настраивать, плеватся от того что в какой то версии что то отключено, устанавливать через apt что либо, чтобы соответствовало циферкам и тд и тп... Создал сервер, запустил в pm2 и все. В любом случае вопрос не в этом. PHP точно не рассматриваю. Сейчас проект на php7.2 nginx на статику, apache+fastCGI на обработку. Не умею настраивать правильно, но пробовал разные настройки. Либо идет задержка ответа когда клиентов становится больше, либо если настроить иначе - то загрузка на 100% CPU от 12-16 клиентов всего. Плюс проект не мой, поэтому разобраться в этой куче из-за чего все идет не так - все равно что застрелится, учитывая что сам язык у меня вызывает неприязнь.
Капитан Пронин, в БД просто выборка строки по id. Либо простая запись строки. Ничего сложного в БД нет. На PHP сами вычисления около 20ms были, с учетом мидлварей 70ms.
calculator212, сейчас сервер так держит только потому что там много говнокода, и мне не хочется в нем разбираться и переписывать. Поэтому я хочу начать с нуля, выпилив лишние и старые функции. Но сейчас встал вопрос выдержит ли нода. Вообщем хочется выбрать правильный инструмент со старта, чтобы потом не переходить на другое... Вообщем наверное правильно написали, что нужно написать тестовый вариант. Мало информации по бэкендам на ноде с вычислениями. Возможно мои вычисления и не являются для ноды блокирующими, а может просто в старом проекте куча говна которое грузит проц :(
20 мс - это 50 пользователей в секунду на одном процессоре.
Если есть некоторая формула, то можно проверить сколько времени занимает вычисление на различных ЯП. От реализации тоже немало зависит. Может, можно задействовать какие-то оптимизированные библиотеки, инструкции процессора и т.д.
Сейчас проект на php7.2 nginx на статику, apache+fastCGI на обработку.
Перевод обработки на nginx + php-fpm уже может заметно повысить отзывчивость, если нет кучи .htaccess - с Апача лучше слезть.
Пока сам сервер настроен архаично - переписывать рабочий проект только из-за того, что "неприязнь испытываю, кюшать не могу" просто глупо.
Node.js обычно лучше подходит для реального времени и обработки большого количества запросов одновременно благодаря использованию неблокирующих операций ввода-вывода (I/O). PHP же лучше подходит для традиционных веб-приложений, которые требуют операций с базой данных и скриптов на стороне сервера¹².
В вашем случае, если будет много I/O и запросов к базе данных, то Node.js может быть лучшим выбором¹. Однако, если в каждом запросе клиента будут расчеты и проверки в базе данных, то PHP может быть более подходящим выбором¹².
Но также стоит учитывать другие факторы, такие как опыт разработчика и доступность инструментов для разработки на каждой из платформ³.