Akka

Spring与Akka的集成 概述 近年来随着Spark的火热,Spark本身使用的开发语言Scala、用到的分布式内存文件系统Tachyon(现已更名为Alluxio)以及基于Actor并发编程模型的Akka都引起了大家的注意。了解过Akka或者Actor的人应该知道,这的确是一个很不错的框架,按照Akka官网的描述——使用Akka使得构建强有力的并发与分布式应用将更加容易。由于历史原因,很多Web系统在开发... 阅读详情

akka

@(scala)

基本介绍

Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。
官方网站 (http://akka.io/)的介绍是:

Akka is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on the JVM.
Build powerful concurrent & distributed applications more easily.

翻译成中文就是:Akka是一个开发库和运行环境,可以用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用。使构建高并发的分布式应用更加容易。

优势

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

取得优势的原因

采用Actor并发模型,放弃传统的锁模型
这样会:
1. 性能高
2. 天然适合并发环境

Actor 模型

Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下:
- 系统中的所有事物都可以扮演一个Actor
- Actor之间完全独立
- 在收到消息时Actor所采取的所有动作都是并行的,在一个方法中的动作没有明确的顺序
- Actor由标识和当前行为描述
- Actor可能被分成原始(primitive)和非原始(non primitive)类别
很多开发语言都提供了原生的Actor模型。例如erlang,scala等

Actor,可以看作是一个个独立的实体,他们之间是毫无关联的。但是,他们可以通过消息来通信。

一个Actor收到其他Actor的信息后,它可以根据需要作出各种相应。消息的类型可以是任意的,消息的内容也可以是任意的。这点有点像webservice了。只提供接口服务,你不必了解我是如何实现的。

一个Actor如何处理多个Actor的请求呢?它先建立一个消息队列,每次收到消息后,就放入队列,而它每次也从队列中取出消息体来处理。通常我们都使得这个过程是循环的。让Actor可以时刻处理发送来的消息。

阅读材料

  1. 官方文档
  2. 上述文件的翻译
akka基础 [TOC] ps:本文主要参考《akka入门与实践》 学习akka之前最好先了解一下reactive架构,actor模型和erlang语言的设计思想 《大数据时代的软件架构范式:Reactive架构及Akka实践》 《面向软件错误构建可靠的分布式系统》 基本概念 akka:基于actor并发模型的分布式工具集,用于协调远程计算资源来进行一些工作。 actor:类似于进程或者线程的... 阅读详情

相关推荐

Flink底层实现Akka

Flink的RPC实现:是基于Scala的网络编程库Akka来的。 Akka的特点 它是对并发模型进行了更高的抽象 它是异步、非阻塞、高性能的事件驱动编程模型 它是轻量级事件处理(1GB内存可以以容纳百万级别的Actor) Akka简介 Akka是一个网络编程库 ActorSystem是管理Actor生命周期的组件,Actor是负责进行通信的组件 每个Actor都有一个MailBox(在Flink源码中经常可以看到,checkpoint通知就是基于此),别的Actor发送给它的消息都是首先存储在Mai

百看不如一RUN 3706

Akka框架简单介绍

Akka是Java虚拟机平台上构建高并发、分布式和容错应用的工具包和运行时。Akka使用Scala语言编写同时提供了Scala和Java的开发接口,Akka处理并发的方法基于Actor模型,Actor之间通信的唯一机制就是消息传递。 Akka特点: 对并发模型进行了更高的抽象 异步、非阻、高性能的事件驱动编程模型 轻量级事件处理(1GB内存可以容纳百万级别个Actor) 提供了一种称为Actor...

weixin_44240370的博客 2137

【akka】初识Akka 简单介绍

Akka是一个用来开发支持并发、容错、扩展性的应用程序框架,基于actor模式的实现。在actor模型的上下文中,所有的活动实体都被认为是互不依赖的actor,actor之间的互相通信是通过彼此之间发送异步消息来实现的。每个actor都有一个邮箱(Mailbox)来存储接收到的消息,因此每个actor都维护着自己独立的状态。

九师兄 1153

AKKA框架持久化入门样例

背景 我们在开发的过程中可能会在内存中操作数据,但是可能会遇到突然服务器断电、网线被挖等情况。这就需要将内存中的数据持久化,在程序重启的时候依然能够恢复。 AKKA介绍 Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Jav...

康雨城 909

Akka:Scala与Java的高性能并发框架

本文还有配套的精品资源,点击获取 简介:Akka是一个高性能、容错的并行计算框架,使用Scala编写,通过Actor模型实现分布式计算。其核心概念包括轻量级线程Actor,通过消息传递实现并发,监督和监控机制提供强大的容错能力,Cluster支持真正的分布式计算,而持久化特性确保了数据在系统崩溃后的可恢复性。Akka Streams提供声明式数据流处理,配合Play Fra...

weixin_42515842的博客 2722

风力摆控制系统 PCB 设计 3 要点:STM32+MPU6050+空心杯电机驱动一体化

本文详细解析了风力摆控制系统PCB设计的3大核心要点,重点介绍STM32主控、MPU6050姿态传感器与空心杯电机驱动的一体化方案。通过系统架构设计、PCB布局布线技巧以及噪声抑制方案,帮助参赛者在电子设计竞赛中构建高精度、高稳定性的风力摆控制系统,提升竞赛作品性能。

weixin_30363285的博客 362

【Scala】基于akka的多线程应用程序日志收集服务

Akka is a toolkit and runtime for building highly concurrent,distributed, and resilient m...

Big data enthusiast 345

VisionMaster Qt二次开发:图像获取、COM组件渲染与本地化存储实战

本文详细介绍了基于VisionMaster进行Qt二次开发的核心实战流程,涵盖环境搭建、方案加载、图像数据获取、COM组件渲染与本地化存储。重点解析了如何通过COM组件在Qt界面中实时显示图像,以及将VM图像数据转换为QImage并保存为本地文件的关键步骤与常见问题,为工业视觉项目开发提供稳定高效的解决方案。

weixin_29229261的博客 206

Akka2.5.x升级到2.6.x

Akka2.5.x升级到2.6.x 背景 系统集群化后,需要使用2.6.7+版本的脑裂功能模块。 注意:Akka2.6已经不支持scala2.11了。 build.sbt配置 val AkkaVersion = "2.6.14" libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-cluster" % AkkaVersion, "com.typesafe.akka" %% "akka-discovery" % AkkaVersion,

空中的鱼 1052

告别远程控制弹窗:免Root实现投射与录制敏感信息自动授权

本文针对Android远程控制中频繁出现的‘在投射和录制时显示敏感信息’弹窗问题,提供了一套免Root的自动化解决方案。通过结合Shizuku与App Ops两款工具,无需破解系统即可静默授予屏幕投射与录制权限,从而实现稳定、无干扰的远程协助、家庭监控或自动化测试,彻底告别手动授权弹窗的烦恼。

qsc9012345的博客 720

YOLO26改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 218

akka介绍

akka简介    一开始想接触到akka,是在看一些并发相关资料的时候,查了下akka的官方介绍,介绍如下:Akka是一个开发库和运行环境,可以用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用,使构建高并发的分布式应用更加容易。 听到高并发和分布式这两个关键字就已经足够让人想去探索究竟是什么样的框架,当深入查看各种资料后,发现当前大数据领域火热的spark、flink底层的分布式计...

码农的世界你不懂 5万+

阻抗控制器实现机器人关节运动控制

本文先对做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章如:PID反馈控制器、前馈控制器、前馈+反馈控制器等等如:机械臂模型(几何解算)控制器、小车底盘运动学模型(几何解算)的控制器、四足机器人模型(预测迭代)的控制器等等如:微分平坦(无人机的轨迹跟随)等等如:MPC优化控制算法如:线性二次调节器(LQR)是基于模型的控制器,使用车辆状态来使误差最小化,Apollo使用LQR进行横向控制。横向控制包含四个组件:横向误差、横向误差的变化率、朝向误差和朝向的变化率。

qq_35635374的博客 365

Akka使用入门

一Akka简单介绍 二Akka简单使用 从创建一个scala项目说起 第一个Akka应用 a 定义一个Actor b 客户端调用向actor发送消息 c Actor的生命周期 dActor编程模型的层次结构 akka的容错机制 akka的远程调用 客户端应用入口 服务端入口 pojo类 客户端配置文件 服务端配置文件 三Spark20为什么放弃Akka 四Akka适用场景 一、Akka简单介绍

dinghuiit的博客 2493

【00】虹软2023届校招专场 ,计算机类笔试攻略(笔试考试时间、考察范围、笔试难度 等说明)

虹软科技2023校招笔试攻略:三大岗位类别(算法、算法优化、开发)分别于7月24日进行。题型包括选择题、编程题和问答题,其中算法类题目降低难度,编程题改为LeetCode模式。重点考察数学基础、机器学习、编程能力(C/C++/Python)、数据结构和算法优化等。建议根据投递岗位选择问答题,算法优化类注重系统知识和SIMD优化,开发类侧重多线程等实际应用能力。笔试结果将作为校招offer的重要参考。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 277

SAP-ABAP:SAP MM采购订单增强核心BAdI:IF_EX_ME_PROCESS_PO_CUST 深度解析与最佳实践指南

SAP MM采购订单增强核心BAdI:IF_EX_ME_PROCESS_PO_CUST 关键摘要 核心要点 技术定位:SAP MM模块采购订单处理的核心增强框架,属于第二代BAdI技术,支持多实例并行实现 架构特点: 覆盖采购订单全生命周期(创建/修改/显示) 嵌入ME21N/ME22N/ME23N的标准处理流程 提供字段级、抬头、行项目、账户分配等多层次增强点 关键方法: INITIALIZE:事务初始化时预加载数据 PROCESS_HEADER:处理抬头数据变更 PROCESS_ITEM:处理行项目字段

baidu_35680696的博客 812

Akka Management 项目教程

Akka Management 项目教程 1. 项目目录结构及介绍 Akka Management 项目的目录结构如下: akka-management/ ├── build.sbt ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── RELEASING.md ├── docs/ ├── integration-test/ ├── lease-kub...

gitblog_00487的博客 869

【OpenClaw从入门到精通】第23篇:OpenClaw办公自动化实战—报表生成+文档批量处理+跨系统同步(2026实操进阶版)

本文聚焦OpenClaw在办公自动化场景的进阶应用,针对职场中高频且重复的报表生成、文档批量处理、跨系统数据同步三大痛点,提供从环境搭建、原理讲解到完整代码实现的全流程实操指南。方案基于Python生态工具链(pandas、Playwright、PyPDF2等)与OpenClaw的低代码编排能力,兼顾新手入门与进阶提升——新手可直接复用代码快速落地,进阶读者可学习流程编排逻辑进行二次开发。所有案例均基于真实办公场景设计,部分虚拟场景已明确标注,代码经本地环境验证可复现。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 968

akka介绍之-akka-remote介绍

akka-remote介绍   既然akka是构建分布式高并发的计算和运行框架,当然要离不开远程通信,akka的remote模块就是专门支持分布式的远程调用。 说到分布式应用,大家肯定想到以下几个耳熟能详的技术实现 RPC(Remote Procedure Call Protocol) Web Service RMI (Remote Method Invocation) JMS(Ja...

码农的世界你不懂 4316

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Akka简介

一、Akka简介   Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。    Actor模型:   在计算机科学领域,Actor模型是一个并行计算(Concurrent Computation)模型,它把actor作为并行计算的基本元素来对待:为响应一个接收到的消息,一个actor能...

迷茫君的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SBT构建Akka项目

学习Akka项目断断续续弄了好久,今天刚好把SBT装好,顺便也将之前遗留的Akka Demo的问题解决掉了,跟大家分享一下~ 1.准备工作 (1)安装Akka,到Akka官网下载一个安装包就可以了,地址: http://akka.io/downloads/?_ga=1.235296577.1332829892.1429753844 (2)安装STB,地址:http://www.scala-s

igoqhb的专栏 2332

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Akka入门(一)Akka简介与为什么使用Akka

AKKA是一套开源库,用于设计跨处理器和跨网络的可扩展弹性系统。Akka允许开发者专注于满足业务需求,而不是编写低级代码以提供可靠的行为,容错和高性能。

康雨城 5390

akka实例

一、akka简介 akka是用scala编写的actor模型框架。它在使用中不需要锁和多线程,每个actor在独立空间中进行数据操作, 各个actor间完全依赖消息进行信息交互,操作都是异步进行的。 它可以用于高并发、分布式场景,需要注意的是,akka消息的传递不保证绝对可靠投递,当然这带来了好处是 整个实现简单。 二、akka关键点 1、角色系统建立 在akka中,所有角色都需在角

panda-star的博客 5370

Akka入门

Akka是一个异步非阻塞高并发处理框架,它是一系列框架,包括akka-actor, akka-remote, akka-cluster, akka-stream等,分别具有高并发处理模型——actor模型,远程通信,集群管理,流处理等功能。

bao2901203013的专栏 2088

Akka-路由策略

热爱湘鄂的妹子,喜欢江浙的妹子

文天大人 1428

akka for java

akka for java 入门第一步,通过 akka 模拟 flink 的心跳检测

小王是个弟弟 1551
上一篇: Spark-SQL-core
下一篇: scala
blesslyy
博客等级 码龄14年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值