Akka 基础概念

Posted ganshuoos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Akka 基础概念相关的知识,希望对你有一定的参考价值。

1.什么是Akka

Akka通常是指一个分布式工具集,用于协调远程计算资源来进行一些工作,是Actor开发模型的一种现代化实现。

2.Actor 重要概念与消息传递方式

重要概念

1.Actor:一个表示工作节点的并发原语,同步处理接收到的消息,Actor可以保存并修改内部状态。

2.消息: 用于跨进程(多个Actor之间)通信的数据

3.消息传递:一种软件开发范式,通过传递消息来触发各种行为,而不是直接触发行为。

4.邮箱地址:消息传递的目标地址,当Actor空闲时会从该地址获取信息进行处理。

5.邮箱:在Actor处理消息前具体存储消息的地方,可视作消息队列。

6.Actor系统:多个Actor的集合及这些Actor的邮箱地址、邮箱和配置。

消息传递方式:邮箱

技术图片

Actor与对象的不同之处在于其不能直接读取、修改或调用,Actor只能通过消息传递方式与外界进行通信。消息传递是指一个Actor可以接受消息,本身可以发送消息,也可以对接收到的消息做出回复。消息传递是异步的,Actor处理一个消息是同步的。

Actor模型的优势:

1.当各个Actor各司其职时,使用Actor模型分析并发时间非常容易。

2.消除内存共享状态,避免竞态条件发生。

3.Actor监督机制

Actor模型通过监督机制提供容错性。监督机制基本上是指把处理响应 错误的责任交给出错对象之外的实体,这意味着一个Actor可以负责监督它的子Actor,它会监控子Actor的运行错误 ,并根据子Actor生命周期中的运行表现执行相应的操作。当一个正在运行的Actor发生错误时,监督机制提供的默认处理方式是重新启动发生错误Actor(实际上是重新创建),这种重新创建出错Actor的处理方式基于一种假设:意外发生的错误是由错误状态导致的,因此移除并重新创建应用程序中出错的部分可以将其修复,并恢复正常工作。

技术图片

Akka对于Actor模型的重要贡献之一就是位置透明性概念:就是说一个Actor邮箱地址实际上是一个远程地址,但是这个地址对开发者来说基本上是透明的。

注:

build.sbt
###############################################
name := " xxx"
version := "xxx"
scalaVersion := "xxx"
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/release/"
libraryDependencies ++= Seq("com.typesafe.akka" %% "akka-actor" % "2.6.3",
                            "com.typesafe.akka" %% "akka-testkit" % "2.6.3",
                             "org.scalatest" %% "scalatest" % "3.0.1"
                            )
                            
//使用Akka Testkit时可以使用sbt测试用例,先clean后test

以上是关于Akka 基础概念的主要内容,如果未能解决你的问题,请参考以下文章

Scala基础高阶函数隐式转换AKKA编程

动态SQL基础概念复习(Javaweb作业5)

akka actor中的基本概念(学习小结)

在项目反应堆或 akka 流中,接收器和订阅者之间的概念区别是啥?

Scala零基础教学90-101Akka 实战-深入解析

Akka(38): Http:Entityof ByteString-数据传输基础