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

news2024/9/22 23:25:08

一、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 扩展包进行扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1360850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DMX512输出协议详解

目录 ​编辑 1、DMX512协议简介 2、DMX512协议分析 DMX512指令帧介绍 DMX512信息包 3、DMX512接口电路 4、参考代码 1、DMX512协议简介 DMX512是一种用于舞台灯光控制的数字传输协议。它是由美国舞台灯光协会(USITT)于1990年发布的工业标准&…

利用小红书笔记详情API:为内容运营提供强大的支持

利用小红书笔记详情API,内容运营者可以获得对小红书平台上的笔记内容的深入洞察,从而为其运营工作提供强大的支持。以下是该API如何支持内容运营的几个关键方面: 获取笔记内容与数据: API允许内容运营者直接获取小红书平台上的笔记…

Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …

57.6K star!一个免费开源的 API 开发生态系统

!!!文末有链接!!! 小伙伴们,你们有没有遇到这样的问题呢?当你作为前端开发者和后端开发者一起协同工作时,联调接口成了必须要做的工作。 而为了验证接口的稳定性和安全…

Python武器库开发-武器库篇之子域名扫描器开发(四十一)

Python武器库开发-武器库篇之子域名扫描器开发(四十一) 在我们做红队攻防或者渗透测试的过程中,信息收集往往都是第一步的,有人说:渗透的本质就是信息收集,前期好的信息收集很大程度上决定了渗透的质量和攻击面,本文将…

LabVIEW在高级结构监测中的创新应用

LabVIEW在高级结构监测中的创新应用 LabVIEW作为一个强大的系统设计平台,其在基于BOTDA(光时域反射分析)技术的结构监测中发挥着核心作用。利用LabVIEW的高效数据处理能力和友好的用户界面,开发了一个先进的监测系统。该系统专门…

ThreadPoolExecutor中的keepAliveTime详解

一.keepAliveTime的概念: keepAliveTime的单位是纳秒,即1s1000000000ns,1秒等于10亿纳秒。 keepAliveTime是线程池中空闲线程等待工作的超时时间。 当线程池中线程数量大于corePoolSize(核心线程数量)或设置了allowCor…

反诈宣传进社区 安全防护零距离

反诈宣传进社区 安全防护零距离 广州党建引领城中村治理志愿服务项目之“我爱我家”助建幸福网格项目,由中共广州市委政法委员会、广州市精神文明建设委员会办公室、广州市民政局广州市文化电旅游局、广州市来穗人员服务管理局、广州市消防救援支队、共青团广州市委…

STM32CubeMX之GPIO中断

参考文章《【STM32】HAL库 STM32CubeMX教程三----外部中断(HAL库GPIO讲解》 1 STM32CubeMX参数配置及其说明 配置好之后,生成代码 2 工程中的代码 用户在此函数中实现中断代码即可 /*** brief EXTI line detection callbacks.* param GPIO_Pin: Specifies the …

【计算机毕业设计】SSM停车场管理系统

项目介绍 本项目为后台管理系统,分为管理员、用户、工作人员三种角色; 管理员角色包含以下功能: 登陆页面,收入查看,停车卡开卡等功能。 用户角色包含以下功能: 用户登录,停车卡管理,优惠券管理,发送站内信,查看停车记录等功能…

wordpress个人博客/杂志主题Pin Premium

Pin Premium WordPress主题是针对博主的时尚且自适应的Pinterest风格主题。使用HTML5和CSS3技术创建,带有有效代码(两个演示),完全响应,在所有移动设备上看起来完美,可在任何设备和 PC 上轻松使用。 响应式设计针对平板电脑和智能…

基于 Python+Django 技术栈,我开发了一款视频管理系统

学习过程中,遇到问题可以咨询作者 大家好,作为一名开发人员,平时比较愿意动手尝试各种有意思工具,因为笔者非常喜欢观看视频,尤其是YouTube、bilibili都是笔者非常喜欢的视频网站,所以想自己实现一个视频点…

astadmin安装querylist插件Puppeteer

我本来是想在linux服务器上安装,折腾了一天也没安装成功,由于急着用,就先做window10上安装了,以后有时间再研究centos7上安装 一 首先需要安装fastadmin 框架和querylist插件 这个大家可以自行安装,querylist安装地址…

ChatGPT大升级,文档图像识别领域迎来技术革新

​写在前面ChatGPT迎来重大升级冲击与机遇并存​大模型时代的思考与探索■ 像素级OCR统一模型- UPOCR■ OCR大一统模型- SPTS v3■ 文档识别分析LLM应用 写在最后问卷抽奖 ​写在前面 2023 年 12 月 31 日第十九届中国图象图形学学会青年科学家会议在广州召开,该会…

Linux ssh 实现远程免密登录

一、背景 我搭建了一个 zookeeper 集群,写了一个 shell 脚本来控制集群的启动和关闭,但是我发现每次我执行 shell 脚本的时候,都需要我输入各个服务器的密码才可以运行,感觉很麻烦。shell 脚本里面连接其他服务器用的就是 ssh 的方…

Oracle文件自动“减肥”记

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

案例分析——如何优化跨境直播网络

跨境直播 风口已至 这些年越来越多商家加入直播带货行列,各种玩法日渐成熟。而TikTok作为当前国外最火爆的直播平台,不少卖家都会定期做TikTok直播引流,但时常会面临着远程访问导致直播画面模糊、卡顿掉线、延迟高,甚至可能限流黑…

目标检测-One Stage-YOLOv2

文章目录 前言一、YOLOv2的网络结构和流程二、YOLOv2的创新点预处理网络结构训练 总结 前言 根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是: 和Fast-CNN相比,速度快,但精度下降。(边框回归不加限制)…

数据结构第六弹---带头双向循环链表

双向循环链表 1、带头双向循环链表概念2、带头双向循环链表的优势3、带头双向循环链表的实现3.1、头文件包含和结构定义3.2、创建新结点3.3、打印3.4、初始化3.5、销毁3.6、尾插3.7、头插3.8、头删3.9、尾删3.10、查找3.11、在pos之前插入3.12、删除pos位置3.13、判断是否为空3…

苦学golang半年,写了一款web服务器

苦学golang半年,写了一款web服务器 文章目录 苦学golang半年,写了一款web服务器example 项目地址:https://github.com/fengyuan-liang/jet-web-fasthttp 苦学golang半年,写了一款web服务器,里面包含笔者各种工程实践&a…