15.1 Akka介绍

      1) Akka是Java虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时,可以理解成Akka是编写并发程序的框架

      2) Akka用Scala语言写成,同时提供了Scala和Java的开发接口

      3) Akka主要解决的问题是:可以轻松的写出高效稳定的并发程序,程序员不再过多的考虑线程、锁和资源竞争等细节

15.2 Actor模型用于解决什么问题

      1) 处理并发问题关键是要保证共享数据的一致性和正确性,因为程序是多线程时,多个线程对同一个数据进行修改,若不加同步条件,势必会造成数据污染。但是当我们对关键代码加入同步条件synchronized后,实际上大并发就会阻塞在这段代码,对程序效率有很大影响

      2) 若是用单线程处理,不会有数据一致性的问题,但是系统的性能又不能保证

      3) Actor模型的出现解决了这个问题,简化并发编程,提升程序性能。可以理解成Actor模型是一种处理并发问题的解决方案

15.3 Akka中的Actor模型

  15.3.1 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),因此处理大并发性能高

15.4 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才能发送消息

  

    

15. Scala并发编程模型Akka的更多相关文章

  1. Scala并发编程模型AKKA

    一.并发编程模型AKKA Spark使用底层通信框架AKKA 分布式 master worker hadoop使用的是rpc 1)akka简介 写并发程序很难,AKKA解决spark这个问题. akk ...

  2. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  3. Scala-Unit7-Scala并发编程模型AKKA

    一.Akka简介 Akka时spark的底层通信框架,Hadoop的底层通信框架时rpc. 并发的程序编写很难,但是Akka解决了spark的这个问题. Akka构建在JVM平台上,是一种高并发.分布 ...

  4. 4、Java并发性和多线程-并发编程模型

    以下内容转自http://ifeve.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B/: 并发系统可以采用多种并发编程模型来实现. ...

  5. Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  6. Scala并发编程【快速入门】

    1.简介 Scala的actor提供了一种基于事件的轻量级线程.只要使用scala.actors.Actor伴生对象的actor()方法,就可以创建一个actor.它接受一个函数值/闭包做参数,一创建 ...

  7. java 多线程——并发编程模型 学习笔记

                                                                                                 并发编程模型 ...

  8. Scala 深入浅出实战经典 第68讲:Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  9. Scala 深入浅出实战经典 第67讲:Scala并发编程匿名Actor、消息传递、偏函数解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

随机推荐

  1. pyinstaller参数介绍以及总结

    最近利用tkinter+python+pyinstaller实现了小工具的项目,在此记录下pyinstaller相关参数以及爬过的坑. 一.pyinstaller相关参数 -F, –onefile 打 ...

  2. PostgreSQL: Rename a User

    Syntax The syntax to rename a user using the ALTER USER statement in PostgreSQL is: ALTER USER user_ ...

  3. Open with Sublime 右键打开

    Open with Sublime Sublime 的右键打开没有了,可以使用下面的bat命令添加.   @echo off SET st3Path=D:\Program Files\Sublime ...

  4. postgresQL 服务器端守护进程

  5. https://software.intel.com/sites/landingpage/pintool/docs/97998/Pin/html/

    https://software.intel.com/sites/landingpage/pintool/docs/97998/Pin/html/   http://www.brendangregg. ...

  6. python : takes 0 positional arguments but 1 was given

    def 的要加self, https://blog.csdn.net/u010269790/article/details/78834410

  7. DEX-6-caffe模型转成pytorch模型办法

    在python2.7环境下 文件下载位置:https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/ 1.可视化模型文件prototxt 1)在线可视化 ...

  8. flutter的加载弹框

    代码组件: import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'packa ...

  9. Hadoop记录-HDFS均衡脚本

    #!/bin/bash #作用:hdfs使用率取最大100个主机和最小80个主机进行数据均衡 #打印报告 hdfs dfsadmin -report>report.txt #截取主机名 cat ...

  10. C# WinForm获取 当前执行程序路径的几种方法(转)

    1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory; Result: C:xxxxxx 2.获取启动了应用程序的可 ...