什么是Akka | Akka Actors | 并行性和多线程

395 阅读2分钟

阅读时间: 2 分钟

Akka Logo

Akka是一个设计可扩展、有弹性的系统的平台,它跨越了处理器内核和网络。它允许你专注于满足业务需求,而不是编写低级别的代码,以提供可靠的行为、容错和高性能。

Akka提供的功能

  • 多线程行为--无需使用低级别的并发结构,如原子或锁。因此,使你甚至不用考虑内存可见性的问题。
  • 系统及其组件之间透明的远程通信--从而使你不必编写和维护困难的网络代码。
  • 集群式、高可用性、弹性架构,按需扩展- 从而使你能够提供一个真正的反应式系统。

什么是Akka行为体?

首先,Akka的行为体模型增加了一层抽象,使得编写精确的并发、并行和分布式系统变得更加容易。其次,行为体模型适用于其整个库的集合。因此,让你能够一致地理解和使用它们。

Akka演员的特点:

  • 行为体为编写并发和分布式系统提供了更高层次的抽象概念
  • 一个actor可以轻松地编写异步代码,而不需要锁和同步。
  • 它有助于处理显式锁定和线程管理。
  • 因此,它使编写正确的并发和并行系统变得更加容易。
  • 代理人是对象,你不能直接访问他们,而是只能发送消息。
  • 一个角色代表一个独立的计算单元。因此,它封装了其状态和部分应用逻辑。
  • 行为体之间是相互隔离的,所以它们只能通过消息进行交流。
  • 此外,行为体不共享内存。
  • 多个消息按先进先出的顺序处理/一次只处理一个消息。

让我们看一个例子

1.添加依赖关系

libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.6.18"

2.创建一个角色系统

val actorSystem = ActorSystem("firstActorSystem")
println("Actor System name: " + actorSystem.name)

3.创建行为体

class WordCounter extends Actor {
    override def receive: Receive = {
      case message: String => println(s"[WordCount] Message received: ${message}")
      case _ => println(s"[WordCount] I didn't understand")
    }
  }

4.实例化一个行为体

val wordCounter = actorSystem.actorOf(Props[WordCounter], "wordCounter")

5.与行为体进行通信

wordCounter ! "I am learning akka and scala because its amazing and fast"
wordCounter ! 15

输出。

Actor System name: firstActorSystem
[WordCount] Message received: I am learning akka and scala because its amazing and fast
[WordCount] I didn't understand

代码表示

Actor System Code

代码

Output

输出

参考资料

链接:https://doc.akka.io/docs/akka/current/typed/guide/introduction.html

Scala Future