Вопрос

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

Erlang выглядит как гораздо более устойчивое решение, но требует гораздо большего изучения и много погружения в функциональную язык парадигму. И похоже, что Erlang делает его намного лучше, когда дело доходит до нескольких ядер CPU (исправь меня, если я ошибаюсь).

Но что я должен выбрать? Какой из них лучше на короткой / долгосрочной перспективе?

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

Это было полезно?

Решение

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

Другие советы

Я не могу говорить за Erlang, но несколько вещей, которые не упоминали о узле:

  • Узел использует двигатель V8 Google для фактического компиляции JavaScript в машинный код. Так что узел на самом деле довольно быстро. Так что это на вершине скоростных преимуществ, предлагаемых программированием, ориентированным на событиями и неблокирующим IO.
  • Узел имеет довольно активное сообщество. Прыгать на их группу IRC на Фринаде, и вы увидите, что я имею в виду
  • Я заметил, что вышеуказанные комментарии Push Erlang на основании того, что будет полезно изучить функциональный язык программирования. Пока я согласна, что важно расширить вашу квалищное нарушение и получить один из тех, кто находится под поясом, вы не должны основывать проект по тому, что вы хотите узнать новый стиль программирования
  • С другой стороны, JavaScript уже находится в парадигме, в котором вы чувствуете себя комфортно написанию! Плюс это JavaScript, поэтому, когда вы пишете побочный код клиента, он будет выглядеть и чувствовать себя последовательным.
  • Сообщество узла уже закачила тонны модулиДействительно Есть модули для Redis, Mongodb, Cound и что у вас. Другой хороший модуль, чтобы посмотреть в выражать (думаю Sinatra для узла)

Проверьте видео На блоге Yahoo от Ryan Dahl, парень, который на самом деле писал узел. Я думаю, что это поможет дать вам лучшую идею, на котором есть узел, и куда это происходит.

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

Я многолетний программист Erlang, и этот вопрос побудил меня взглянуть на Node.js. Это выглядит довольно чертовски хорошо.

Появится, что вам нужно создавать несколько процессов, чтобы воспользоваться несколькими сердечниками. Я не вижу ничего о настройке аффинности процессора. Вы можете использовать задачу на Linux, но он, вероятно, должен быть параметризован и установлен в программе.

Я также заметил, что поддержка платформы может быть немного слабее. В частности, похоже, вам нужно будет работать под Cygwin для поддержки Windows.

Хорошо выглядит хорошо.


Редактировать

Node.js теперь имеет родную поддержку для Windows.

Я смотрю на то же самые две альтернативы, которые вы, Готт, для нескольких проектов.

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

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

Erlang действительно глубокий бассейн, чтобы погрузиться. Я бы предложил написать автономную функциональную программу сначала перед запуском создания веб-приложений. Еще проще первого шага, поскольку вам кажется удобным с JavaScript, это попробовать программирование JS в более функциональном стиле. Если вы используете jQuery или прототип, вы уже запустили этот путь. Попробуйте подпрыгивать между чистым функциональным программированием в эрланге или одном из его родственников (Haskell, f #, Scala ...) и функциональных js.

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

Пока лично я бы пошел на Эрланг, я признаю, что я немного предвзятый против JavaScript. Мой совет заключается в том, что вы оцениваете несколько очков:

  1. Вы используете существующий код в одном из этих языков (как с точки зрения исходного кода, так и опыта программиста!)
  2. Вам нужны / хотите обновления на лету без остановки приложения (вот где erlang выигрывает по умолчанию - его выполнение было разработано для этого случая, и OTP содержит все необходимые инструменты)
  3. Насколько большой ожидаемый трафик, с точки зрения отдельных, одновременных операций, а не пропускной способности?
  4. Как «параллель» являются операциями, которые вы делаете для каждого запроса?

ERLANG действительно обоснована настроенная параллельная система параллельной распределенной системы параллельной распределенной системы. В зависимости от того, что именно проект, доступность зрелого осуществления такой системы может перевесить любые проблемы, касающиеся изучения нового языка. Есть также два других языка, которые работают над ERLANG VM, который вы можете использовать, рубиновый / питонский Reia а также Ароматизированный на льм.

Еще один вариант - использовать оба, особенно с использованием Erlang, используемый в качестве рода «хаба». Я не уверен, имеет ли у Node.js систему интерфейса внешней функции, но если она имеет, Erlang имеет библиотеку C для внешних процессов в интерфейс с системой, как и любой другой процесс Erlang.

Похоже, что Erlang лучше выполняет для развертывания на относительно низкоугольный сервер (512 МБ 4-ядра 2,4 ГГц AMD VM). Это от Опыт синхронизации По сравнению с реализациями Erlang VS Node.js их виртуального сервера доски.

Есть еще один язык на том же виртуальной машине, что Эрланг -> Эликсир

Это очень интересная альтернатива Erlang, проверьте этот раз.

Также он имеет быстрорастущую веб-каркас на основе IT->>> Phoenix Framework

WhatsApp никогда не сможет достичь уровня масштабируемости и надежности без Erlang https://www.youtube.com/watch?v=c12Cyautxxs.

Я предпочел Эрланг над узлом. Если вы хотите параллелизм, узел может быть заменен Эрлангом или Голангом из-за их легких процессов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top