【Akka】Actor模型探索

深入解析actor 模型(一): actor 介绍及在游戏行业应用 1 介绍 1.1 什么是actor 对于刚接触actor的我,第一感觉就像redis一样,每个actor就是一个redis 实例,都有自己消息队列,actor相互通信通过将消息发给对方,消息发送进对方的消息队列,等待对方线程处理。来看看我们之前做项目的痛点。 游戏服务器通常分为多个服,每个服上有多个玩家。假设玩家与玩家数据交互操作,这时怎么避免数据竞争?两种解决方案: 1、将数据写入redis 首先redis效率高,也是单线程模型,不存在数据竞争,但是也有它的不足之处,操作redis 会受网络影响 阅读详情

Akka是什么

Akka就是为了改变编写高容错性和强可扩展性的并发程序而生的。通过使用Actor模型我们提升了抽象级别,为构建正确的可扩展并发应用提供了一个更好的平台。在容错性方面我们采取了“let it crash”(让它崩溃)模型,人们已经将这种模型用在了电信行业,构建出“自愈合”的应用和永不停机的系统,取得了巨大成功。Actor还为透明的分布式系统以及真正的可扩展高容错应用的基础进行了抽象。

Akka是JVM(JAVA虚拟机,下同)平台上构建高并发、分布式和容错应用的工具包和运行时。Akka用 Scala语言写成,同时提供了Scala和JAVA的开发接口。

Akka处理并发的方法基于Actor模型。在基于Actor的系统里,所有的事物都是Actor,就好像在面向对象设计里面所有的事物都是对象一样。但是有一个重要区别——那就是Actor模型是作为一个并发模型设计和架构的,而面向对象模式则不是。更具体一点,在Scala的Actor系统里,Actor互相交互并共享信息但并不对交互顺序作出预设。Actor之间共享信息和发起任务的机制是消息传递。

Akka在多个Actor和下面的系统之间建立了一个层次(Layer),这样一来,Actor只需要处理消息就可以了。创建和调度线程、接收和分发消息以及处理竞态条件和同步的所有复杂性,都委托给框架,框架的处理对应用来说是透明的。

Akka混合模型特点

  • Actors
    Actors为你提供:
    对并发/并行程序的简单的、高级别的抽象。
    异步、非阻塞、高性能的事件驱动编程模型(代码可以异步处理请求并采用独占的方式执行非阻塞操作)。
    非常轻量的事件驱动处理(1G内存可容纳约270万个Actors)。
  • 容错性
    使用“let-it-crash”语义和监管者树形结构来实现容错。非常适合编写永不停机、自愈合的高容错系统。监管者树形结构可以跨多个JVM来提供真正的高容错系统。
  • 位置透明性
    Akka的所有元素都为分布式环境而设计:所有Actor都仅通过发送消息进行互操作,所有操作都是异步的。
  • 可伸缩性
    在Akka里,不修改代码就增加节点是可能的,感谢消息传递和位置透明性(location transparency)。
  • 高弹性
    任何应用都会碰到错误并在某个时间点失败。Akka的“监管”(容错)策略为实现自愈系统提供了便利。
  • 响应式应用
    今天的高性能和快速响应应用需要对用户快速反馈,因此对于事件的响应需要非常及时。Akka的非阻塞、基于消息的策略可以帮助达成这个目标。
  • 事务性Actors
    事务性Actor是Actor与STM(Software Transactional Memory)的组合。它使你能够使用自动重试和回滚来组合出原子消息流
用Java实现Actor模型(模仿Skynet) Actor模型是一种常见的并发模型,与最常见的并发模型——共享内存(同步锁)不同,它将程序分为许多独立的计算单元——Actor,每个Actor独立管理自己的资源,不同Actor之间通过消息传递来交互。它的好处是全异步执行,不会造成线程阻塞,从而提升CPU使用率,另外由于线程之间是异步交互,所以也不用考虑加锁和线程同步的问题。Actor模型在业界有许多应用,例如游戏服务器框架Skynet、编程语言Erlang。因为历史原因,Java下的Actor模型应用较少,知名的只有基于Scala的Akka 阅读详情

相关推荐

24、深入探索 AkkaActor 模型:从基础到 Typed 应用

本文深入探讨了 AkkaActor 模型的基础概念及其在现代应用开发中的运用,重点介绍了 Akka Typed 的核心特性与实现方式。内容涵盖 Actor 的生命周期管理、测试方法、调度器配置、消息暂存机制以及行为组合等关键技术点,并通过构建饼干烘焙店的 Actor 系统实例展示了实际应用场景。文章还对比了 Akka Typed 与未类型化 Akka 的主要差异,帮助开发者更好地理解和使用类型安全的 Actor 编程模型。最终提供了完整的开发流程及最佳实践,助力构建高效、可扩展的反应式应用程序。

ik678901的博客 73

actor-framework:C ++中Actor模型的开源实现

CAF:C ++ Actor框架 CAF是C ++ actor模型的开源实现,具有轻量级和快速的actor实现,消息的模式匹配,网络透明消息传递等。 在线资源 主页: : 开发者博客: : 手册: : Doxygen : : 报告错误/获得帮助 GitHub上的未解决问题: : 在StackOverflow上提问: : //stackoverflow.com/questions/ask tags c++-actor-framework 社区 聊天: : 推特: : 用户邮件列表: : 开发人员邮件列表: : 功能提案: : 获取CAF FreeBSD端口 我们为CAF维护一个端口,您可以按照以下步骤进行安装: pkg install caf 另外,您可以在安装端口之前转至/usr/ports/devel/caf并调整一些配置选项:

Akka Typed 探索:基于 Actor 模型的设计模式与路由机制 编程学习

这只是 Akka Typed 提供的众多功能之一,它还提供了更多高级的设计模式和工具,帮助开发人员构建可伸缩的、高性能的并发应用程序。Akka 是一个用于构建高并发、分布式和容错应用的工具包,而 Akka Typed 是其最新版本,提供了类型安全的 Actor 编程模型。在 Akka Typed 中,Actor 是类型安全的,并且通过定义行为和消息类型来保证类型一致性。让我们从一个简单的例子开始,展示如何使用 Akka Typed 创建一个基本的 Actor。消息,打印接收到的消息并保持相同的行为。

KrDebugging的博客 175

Actor模型介绍与应用

actor模型介绍,akka介绍,自定义actor模型

weixin_44716895的博客 2532

Actor模型

1、背景处理并发问题就是如何保证共享数据的一致性和正确性,为什么会有保持共享数据正确性这个问题呢?其实无论是使用数据库锁还是多线程,这里有一个共同思路,就是将数据喂给线程,数据是被动的,自身不复杂,没有自身业务逻辑要求。适合大数据处理或互联网网站应用等等。但是如果数据自身要求有严格的一致性,也就是事务机制,数据就不能被动被加工,要让数据自己有行为能力保护实现自己的一致性。要让数据自己有行为维护自己...

和大黄的博客 5297

分布式技术之分布式计算Actor模式

Actor 模型又是什么呢?Actor 模型,代表一种分布式并行计算模型。这种模型有自己的一套规则,规定了 Actor 的内部计算逻辑,以及多个 Actor 之间的通信规则。在 Actor 模型里,每个 Actor 相当于系统中的一个组件,都是基本的计算单元。Actor 模型的计算方式与传统面向对象编程模型(Object-Oriented Programming,OOP)类似,一个对象接收到一个方法的调用请求(类似于一个消息),从而去执行该方法。

Carroll的博客 2128

并发编程模型Akka

并发编程模型Akka简介Akka 简介Akka 介绍Akka 用于解决什么问题Actor模型Actor模型工作机制Actor应用实例Maven依赖单Actor通信案例多actor通信案例 Akka 简介 Akka 介绍 Akka 是编写并发程序的框架,它提供了一种称为Actor的并发模型,其粒度比线程更小,你可以在系统中启用大量的ActorAkka用Scala语言编写,同时提供了Scala和Java的开发接口。 Akka的出现使得程序员不再过多的考虑线程、锁和资源竞争的问题,可以轻松的写出高效稳

secret2316352792的博客 766

探索Actor模型的奇妙之旅:《学习Akka》开源代码项目推荐

探索Actor模型的奇妙之旅:《学习Akka》开源代码项目推荐 项目介绍 在分布式系统日益复杂的今天,理解和掌握高效的并发编程模型变得至关重要。《学习Akka》是由Jason Goodwin编写的,旨在通过一系列实例带你深入理解Akka框架的力作,该书由Packt Publishing于2015年12月发布。本书的实践代码被整理成了一个开源项目——learning-akka,为渴望探索Akka魅力...

gitblog_00168的博客 723

探索ScalaSTM与Akka actor模型:并发与分布式编程的艺术

本章深入探讨了ScalaSTM在实现银行系统中的应用,以及Akka actor模型在构建并发和分布式程序中的作用。我们学习了如何使用ScalaSTM来创建一个跟踪用户账户资金的银行系统,以及如何实现事务性优先队列和有向图数据结构。此外,本章还介绍了Akka actor模型的基础知识,包括创建actor实例、模拟actor状态和行为、以及在分布式环境中通过位置透明性设计系统。

weixin_28850145的博客 297

actor模型:akka_Akka型演员:探索接待员模式

actor模型:akka 在本文中,我们将探讨另一种Akka类型的模式。 这次,我们将向您展示如何使用接待员模式。 这是有关Akka型的系列文章的第三篇也是最后一篇文章。 其他两篇文章也可以在此站点上找到。 如果您还不了解Akka Typed,最好先阅读“使用Akka Typed的第一步”一文: Akka Typed的第一步 探索接收器模式 接待员模式背后的想法非常简单,Sca...

210

深入理解Akka Actor模型与生命周期

本文深入探讨了Akka框架中的Actor模型,包括如何加载和测试Actor类,Actor之间的层次结构关系,以及如何在Actor系统中识别和引用特定的Actor。我们还研究了Actor的生命周期,理解了异常处理、重启策略以及Actor引用与Actor对象之间的关系。

weixin_28850145的博客 843

22、深入探索 Akka:构建分布式与并发系统的利器

本文深入介绍了 Akka 这一强大的工具,用于构建分布式和并发系统。文章从 Akka 的学习准备和适用人群入手,逐步讲解了 Actor 模型的起源、核心概念及其优势,同时结合寿司餐厅的示例说明其工作流程。文中还探讨了 Akka 在分布式系统中的容错机制、集群工作机制以及实际应用中的注意事项。通过本文,读者可以全面了解 Akka 的基本原理和应用场景,为构建高效稳定的分布式系统打下坚实基础。

ee345的博客 119

thingsboard源码分析(三)-Actor模型

Actor模型在异步处理中使用广泛,尤其是scala语言中actor框架的使用。本篇主要介绍thingsboard中其自主实现的actor模型,及在数据传输中的使用。 Actor模型简介 Actor由状态(state)、行为(Behavior)和邮箱(mailBox)三部分组成 状态:Actor中的状态指的是Actor对象的变量信息,状态由Actor自己管理,避免了并发环境下的锁和内存原子性等...

时间道的博客 4093

Reactor,ProactorActor网络模型

其实无论是使用数据库锁 还是多线程,这里有一个共同思路,就是将数据喂给线程,就如同计算机是一套加工流水线,数据作为原材料投入这个流水线的开始,流水线出来后就是成品,这套模式的前提是数据是被动的,自身不复杂,没有自身业务逻辑要求。但是如果数据自身要求有严格的一致性,也就是事务机制,数据就不能被动被加工,要让数据自己有行为能力保护实现自己的一致性,就像孩子小的时候可以任由爸妈怎么照顾关心都可以,但是如果孩子长大有自己的思想和要求,他就可能不喜欢被爸妈照顾,他要求自己通过行动实现自己的要求。

sun007700的专栏 2186

Actor模型及原理

1.Actor模型 在使用Java进行并发编程时需要特别的关注锁和内存原子性等一系列线程问题,而Actor模型内部的状态由它自己维护即它内部数据只能由它自己修改(通过消息传递来进行状态修改),所以使用Actors模型进行并发编程可以很好地避免这些问题,Actor由状态(state)、行为(Behavior)和邮箱(mailBox)三部分组成 状态(state):Actor中的状态指的是Actor对象的变量信息,状态由Actor自己管理,避免了并发环境下的锁和内存原子性等问题 行为(Behavior):

红豆和绿豆的博客 1363
上一篇: 【Akka】在并发程序中使用Future
下一篇: 【scikit-learn】交叉验证及其用于参数选择、模型选择、特征选择的例子
JasonDing1354
博客等级 码龄12年 1047粉丝 185原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值