分布式压测系统详细介绍八:akka actor模型基本介绍
actor模型
先上一张图,网上弄来的:
一看好像是发送邮件,可以把这个模型看成发送邮件,而且有信箱,好像就是多人通信,一个actor就是一个人,actor之间相互通信,用的是邮件。平时都用过邮件的吧,邮件的特点是什么呢,就是异步非阻塞的优点,发送者可以不关心接受者什么时候收到,是否已经处理,他只管发送到他的邮箱咯,当然接受者也是,他不关心谁给他发的,他想处理邮件就从邮箱中拿出来处理,根据具体邮件内容来进行处理。
特点
- 异步非阻塞,写信的归写信,写完放到信箱里就完事了,收信的归收信,想啥时候处理就啥时候,其实就是类似消息队列,发送个消息到队列里完事了,继续干其他的去,即线程可以无需等待。
- 数据相互隔离,事件驱动,写信的无法控制收信的,收信的想做什么他自己决定,他自己的数据只能自己修改,相对其他的是隔离,也就是无需共享数据,各自维护自己的数据,只会根据收信来修改数据,而且信在队列里是有序的,处理的时候是1封封处理的,因此不存在并发的数据共享问题
- 无需同步锁,不存在共享数据,也不需要同步锁了
- 并发性能很好,线程之间无需为了共享资源同步,极大的提高了线程的利用率
akka系统结构
整个actor其实是属性结构的,应该是方便统一管理和调度以及查询:
akka核心元素
akka核心元素之间依赖的关系
可以看到,actorCell可以访问Actor,但是actorCell是内部的,Actor不能直接访问,因此,Actor无法直接去修改另外的Actor的状态,可以做到线程安全
akka actor系统初始化流程
akka actor系统创建节点流程
akka actor发送消息和处理消息
上面都是源码中理出来的,可能有不对的地方,具体的一些细节还是要自己去看啦。
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。