1) Akka是Java虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时,能够理解成Akka是编写并发程序的框架程序员
2) Akka用Scala语言写成,同时提供了Scala和Java的开发接口ajax
3) Akka主要解决的问题是:能够轻松的写出高效稳定的并发程序,程序员再也不过多的考虑线程、锁和资源竞争等细节编程
1) 处理并发问题关键是要保证共享数据的一致性和正确性,由于程序是多线程时,多个线程对同一个数据进行修改,若不加同步条件,势必会形成数据污染。可是当咱们对关键代码加入同步条件synchronized后,实际上大并发就会阻塞在这段代码,对程序效率有很大影响多线程
2) 如果用单线程处理,不会有数据一致性的问题,可是系统的性能又不能保证架构
3) Actor模型的出现解决了这个问题,简化并发编程,提高程序性能。能够理解成Actor模型是一种处理并发问题的解决方案并发
1) Akka处理并发的方法基于Actor模型(示意图)框架
2) 在基于Actor的系统里,全部的事物都是Actor,就好像在面向对象设计里面全部的事物都是对象同样异步
3) Actor模型是做为一个并发模型设计和架构的。Actor与Actor之间只能经过消息通讯,如图的信封分布式
4) Actor与Actor之间只能用消息进行通讯,当一个Actor给另外一个Actor发消息,消息是有顺序的(消息队列),只须要将消息投寄到相应的邮箱便可高并发
5) 怎么处理消息是由接收消息的Actor决定的,发送消息Actor能够等待回复,也能够异步处理[ajax]
6) ActorSystem的职责是负责建立并管理其建立的Actor,ActorSystem是单例的(ActorSystem是一个工厂,专门建立Actor),一个JVM进程中有一个便可,而 Acotr是能够有多个的
7) Actor模型是对并发模型进行了更高的抽象
8) Actor模型是异步、非阻塞、高性能的事件驱动编程模型
9) Actor模型是轻量级事件处理(1GB 内存可容纳百万级别个Actor),所以处理大并发性能高
-说明了Actor模型的工做机制(对应上图)
1) ActorySystem建立Actor
2) ActorRef:能够理解成是Actor的代理或者引用。消息是经过ActorRef来发送,而不能经过Actor发送消息,经过哪一个ActorRef发消息,就表示把该消息发给哪一个Actor
3) 消息发送到Dispatcher Message(消息分发器),它获得消息后,会将消息进行分发到对应的MailBox。(注:Dispatcher Message能够理解成是一个线程池,MailBox能够理解成是消息队列,能够缓冲多个消息,遵照FIFO)
4) Actor能够经过receive方法来获取消息,而后进行处理
-Actor模型的消息机制(对应上图)
1) 每个消息就是一个Message对象,Message继承了Runable,由于Message就是线程类
2) 从Actor模型工做机制看上去很麻烦,可是程序员编程时只须要编写Actor就能够了,其它的交给Actor模型完成便可
3) A Actor要给B Actor发送消息,那么A Actor要先拿到(也称为持有)B Actor的代理对象ActorRef才能发送消息