Actor模型与Akka

本文介绍了Actor模型的概念和特点,强调了其在并发计算中的作用。Akka作为一个基于Actor模型的框架,用于构建高度可用和可扩展的系统。文章详细阐述了Akka的开发过程,包括创建Actor、Actor系统、Dispatcher、Router和Scheduler等核心组件,并探讨了Akka在Spark中的分布式消息应用。此外,还提到了Akka的远程调用、集群和Gossip协议在实现高可用性中的角色。
摘要由CSDN通过智能技术生成

Actor模型与Akka


一. Actor模型

Actor模型概念

  • 一个概念模型,用于处理并发计算
  • Actor模型内部的状态由自己的行为维护,外部线程不能直接调用对象的行为,必须通过消息才能激发行为,这样就保证Actor内部数据只有被自己修改
Actor模型组成

image_1c2qb8l2m1bu61ig4n40f811n2e9.png-49.4kB

Actor模型详解
  • 在Actor模型中,一切都可以抽象为Actor,一个Actor指的是一个最基本的计算单元,它能接收一个消息并且基于该消息执行计算
  • Actor封装状态和行为的对象,他们的唯一通讯方式就是交换消息,类比Object: 一个对象接收一条消息(方法调用),然后根据接收的消息做事(调用了哪个方法)
  • Actor重要特征在于Actors之间相互隔离,他们并不互相共享内存,这点儿又区别于上面的Object对象,也就是说一个Actor能维持一个私有的状态,并且这个状态不可能被另一个Actor改变
  • Actor交换的消息放在接收方的邮箱(Inbox)里,也就是说Actor之间并不直接通信,而是通过了消息来相互沟通,每一个Actor都把它要做的事情都封装在了它的内部
    image_1c2qlp6r3144j1gsldhqnlr1pa4m.png-44.3kB
  • 每一个Actor是可以有状态也可以是无状态的
  • 当一个Actor接收到消息后,能做如下三件事中的一件: 创建其它Actors,向其它Actors发送消息,指定下一条消息到来的行为:就是Actors如何修改状态
  • 每一个Actor都拥有属于自己的轻量级线程,保护它们不会被系统中的其他部分影响,因此,我们在编写Actor时,就不用担心并发的问题
  • 通过Actor能够简化锁以及线程管理:
    • 提供一种高级的抽象,能够封装状态和操作,简化开发应用开发
    • 提供了异步的非阻塞的/高性能的事件驱动模型
    • 超级轻量级的线程事件处理能力
Actor系统

Actor的生命周期
image_1c2qn0ic912smh7p1nr41biu92713.png-109.5kB

  • ActorRef
    它是Actor的一个引用,作用是发送消息给它表示的Actor, 而Actor可以通过self()sender()方法来获取 到自身或者消息发送者的Actor引用,在Actor系统中,Actor之间永远都不能直接的通信,必须通过他们的代理ActorRef建立通信
Actor路径
  • 父子Actor
    树形结构,分层管理,通过递归把复杂的事务原子化
    image_1c2qooqqq1tmq2td15i04lm1ts920.png-113.9kB

  • Actor Path:Actor System中唯一标识

    • 本地Actor
      "akka://my-sys/user/service-a/worker1"
    • 远程Actor
      "akka.tcp://my-sys@host.example.com:2552/user/service-b"
    • 集群Actor
      "clust
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值