Actor编程模型——Erlang/OTP

Erlang是一种采用actor模型的编程语言,其OTP库提供了行为规范以构建监控树,确保进程间的容错能力。每个actor由语言级别的进程表示,进程间通过简单的消息通信原语进行交互。Erlang的分布式特性使得跨节点通信变得透明且易于实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Erlang是一门编程语言,OTP是根据Erlang的编程哲学实现的一套系统库,以帮助程序员高效和正确地编写程序。

Erlang的编程思想是和上述actor编程思想是差不多的,只是叫法不一样。在Erlang中每个actor用一个“进程”来表示,此处的进程是Erlang语言级的进程,不是OS级的进程,或我们熟悉的java线程。

进程是Erlang中的基本单位,表示一个actor,可以根据系统和业务需要并按照actor的编程思想来创建相应的进程,Erlang的运行环境负责调度这些进程在cpu上面运行,同时屏蔽多核、锁等一系列复杂问题。

 

²  监控树

根据OTP的行为规范,进程会被标示为一个角色类型(监控进程、工作进程),这样所有的进程会构建成了一个稳健的监控树:


上面树中的叶子节点是工作进程,真正干活的。监控进程来监控和管理下属的工作进程,或者子监控进程,主要目的用来重启、停止所属子进程,以及处理子进程的未知错误,达到容错目的。

      

 

²  消息通信

Erlang中的消息通信原语很简单:

Pid2  !  {self(), “hello”}

 


进程1通过标示符 ”就可以把消息传递给进程2

 

²  分布式

Erlang 中的分布式编程基于前述的消息传递系统构建,旨在提供发送和接收消息的机制。值得注意的是,分布式不一定表示不同的机器,也可能是希望彼此沟通的两个不同的 Erlang 运行实例。除了识别您正在通信的系统之外,Erlang 在一般使用中不区分系统的本地或远程特征。下面用命令环境下演示一下:

启动一个节点A


再启动一个节点B


B节点上面先注册一下当前进程的别名为“basic”,然后等待A节点的消息:


A节点给B节点发送消息:


       B节点收到来自A节点的消息:


 

注:上面的两个节点之间的通信过程对用户完全透明,不需要关心底层细节,分布式通信就是这么简单。

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值