开发者学堂课程【Scala 核心编程 - 进阶:AKKA 的 Actor 模式介绍】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9113
AKKA 的 Actor 模式介绍
内容介绍
一、Actor system 图解
二、Actor 模型以及说明
一、Actor system 图解
所有主件均有 Actor system 管理,红黄蓝三种颜色代表三个 actor,均有自己对应的邮箱 mailbox,整个系统之间存在 Mailbox,Mailbox 在运行时并不显示,被封装到了 Actor当中,运行机制为通过信件通讯。
实际传送过程如:红向黄传递
首先拿到黄色的代理对象 ref,通过对象传送到黄色的邮箱中。
每一个邮箱与 actor 进行了绑定,当有信息到达 mailbox
mailbox 是实线的 runncrbe 的线程
一旦拿到消息,便推送给 Actor 的 receive 方法
反过来
黄给红的回收信息也是如此,通过 mailbox 传输到红色绑定的邮箱
1.Akka 处理并发的方法基于Actor模型
2.在基于 Actor 的系统里,所有事物都是 Actor,就好像在面向对象设计里面所有的事物都是对象一样
3.Actor 模型是作为一个并发模型设计和架构的。
Actor 与 Actor 之间只能通过消息通信,其余并不能识别
二、Actor 模型以及说明
1.Actor 与 Actor 之间只能用消息进行通信,当一个Actor 给另外一个Actor 发消息,消息是有顺序的(消息队列)只需要将消息投机的相应的邮箱即可
消息队列:消息通过队列的形式进行传发
2.怎麽处理消息是由接收信息的 Actor 决定的,发送消息 Actor 可以等待回复,也可以异步处理{ajax}
3.Actor System 的职责是负责创建并管理其创建的 Actor ,Actor System 是单例的(可以Actor System是一个工厂,专门创建Actor ),根据需要,即可创建,一个jvm进程中有一个即可,而Actor 是可以有多个的
4.Actor 模型是对并发模型进行了更高的抽象
5.Actor 模型是异步、非阻塞、高性能、的事件驱动编程模型。
最经典的案例就是 ajax 异步请求处理,无需进行等待,浏览器直接进行上下的处理
如图所示
或如下理解
存在浏览器与服务器,浏览器发出ajax请求向服务器发出,直接向服务器发送请求
若没有使用ajax则会一直回转,知道请求回复,服务器收到请求回应则为同步消息,此时情况糟糕,所以等05年ajax程序研发发布后,大量的企业针对ajax进行前端的升级优化,因为没有ajax程序的资源消耗巨大。
浏览器发出ajax请求向服务器发出后,浏览器仍可向下执行
在等待回应过程,存在回调函数模块,一般进行返回结果的接收,进行相关编程。
可进行异步处理的效果
1.接收返回结果
2.Dom 编程
实际演示,如下图:
3.Actor 模型是轻量级事件处理(1GB内存可容纳百万级别个 ACTOr),因此处理大并发性能高