一、AKKA是什么?
Akka是一个用于构建高并发、分布式、可容错、事件驱动的应用程序的工具包和运行时。它基于Actor模型,提供了一种高效的并发编程模型,可以轻松地编写出高并发、分布式、可容错的应用程序。Akka还提供了一些常用的组件,如路由、集群、持久化等,可以帮助开发人员更加方便地构建分布式应用程序。
- 一个开发库和运行环境,可以用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用
- 使构建高并发的分布式应用更加容易。
- 虽然它由scala编写的,但也同时提供java api接口,所以使用java一样可以使用akka。
- 对并发模型进行了更高的抽象
- 是异步、非阻塞、高性能的事件驱动编程模型
- 是轻量级事件处理(1GB内存可容纳百万级别个Actor)
- 它提供了一种称为Actor的并发模型,其粒度比线程更小,你可以在系统中启用大量的Actor。
- 它提供了一套容错机制,允许在Actor出现异常时,进行一些恢复或重置操作。
- Akka既可以在单机上构建高并发程序,也可以在网络中构建分布式程序,并提供位置透明的Actor定位服务。
二、AKKA能做什么?
当前大数据领域火热的框架底层的分布式计算和通信实现都是Akka
一些使用Akka作为底层框架的知名项目包括:
- Apache Spark:一个用于大规模数据处理的分布式计算框架,使用Akka作为其底层通信框架。
- Apache Flink:也使用了Akka作为其底层通信框架。
- Lagom:一个基于Akka和Play框架构建的微服务框架。
- Akka HTTP:一个基于Akka构建的高性能HTTP服务器和客户端框架。
- Alpakka:一个基于Akka Streams构建的数据集成框架,用于处理异步、非阻塞的数据流。
三、AKKA有什么?技术去支撑它呢?
- Akka处理并发的方法基于Actor模型,Actor之间通信的唯一机制就是消息传递。
- Actor的基础就是消息传递。
Actor由状态(state)、行为(Behavior)和邮箱(mailBox)三部分组成
【1】状态(state):Actor中的状态指的是Actor对象的变量信息,状态由Actor自己管理,避免了并发环境下的锁和内存原子性等问题
【2】行为(Behavior):行为指定的是Actor中计算逻辑,通过Actor接收到消息来改变Actor的状态
【3】邮箱(mailBox):邮箱是Actor和Actor之间的通信桥梁,邮箱内部通过FIFO消息队列来存储发送方Actor消息,接受方Actor从邮箱队列中获取消息
3.1 Actor模型介绍
Actor模型是一种并发编程模型,它将计算机系统中的并发实体抽象为Actor,每个Actor都是一个独立的计算单元,它们之间通过消息传递进行通信。Actor之间的通信是异步的,无需共享内存,因此可以避免共享内存带来的并发问题。Actor模型可以轻松地编写出高并发、分布式、可容错的应用程序,因此被广泛应用于分布式系统和并发编程领域。
3.2 Actor模型的特点
- 每个Actor都是一个独立的计算单元,它们之间通过消息传递进行通信,因此可以避免共享内存带来的并发问题。
- Actor之间的通信是异步的,无需共享内存,因此可以避免共享内存带来的并发问题。
- Actor模型可以轻松地编写出高并发、分布式、可容错的应用程序,因此被广泛应用于分布式系统和并发编程领域。
3.3 Actor模型的优点
- 可以避免共享内存带来的并发问题。
- 可以轻松地编写出高并发、分布式、可容错的应用程序。
- 可以提高系统的可伸缩性和可靠性。
3.4 Actor模型的缺点
- 消息传递的开销比共享内存大。
- Actor之间的通信是异步的,因此可能会导致消息的顺序不确定。
- Actor模型需要开发人员具备一定的并发编程经验和技能。
四、Akka的五大特性
-
易于构建并行和分布式应用 (Simple Concurrency & Distribution)
Akka在设计时采用了异步通讯和分布式架构,并对上层进行抽象,如Actors、Futures ,STM等。 -
可靠性(Resilient by Design)
系统具备自愈能力,在本地/远程都有监护。 -
高性能(High Performance)
在单机中每秒可发送50000000个消息。
内存占用小,1GB内存中可保存2500000个actors。 -
弹性,无中心(Elastic — Decentralized)
自适应的负责均衡,路由,分区,配置 -
可扩展(Extensible)
可以使用Akka 扩展包进行扩展。