我想知道一个最常见的应用程序/网站/解决方案的列表,成功与否。
解释一下为什么它被用于特定的解决方案,而不是其他编程语言,也会非常受欢迎。
列出BAD Erlang案例研究(误用Erlang的案例)也会很有趣。
我想知道一个最常见的应用程序/网站/解决方案的列表,成功与否。
解释一下为什么它被用于特定的解决方案,而不是其他编程语言,也会非常受欢迎。
列出BAD Erlang案例研究(误用Erlang的案例)也会很有趣。
当前回答
来自Programming Erlang:
(来源:google.com)
许多公司在他们的生产系统中使用Erlang:
•Amazon使用Erlang实现SimpleDB,作为一部分提供数据库服务 亚马逊弹性计算云(EC2)。
•Yahoo !它在其社交书签服务Delicious中使用,该服务拥有超过 500万用户和1.5亿书签url。
•Facebook使用Erlang来支持其聊天服务的后端,处理超过 1亿活跃用户。 •WhatsApp使用Erlang运行消息服务器,每台服务器最多可连接200万用户。
•T-Mobile在其SMS和认证系统中使用Erlang。
•摩托罗拉(Motorola)正在公共安全行业的呼叫处理产品中使用Erlang。
•爱立信在其支持节点中使用Erlang,用于GPRS和3G移动网络 在全球范围内。
最流行的开源Erlang应用程序包括:
•3D细分建模器Wings 3D,用于建模和纹理多边形 网格。
Ejabberd系统,提供可扩展的消息传递和存在协议 基于(XMPP)的即时消息(IM)应用服务器。
•CouchDB“无模式”面向文档的数据库,提供可伸缩性 跨多核和多服务器集群。
•MochiWeb库,提供构建轻量级HTTP服务器的支持。 它被用于为MochiBot和MochiAds等服务提供动力 每天为数百万观众动态生成内容。
RabbitMQ, AMQP消息协议实现。AMQP是新兴的 高性能企业消息传递的标准。
其他回答
我们正在使用Erlang为我们真正实时的基于浏览器的多人游戏Pixza提供后端力量。我们不使用Flash或任何其他第三方插件,尽管游戏是实时多人游戏。我们使用纯JS和COMET技术。Erlang支持Pixza的“真正的实时性”。
上面已经介绍了Erlang最常见的应用程序(CouchDb, ejabberd, RabbitMQ等),但我想贡献以下内容。
在这些应用程序中使用它的原因来自Erlang的核心优势:管理应用程序可用性。
Erlang是为电信环境从头开始构建的,该环境要求系统满足至少5x9的可用性(每年99.999%的正常运行时间)。这个数字并没有给一年的停机时间留下太多的空间!主要出于这个原因,Erlang加载了以下特性(非详尽的):
Horizontal scalability (ability to distribute jobs across machine boundaries easily through seamless intra & inter machine communications). The built-in database (Mnesia) is also distributed by nature. Vertical scalability (ability to distribute jobs across processing resources on the same machine): SMP is handled natively. Code Hot-Swapping: the ability to update/upgrade code live during operations Asynchronous: the real world is async so Erlang was built to account for this basic nature. One feature that contributes to this requirement: Erlang's "free" processes (>32000 can run concurrently). Supervision: many different strategies for process supervision with restart strategies, thresholds etc. Helps recover from corner-cases/overloading more easily whilst still maintaining traces of the problems for later trouble-shooting, post-mortem analysis etc. Resource Management: scheduling strategies, resource monitoring etc. Note that the default process scheduler operates with O(1) scaling. Live debugging: the ability to "log" into live nodes at will helps trouble-shooting activities. Debugging can be undertaken live with full access to any process' running state. Also the built-in error reporting tools are very useful (but sometimes somewhat awkward to use).
当然,我可以谈论它的功能根源,但这方面与主要目标(高可用性)有点正交。在我看来,有助于实现目标的功能性质的主要组成部分是:“不分享任何东西”。这一特性有助于控制“副作用”并减少对昂贵的同步机制的需求。
我想所有这些特性都有助于在关键业务应用程序中使用Erlang。
Erlang确实不擅长的一件事是:处理大块数据。
Erlang来自爱立信,在他们的一些电信系统中使用。
在电信行业之外,CouchDb(面向文档的数据库)可能是迄今为止最著名的Erlang应用程序。
为什么是Erlang ?概述(值得一读):
文档、视图、安全性和 复制模式,特殊 目的查询语言,效率高 强健的磁盘布局和 并发性和可靠性的性质 Erlang平台都是认真的 一体化为可靠而可靠 高效的系统。
erlang有什么好处?
http://beebole.com/en/blog/erlang/why-erlang/
http://www.aquabu.com/2008/2/15/erlang-pragmatic-studio-day-3-notes
http://www.reddit.com/r/programming/comments/9q0lr/erlang_and_highfrequency_trading/ (jerf回答)
重要的是要意识到Erlang的四个部分:语言本身,vm (BEAM, hipe)标准库(加上github, CEAN等上的模块)和开发环境正在稳步更新/扩展/改进。例如,我记得读到过,当Wings3d的作者意识到它需要改进时,浮点性能得到了改善(我找不到这个来源)。这个人就写了:
http://marian-dan.com/wordpress/?p=324
几年前,Tim Bray的Wide Finder的宣传和所有开始做web应用框架和HTTP服务器的人(至少部分地)导致了改进的正则表达式和二进制文件处理。还有所有集成HiPE和SMP的工作,透析器项目,多单元测试和构建库的涌现,..
困难的是官方文档不能很好地跟上,邮件列表和erlang博客圈的容量正在迅速增长
显然,雅虎使用Erlang制作了一个名为Harvester的东西。关于它的文章在这里:http://www.ddj.com/architect/220600332