多线程并发总结六 Actor Model和Event Driven

Actor模型和Event Driven是解决多线程问题的有效方法。Actor模型中,每个Actor仅由一个线程执行,通过消息传递进行通信,常用于分布式系统。Erlang和Akka是Actor模型的典型应用。Event Driven则通过事件响应机制减少多线程需求,如Java的Vert.X框架。在不需要状态的场景下,Event Driven提供了轻量级的并发解决方案。
摘要由CSDN通过智能技术生成

Actor Model也能有效的解决多线程的问题,跟CSP类似,他也是可以让变量由某一个Actor专门负责,而Actor是只会被一个线程执行的,所以也不会有多线程的问题。

Actor模型中的Actor类似CSP中的Process。CSP中的Process通讯相当于Actor中的信箱。

只是两者的定位并不一样,CSP主要用来解决某一个进程中的多线程问题,而Actor模型是一个分布式系统的逻辑架构模型。

简单介绍一下Actor模型。

  • Actor可以存在于同一个进程里面,也可以存在于不同的进程里面。
  • Actor和Actor之间通过把Message发送到对方Actor的信箱的方式来通信。
  • Actor有上下级之间的关系,上级对其下级的Actor负责。
  • Actor可以创建其他的Actor。
  • Actor有状态,并且会根据状态决定如何应激之后的Message

例如一个管理Actor会留意资源的使用情况,如果发现资源使用率比较高,它就会负责创建更加多的Worker Actor来满足负载。但是如果发现有一个Worker Actor因为一些问题出了错,它会负责把这个Worker Actor进行重置。

Actor模型做的比较出名是爱立信的Erlang,当年爱立信利用Actor Model来实现它们的通信交换机,实现了高并发效率和高的无故障率(达到99.99999%)。

通信是真的很适合Actor模型的使用的,首先通信设施就是一层一层的监控,然后通信设备需要可以灵活的接入和拆除,根据不同的负责需要有动态的资源分配能力,通讯的双方甚至多方本身就是有状态的。这些林林种种都跟Actor模型不谋而合。

所以现在墙外的那款通讯软件Whatsapp其核心也是用Erlang来写的。如果觉得Erlang太过底层不能支

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值