Actor简介(二)

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

       在上一部分,我们已经介绍了actor的基本用法,知道如何创建一个actor。我相信大家肯定不想局限于如此,一定想把actor紧紧的握在手中,掌握它的生死。come on ,来吧!

     Actor生命周期

       线程在运行历程中,会经历创建、准备、等待、阻塞等阶段,这一系列我们称之为生命周期。当然,actor也有它自己的生命历程,比如创建、运行、重启和销毁等。在理想的情况下,Actor会任劳任怨的不停工作,但在实际情况下,网络超时或者程序异常,我们希望能够及时感知并处理,例如actor重启或停止执行。关于Actor的生命周期,我们先来看一张图(来自Akka官网):

        从图中,我们看出Actor的生命周期主要包含创建并启动(Start)、恢复(Resume)、重启(Restart)、停止(Stop)这几个阶段,针对自身状态变化,各阶段主要有如下行为:

阶段

行为

创建并启动

(Start)

actorOf()创建并启动Actor时,指定对象Path和UID(对象唯一标识,通过getSelf().path().uid()获取),默认执行preStart()方法,我们可以在该方法中进行资源初始化。

恢复

(Resume)

actor出现异常时,在容错机制下,可以让actor恢复并继续执行,此时actor会继续使用之前的对象实例,状态也回保留。

重启

(Restart)

重启会经历两个过程: 1.调用旧实例的preRestart()方法,该方法会默认停掉所有子级actor并调用postStop()方法。 2.创建新实例,在新实例上调用postRestart()方法, 该方法默认会调用preStart()方法。 重启之后,path和UID不变,ActorRef不变,但是自身状态已改变。

停止

(Stop)<

Actor简介(一)        在开发初期,业务单一、系统简单,一台机器或许就能支撑,这个时候,单机上的任务大多直接调用API的方式就能完成。然而当业务需求日益增多,功能逐渐复杂化,我们就需要考虑把项目拆分成分布式环境,这时,多系统通信就需要通过网络实现。JDK内置的并发包在单机上游刃有余,在分布式环境中,就不是那么完美了。Akka通过Actor很好的解决了远程通信问题。      Actor初识       ... 阅读详情

相关推荐

Akka java 入门【二】 Actor详解

Akka是一个基于Actor模型的并发编程框架,它支持三种Actor类型:AbstractActor、UntypedActor和TypedActor。

哈哈哈 4461

actor 模型原理 (二)

现在开始研究一下akka的actor模型是怎么实现的: 老外写了一个程序说明actor的工作机制,下图就是学生给老师发邮件的具体示意图,那么1-6一共6个步骤 1、学生创建actor system ,就是初始化了ActorSystem 2、学生发邮件,发邮件并不是妈的找个163的邮箱直接发一下,或者说并没有直接给邮件地址,而是采用代理的方式,什么意思呢? 就是为了让俩线程,

tracymkgld的专栏 5201

深入解析actor 模型(二): actor 在go 实践proto.Actor 源码解析

1proto-actor 源码解析 下面我们从actor 系统设计各个模块设计剖析源码,从官方文档结构,结合文档和自己的理解,然后再配合源码,剖析actor设计。 1.1actor核心 actor 特点 从 function 或者method创建 从对象工厂 生成actor通过自动,指定,或者前缀名 1.1.1Props(创建actor 的配置) 配置和构造actor 的上下文context 自定义属性 一种是从函数创建,actor 必须实现Receive(c Context)方法,这是a

白日梦程序员的博客 3034

C++ Actor并发模型框架 Actor Framework (CAF)

什么是ACTOR 并发模型 Actor 是一种处理并发计算的基本模型,主要概念是通过OO 面向对象思想,将计算单元独立成一个对象,在模型中成为Actor,各个独立计算单元之间的通信通过mailbox(邮箱),每个Actor维护自己的mailbox,ma ilbox存储的是需要消费的消息。这里扩散一下知识,在更早期出现的ESB(enterprise service bus)企业服务总线模型是将服务接到消息总线上,服务获取总线上投递给他的消息。 这种方式存在耦合,以及需要一个个服务进行确认,直到消费者进行确认消

BBinChina的专栏 6064

【Akka】Actor引用

Actor系统的实体在Actor系统中,actor之间具有树形的监管结构,并且actor可以跨多个网络节点进行透明通信。 对于一个Actor而言,其源码中存在Actor,ActorContext,ActorRef等多个概念,它们都是为了描述Actor对象而进行的不同层面的抽象。 我们先给出一个官方的示例图,再对各个概念进行解释。 上图很清晰的展示了一个actor在源码层面的不同抽象,和不同

Jason Ding的专栏 4798

基于C#的ASP.NET开发的党史学习网站课设

开展党史学习教育,就是要以史为镜、以史明志,把苦难辉煌的过去、日新月异的现在、光明宏大的未来贯通起来,在鉴往知来中砥砺前行,在乱云飞渡中把准航向,在凝心聚力中团结奋斗,共同创造新的历史伟业。登陆按钮与数据库进行连接,逻辑实现是如图3.1.3所示,自己定义一个SQL查询语句,将账号、密码放入SQL查询语句中,用sqlDataReader.HasRows语句进行逐一比较,找出结果,将用户名存入session并调用cookies,如果结果存在就关闭数据库,进行数据跳转,并弹出登陆成功的提示框,并关闭数据库。

m0_62408555的博客 974

语言随机效应模型_线性混合效应模型 VS 方差分析

线性混合效应模型相比方差分析具有很多优点。为了让大家更直观的了解,我们来做一下两者的对比。基于模拟的方法,生成了以下数据dat_sim:这种数据格式是长格式,也就是从实验软件导出来的那种数据格式。这种数据格式可以直接使用线性混合效应模型进行分析。该实验设计是被试内项目间的单因素两水平设计。category是自变量,两个水平分别是outgroup和ingroup,outgroup比ingr...

weixin_31960565的博客 2688

从理论到板级:FOC电机驱动硬件电路全链路设计解析

本文从硬件工程师视角,深度解析FOC电机驱动从理论到板级实现的全链路设计。重点剖析了电源保护、核心采样电路、三相逆变桥与驱动电路等关键硬件模块的设计要点与实战经验,强调硬件是FOC算法可靠运行的基石,并提供了PCB布局布线的核心原则,帮助开发者构建高性能、高可靠性的电机驱动硬件平台。

weixin_29240711的博客 334

Ansys Zemax与Speos协同设计:HUD系统从光学优化到驾驶视觉验证全流程解析

本文详细解析了如何利用Ansys Zemax与Speos协同工作流,完成HUD系统从光学内核优化到驾驶视觉验证的全流程。通过Zemax进行精密光学设计与像差校正,再通过Speos进行HOA定量分析和虚拟驾驶舱仿真,实现了数据无损流转与验证闭环,有效解决了光学性能与视觉感知脱节的核心问题,显著提升HUD设计效率与可靠性。

git9versioner的博客 530

手把手教你在Keil/IAR中移植SEGGER_RTT组件(避坑指南+性能对比)

本文详细介绍了在Keil/IAR开发环境中移植SEGGER RTT调试组件的完整流程与优化技巧。通过对比传统串口调试,SEGGER RTT凭借零硬件占用、高速传输和双向交互等优势,显著提升嵌入式开发效率。文章包含配置步骤、性能调优方案及常见问题解决方案,是嵌入式开发者必备的实用指南。

y7z8a的博客 245

【YOLOv8系列】YOLOv8的webUI界面设计;通过Streamlit实现YOLOv8的可视化交互界面设计

但是我为了避免重复性的工作,且为了避免重复安装之前(安装pytorch和yolov8时)已经安装好的库,因此写了一个python脚本进行安装;需要提前在有网络连接的电脑上下载所有必要的依赖项,然后将这些文件传输到离线的机器上进行安装。脚本将自动跳过已安装的包,并安装其余的 .whl 文件。在离线的机器上,切换到包含下载好的文件的目录。证明我们的streamlit安装成功了。证明你的streamlit安装成功了。第一步:在有网络连接的电脑上下载。第二步:将下载的文件传输到离线机器。文件)传输到离线的机器上。

AnChenliang_1002的博客 1567

YOLOv13优化Faster_Block:卷积(Partial Convolution)、多层感知机(MLP)结构和残差连接

Faster_Block 代表了现代深度学习中效率与性能平衡的一个典型案例。它通过部分卷积技术巧妙地减少了计算开销,同时通过精心设计的架构保持了强大的特征学习能力。这种设计思想对于移动端部署、实时应用和大规模模型训练都具有重要意义。 未来的发展方向可能包括更智能的动态分割策略、与新兴硬件的深度适配,以及与其他先进技术(如自注意力机制、神经架构搜索等)的结合。Faster_Block 的成功展示了在深度学习领域,创新往往来自于对问题本质的深刻理解和巧妙的工程实现。

FJN110的博客 429

高通GAIA V3命令参考手册的研读学习(15):自定制命令的详细工作描述

里的示例一样,手机APP发出这个GetManuFacturer的命令发0x0000,那么耳机回复:0x8000, 同时在回复的playload部分,用最多15个字节的ACSII码来表达制造商信息(因此最多15个字母)。那么这个APP在通过GAIA协议控制这个耳机时,不仅可以通过前面讲过的vendor ID来识别,也可以更进一步通过这个命令来识别这个耳机,到底是不是本公司的。通过这个可变长度的playload,真的是可以传达极多的事先约定的信息,相当的灵活,真是不错!这个命令用来得到设备的制造商信息。

qq_37191547的博客 399

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: Actor简介(一)
下一篇: Actor监控与容错机制
西红柿丶番茄
博客等级 码龄10年 21粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值