Какие недостатки можно найти в использовании Erlang?
-
03-07-2019 - |
Вопрос
Я рассматриваю Erlang как потенциал для моего будущего проекта. Мне нужен " Очень масштабируемый, очень надежный " (да, какой проект не?) веб-сервер, чтобы принимать HTTP-запросы, но не обслуживать HTML. У нас есть тысячи распределенных клиентов (других систем, а не пользователей), которые будут отправлять двоичные данные в центральный кластер серверов для автономной обработки. Ответы будут очень короткими, успех, сбой, код ошибки, минимальное количество данных. Мы хотим использовать HTTP, поскольку это наш лучший шанс обойти брандмауэры. Р>
Учитывая эту ограниченную информацию о проекте, можете ли вы указать какие-либо недостатки, которые могут возникнуть при использовании такой технологии, как Erlang? Например, я понимаю, что возможности обработки текста в Erlang могут оставить желать лучшего.
Ваши комментарии приветствуются. Спасибо.
Решение
Звучит как идеальный кандидат на такой язык, как Эрланг. Свойства масштабирования языка очень хороши, но если вы беспокоитесь о возможностях обработки данных, вам не следует. Это очень мощный язык со многими библиотеками, доступными для разработчиков. Это старый язык, и он интенсивно использовался / тестировался в прошлом, поэтому все, что вы хотите сделать, возможно, уже сделано в некоторой степени.
Другие советы
Убедитесь, что вы используете версию Erlang R11B5 или новее! Более ранние версии erlang не обеспечивали возможность тайм-аута tcp-отправок. Это приводит к тому, что заблокированные или злонамеренные клиенты могут выполнять DoS-атаку на ваше приложение, отказываясь получать данные, которые вы им отправляете, тем самым блокируя процесс отправки.
См. выпуск OTP-6684 в заметках о выпуске R11B5 .
Erlang обеспечивает масштабируемость и надежность, но из определения вашего проекта вы не укажете, какой тип обработки текста вам понадобится. Р>
Я думаю, что основным ограничением Эрланга может быть поиск опытных разработчиков в вашем регионе. Проведите исследование о наличии архитекторов и программистов Erlang.
Если вы собираетесь учить себя или ваши разработчики изучают это на работе, имейте в виду, что это совсем другой способ кодирования и что, хотя базовая документация хороша, многие люди хотят, чтобы было больше примеров. Конечно, очень активное сообщество легко восполняет это.
Я понимаю обработку текста в Erlang Возможности могут оставить что-то быть желанным.
Проект starling уже обеспечивает базовую поддержку Юникода, и в настоящее время существует EEP (предложение по улучшению Erlang) в черновике, но собираюсь внести его в основное русло поддержки Erlang / OTP.
Я столкнулся с некоторыми проблемами с производительностью чтения Redis из Erlang. Вот мой вопрос . Я склонен думать, что причина кроется в написанном на Erlang модуле, у которого возникают проблемы при обработке множества строк во время связи с Redis.