阅读时间: 2 分钟
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
代码表示
代码
输出
参考资料
链接:https://doc.akka.io/docs/akka/current/typed/guide/introduction.html