Erlang

rabbitMQ是采用 Erlang 实现的工业级的消息队列(MQ)服务器,所以特意去了解了一下Erlang。

Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。

使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。

使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。

Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果你需要更高效的话,字节代码也可以编译成本地代码运行。

一个Erlang写的服务器,据说并发能是apache的15倍。

Erlang是一种具有并发特征的编程语言,所以Erlang程序本质上在具有并行能力的计算机上运行时要比其它程序都快的多。而唯一能阻挡它运行的更快的问题就是Erlang程序中可能存在一些必须顺序执行的瓶颈。

并行程序中有需要顺序执行的部分,这正应验了Amdahl定律。

假设你的程序中有10%是需要顺序执行的(其余部分可以并行),可以并行的部分的执行时间可以压缩近似0——只要有足够的可以并行的处理器。但顺序执行部分的时间无法缩减。

如果程序中含有10%的需要顺序执行的代码,你的程序执行速度最高能提高10倍。其中1/10的程序的速度永远无法提高,其它9/10的程序的执行时间可以缩减至接近0。

所以,对于Erlang程序员来说,提高他们的程序的运行速度的技巧就是找出代码中需要顺序执行的部分。

而对于任何对于其他编写顺序执行程序的程序员来说,提高他们程序速度的方法是找出他们程序中可以并行执行的部分。

Erlang的安装:

下载地址:http://erlang.org/download.html

安装完毕需要添加环境变量:

参考:http://www.oschina.net/p/erlang/

http://www.vaikan.com/erlang-solving-the-wrong-problem/

http://www.cnblogs.com/daizhj/archive/2010/10/21/1857374.html

原文地址:https://www.cnblogs.com/zhengwk/p/5464845.html