0


【项目实战】分布式计算和通信框架(AKKA)入门介绍

一、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模型的特点

  1. 每个Actor都是一个独立的计算单元,它们之间通过消息传递进行通信,因此可以避免共享内存带来的并发问题。
  2. Actor之间的通信是异步的,无需共享内存,因此可以避免共享内存带来的并发问题。
  3. Actor模型可以轻松地编写出高并发、分布式、可容错的应用程序,因此被广泛应用于分布式系统和并发编程领域。

3.3 Actor模型的优点

  1. 可以避免共享内存带来的并发问题。
  2. 可以轻松地编写出高并发、分布式、可容错的应用程序。
  3. 可以提高系统的可伸缩性和可靠性。

3.4 Actor模型的缺点

  1. 消息传递的开销比共享内存大。
  2. Actor之间的通信是异步的,因此可能会导致消息的顺序不确定。
  3. Actor模型需要开发人员具备一定的并发编程经验和技能。

四、Akka的五大特性

  • 易于构建并行和分布式应用 (Simple Concurrency & Distribution) Akka在设计时采用了异步通讯和分布式架构,并对上层进行抽象,如Actors、Futures ,STM等。
  • 可靠性(Resilient by Design) 系统具备自愈能力,在本地/远程都有监护。
  • 高性能(High Performance) 在单机中每秒可发送50000000个消息。 内存占用小,1GB内存中可保存2500000个actors。
  • 弹性,无中心(Elastic — Decentralized) 自适应的负责均衡,路由,分区,配置
  • 可扩展(Extensible) 可以使用Akka 扩展包进行扩展。
标签: java 大数据 spring

本文转载自: https://blog.csdn.net/wstever/article/details/129653096
版权归原作者 本本本添哥 所有, 如有侵权,请联系我们删除。

“【项目实战】分布式计算和通信框架(AKKA)入门介绍”的评论:

还没有评论