使用 Erlang 可以发现哪些弱点?
我正在考虑将 Erlang 作为我即将进行的项目的潜力。 我需要一个“高度可扩展、高度可靠”(呃,哪个项目不需要?)的 Web 服务器来接受 HTTP 请求,但不真正提供 HTML。 我们有数千个分布式客户端(其他系统,而不是用户),它们将向中央服务器集群提交二进制数据以进行离线处理。 响应将非常短,成功、失败、错误代码、最少数据。 我们希望使用 HTTP,因为它是穿越防火墙的最佳机会。
鉴于有关该项目的信息有限,您能否提供使用 Erlang 这样的技术可能出现的任何弱点? 例如,我知道 Erlang 的文本处理功能可能还有一些不足之处。
感谢您的评论。 谢谢。
I am considering Erlang as a potential for my upcoming project. I need a "Highly scalable, highly reliable" (duh, what project doesn't?) web server to accept HTTP requests, but not really serve up HTML. We have thousands of distributed clients (other systems, not users) that will be submitting binary data to central cluster of servers for offline processing. Responses would be very short, success, fail, error code, minimal data. We want to use HTTP since it is our best chance of traversing firewalls.
Given this limited information about the project, can you provide any weaknesses that might pop up using a technology like Erlang? For instance, I understand Erlang's text processing capabilities might leave something to be desired.
You comments are appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这听起来像是 Erlang 这样的语言的完美候选者。 该语言的扩展特性非常好,但如果您担心数据处理能力,则不必担心。 它是一种非常强大的语言,有许多库可供开发人员使用。 它是一种古老的语言,并且在过去被大量使用/测试,因此您想做的所有事情可能已经在某种程度上完成了。
This sounds like a perfect candidate for a language like Erlang. The scaling properties of the language are very good, but if you're worried about the data processing abilities, you shouldn't be. It's a very powerful language, with many libraries available for developers. It's an old language, and it's been heavily used/tested in the past, so everything you want to do has probably already been done to some degree.
确保您使用 erlang 版本 R11B5 或更高版本! 早期版本的 erlang 不提供超时 tcp 发送的功能。 这会导致停滞或恶意客户端能够通过拒绝接收您发送给它们的数据来对您的应用程序执行 DoS 攻击,从而锁定发送过程。
请参阅 R11B5 发行说明 中的问题 OTP-6684。
Make sure you use erlang version R11B5 or newer! Earlier versions of erlang did not provide the ability to timeout tcp sends. This results in stalled or malicious clients being able to execute a DoS attack on your application by refusing to recv data you send them, thus locking up the sending process.
See issue OTP-6684 from R11B5's release notes.
Erlang 具有可扩展性和可靠性,但从您的项目定义来看,您没有概述您需要什么类型的文本处理。
我认为 Erlang 的主要限制可能是寻找您所在领域经验丰富的开发人员。 对 Erlang 架构师和编码员的可用性进行一些研究。
如果您打算自学或让您的开发人员在工作中学习它,请记住,这是一种非常不同的编码方式,虽然核心文档很好,但很多人确实希望有更多示例。 当然,非常活跃的社区很容易弥补这一点。
With Erlang the scalability and reliability is there but from your project definition you don't outline what type of text processing you will need.
I think Erlang's main limitation might be finding experienced developers in your area. Do some research on the availability of Erlang architects and coders.
If you are going to teach yourself or have your developers learn it on the job keep in mind that it is a very different way of coding and that while the core documentation is good a lot of people do wish there were more examples. Of course the very active community easily makes up for that.
starling 项目已经提供了基本的 unicode 支持,并且目前有一个 EEP(Erlang 增强提案)正在起草中,但将其带入 Erlang/OTP 支持的主流。
The starling project already provides basic unicode support and there is a EEP (Erlang Enhancement Proposal) currently in draft, but going in to bring it into the mainstream of Erlang/OTP support.
我在 Erlang 中的 Redis 读取性能方面遇到了一些问题。 这是我的问题。 我倾向于认为原因是 Erlang 编写的模块,在与 Redis 通信期间处理大量字符串时遇到麻烦。
I encountered some problems with Redis read performance from Erlang. Here is my question. I tend to think the reason is Erlang-written module, which has troubles while processing tons of strings during communication with Redis.