我正在考虑将Erlang作为我即将开展的项目的潜力。我需要一个“高度可扩展,高度可靠”(呃,什么项目没有?)web服务器接受HTTP请求,但不是真正提供HTML。我们有数千个分布式客户端(其他系统,而不是用户),它们将二进制数据提交到中央服务器集群以进行离线处理。响应将非常短,成功,失败,错误代码,最小数据。我们想使用HTTP,因为它是我们穿越防火墙的最佳机会。
鉴于有关该项目的有限信息,您能否提供使用Erlang等技术可能出现的任何弱点?例如,我了解Erlang的文本处理功能可能会有所不足。
您的意见表示赞赏。 感谢。
答案 0 :(得分:10)
这听起来像是像Erlang这样的语言的完美候选人。语言的缩放属性非常好,但是如果你担心数据处理能力,你就不应该这样做。它是一种非常强大的语言,可供开发人员使用许多库。它是一种古老的语言,过去经常被大量使用/测试,所以你想做的一切可能已经在某种程度上完成了。
答案 1 :(得分:5)
确保使用的是erlang版本R11B5或更新版本!早期版本的erlang没有提供超时tcp发送的能力。这导致停滞或恶意的客户端能够通过拒绝重新发送您发送的数据来对您的应用程序执行DoS攻击,从而锁定发送过程。
请参阅R11B5's release notes中的问题OTP-6684。
答案 2 :(得分:5)
使用Erlang,可扩展性和可靠性是存在的,但是根据您的项目定义,您没有概述您将需要哪种类型的文本处理。
我认为Erlang的主要限制可能是找到您所在地区的有经验的开发人员。对Erlang架构师和编码员的可用性进行一些研究。
如果您要自学或让开发人员在工作中学习它,请记住这是一种非常不同的编码方式,虽然核心文档很好,但很多人确实希望有更多的例子。当然,非常活跃的社区很容易弥补这一点。
答案 3 :(得分:3)
我理解Erlang的文本处理 能力可能留下一些东西 希望。
starling项目已经提供了基本的unicode支持,目前正在草案中有一个EEP(Erlang增强建议),但是它将其纳入Erlang / OTP支持的主流。
答案 4 :(得分:1)
我在Erlang中遇到了Redis读取性能的一些问题。这是my question。我倾向于认为原因是Erlang编写的模块,它在与Redis通信期间处理大量字符串时遇到麻烦。