erlang - Erlang在哪里使用,为什么?




6 Answers

编程Erlang

替代文字http://bks8.books.google.com/books?id=Qr_WuvfTSpEC&printsec=frontcover&img=1&zoom=5&sig=ACfU3U2F4YY4KqO0vCuZ4WEZjdE2yFFvvg

许多公司在生产系统中使用Erlang:

Amazon使用Erlang实现SimpleDB,提供数据库服务作为Amazon Elastic Compute Cloud(EC2)的一部分。

Yahoo! 在其社交书签服务Delicious中使用它,它拥有超过500万用户和1.5亿个书签URL。

Facebook使用Erlang为其聊天服务的后端供电,处理超过1亿活跃用户。

WhatsApp使用Erlang运行消息服务器,每台服务器可实现多达200万个连接用户。

T-Mobile在其SMS和认证系统中使用Erlang。

摩托罗拉在公共安全行业的通话处理产品中使用Erlang。

爱立信在其支持节点中使用Erlang,用于全球的GPRS和3G移动网络。


最流行的开源Erlang应用程序包括以下内容:

•3D细分建模器Wings 3D ,用于模拟和纹理多边形网格。

Ejabberd系统,提供基于可扩展消息和呈现协议(XMPP)的即时消息(IM)应用程序服务器。

CouchDB “无模式”文档导向数据库,提供跨多核和多服务器集群的可扩展性。

•为构建轻量级HTTP服务器提供支持的MochiWeb库。 它用于为MochiBot和MochiAds等服务提供动力,MochiBot和MochiAds每天为数百万观众提供动态生成的内容。

RabbitMQ ,一种AMQP消息传递协议实现。 AMQP是高性能企业消息传递的新兴标准。

我想知道使用Erlang的最常见应用程序/网站/解决方案的列表, 成功与否

解释为什么它被用于特定的解决方案,而不是其他编程语言,也将非常感激。

列举BAD Erlang案例研究(Erlang被滥用的案例),这也很有趣。




Erlang的最常见应用程序列表已被覆盖(CouchDb,ejabberd,RabbitMQ等),但我想贡献以下内容。

在这些应用程序中使用它的原因来自Erlang的核心优势:管理应用程序可用性

Erlang是从电信环境中建立起来的,要求系统至少满足5x9的可用性(每年99.999%的正常运行时间)。 这一数字在一年内没有留下太多停机时间! 由于这个原因,Erlang加载了以下特性(非穷举):

  • 水平可扩展性 (通过无缝内部和机器间通信轻松跨机器分配作业)。 内置数据库(Mnesia)也是天生分布的。

  • 垂直可伸缩性 (在同一台机器上跨处理资源分配作业的能力):SMP是本机处理的。

  • 代码热插拔 :能够在操作期间更新/升级代码

  • 异步 :真实世界是异步的,所以Erlang的建立是为了说明这个基本性质。 一个有助于满足这个需求的特性:Erlang的“空闲”进程(> 32000可以同时运行)。

  • 监督 :许多不同的过程监督策略,包括重启策略,阈值等。有助于更轻松地从角落案件/超载案件中恢复过来,同时仍然保留后续故障排除,事后分析等问题的痕迹。

  • 资源管理 :调度策略,资源监控等。请注意,默认进程调度程序使用O(1)缩放进行操作。

  • 实时调试 :随时“登录”到活动节点的能力有助于解决问题。 调试可以在任何进程的运行状态下进行。 此外,内置的错误报告工具非常有用(但有时使用起来有些尴尬)。

当然,我可以谈论它的功能根源,但这方面与主要目标(高可用性)有些正交。 为目标目标慷慨贡献的功能性质的主要组成部分是IMO:“无分享”。 这个特性有助于包含“副作用”并减少对昂贵的同步机制的需求。

我想所有这些特性都有助于扩展在业务关键型应用程序中使用Erlang的情况。

Erlang并不擅长处理大块数据。




我们使用Erlang建立了一个博彩交易所 (aka预测市场)。 由于内置并发性,我们选择了Erlang来处理更传统的金融语言(C ++,Java等)。 市场的功能与电话交换非常相似。 我们的首席技术官就我们在首席技术官谈话中使用Erlang发表了演讲

我们还使用CouchDB和RabbitMQ作为我们的堆栈的一部分。




我遇到了这个问题,正在编写一份报告: 声波追踪中的Erlang

这是一个研究小组试图使用Erlang进行声学跟踪的经验报告。 他们发现,虽然编写程序比较容易,但是出错少,等等更糟糕,而且执行速度比同类C程序慢10倍。 所以它可能不太适合的一个地方是CPU密集型场景。

但请注意,撰写论文的人员正处于第一次学习Erlang的阶段,并且可能不知道CPU密集型Erlang的正确开发过程。




我们正在使用Erlang为我们真正基于浏览器的多玩家游戏Pixza提供后端肌肉力量。 我们不使用Flash或任何其他第三方插件,尽管游戏是实时多人游戏。 我们使用纯JS和COMET技术。 而Erlang支持Pixza的“真正的实时性”。




Erlang从没有共享内存的功能语言中汲取力量。 因此,国际海事组织,Erlang将不适合需要适当的存储器操作的应用程序。 图像编辑例如。




Related

erlang case-study