使用Erlang有哪些弱点?

16

我正在考虑在即将开始的项目中使用Erlang。我需要一个“高度可扩展,高度可靠”(显然,哪个项目不需要?)Web服务器来接受HTTP请求,但实际上并不提供HTML。我们有成千上万个分布式客户端(其他系统,而不是用户)将向中央服务器集群提交二进制数据进行离线处理。响应非常简短,成功、失败、错误代码和最小数据量。我们希望使用HTTP,因为这是我们穿越防火墙的最佳机会。

在了解该项目的有限信息后,您能否提供可能出现的Erlang技术缺陷?例如,我了解到Erlang的文本处理能力可能存在一些问题。

感谢您的意见。


1
最好接受一个答案... - jldupont
5个回答

10

这听起来像是Erlang这样的语言的完美选择。该语言的扩展性非常好,但如果你担心数据处理能力,那么你不需要担心。它是一种非常强大的语言,有许多库可供开发人员使用。它是一种古老的语言,在过去被广泛使用/测试,所以你想做的每件事情可能都已经在某种程度上完成了。


5
请确保您使用的是Erlang R11B5版本或更高版本!早期版本的Erlang没有提供超时tcp发送的能力。这会导致停滞或恶意客户端能够通过拒绝接收您发送给他们的数据来对您的应用程序执行DoS攻击,从而锁定发送进程。
请参阅R11B5发布说明中的问题OTP-6684。

5
使用Erlang语言可以实现可扩展性和可靠性,但是您的项目定义中没有概述您需要哪种类型的文本处理。
我认为Erlang的主要限制可能是在您的地区找到有经验的开发人员。请调查一下Erlang架构师和编码人员的可用性。
如果您要自学或让开发人员在工作中学习,要记住这是一种非常不同的编码方式,并且虽然核心文档很好,但很多人希望有更多的示例。当然,非常活跃的社区轻松弥补了这一点。

2017年,这仍然非常准确。Erlang是OP问题描述的项目的绝佳选择,但是尚未受雇的主要Erlang程序员的可用性是真正的限制因素。 - zxq9

3

我了解Erlang的文本处理能力可能有所欠缺。

Starling项目已经提供了基本的Unicode支持,并且目前正在起草一个EEP(Erlang增强提案),以将其纳入Erlang/OTP支持的主流。


1
该链接导致了一个“未找到”页面;Google Code 上的 Starling 版本似乎也已经死亡,但是在这里有一个更活跃的版本:https://github.com/hypernumbers/starling - Oliver Mason
是的,Hasan 在 Hypernumbers 工作时编写了它,自从他离开后,我已经将它带回我们的 GitHub 环境中。Hypernumbers 版本现在是“官方”版本。 - Gordon Guthrie

1
我在Erlang中遇到了Redis读取性能的一些问题。这是我的问题。我倾向于认为问题出在Erlang编写的模块上,在与Redis通信期间处理大量字符串时会出现问题。

1
我成功地通过使用另一个驱动程序来提高了读取性能。C语言编写的驱动程序及其包装器仍然更快,但我可以接受Erlang提供的性能。 - Vitaly Chirkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接