Erlang是一门编程语言,OTP是根据Erlang的编程哲学实现的一套系统库,以帮助程序员高效和正确地编写程序。
Erlang的编程思想是和上述actor编程思想是差不多的,只是叫法不一样。在Erlang中每个actor用一个“进程”来表示,此处的进程是Erlang语言级的进程,不是OS级的进程,或我们熟悉的java线程。
进程是Erlang中的基本单位,表示一个actor,可以根据系统和业务需要并按照actor的编程思想来创建相应的进程,Erlang的运行环境负责调度这些进程在cpu上面运行,同时屏蔽多核、锁等一系列复杂问题。
² 监控树
根据OTP的行为规范,进程会被标示为一个角色类型(监控进程、工作进程),这样所有的进程会构建成了一个稳健的监控树:
上面树中的叶子节点是工作进程,真正干活的。监控进程来监控和管理下属的工作进程,或者子监控进程,主要目的用来重启、停止所属子进程,以及处理子进程的未知错误,达到容错目的。
² 消息通信
Erlang中的消息通信原语很简单:
|
进程1通过标示符 “!”就可以把消息传递给进程2
² 分布式
Erlang 中的分布式编程基于前述的消息传递系统构建,旨在提供发送和接收消息的机制。值得注意的是,分布式不一定表示不同的机器,也可能是希望彼此沟通的两个不同的 Erlang 运行实例。除了识别您正在通信的系统之外,Erlang 在一般使用中不区分系统的本地或远程特征。下面用命令环境下演示一下:
启动一个节点A:
再启动一个节点B:
在B节点上面先注册一下当前进程的别名为“basic”,然后等待A节点的消息:
A节点给B节点发送消息:
B节点收到来自A节点的消息:
注:上面的两个节点之间的通信过程对用户完全透明,不需要关心底层细节,分布式通信就是这么简单。