Akka相关概念理解

简介: <div style="margin:0px; padding:0px; border:0px; line-height:1.6; font-family:'Helvetica Neue',Arial,'Hiragino Sans GB',STHeiti,'Microsoft YaHei','WenQuanYi Micro Hei',SimSun,Song,sans-serif; font


Akka相关概念理解

Actor适用

Actors可以替代:

  • 一个线程
  • 一个对象或者组件
  • 一个callback或者listener
  • 一个单例或者服务
  • 一个路由转发者,负载均衡器,池
  • 一个Java EE的session bean或者事件驱动bean

创建很多的Actors:
Actors不像线程一样重,可以把它们当做轻量级的对象来看

  • 为每个请求创建一个actor?没问题
  • 为处理一个message,创建一个内部actor去处理?可以
  • Actor树应该很深,而不是很浅

不要用阻塞,否则会ties up该线程,并占有大量系统资源。
如果一定要用,在一个独立的线程池中适用阻塞api,将其隔离在actor或者future中。(ppt 49页)

ActorSystem包括

  • 配置
  • dispatcher(thread pool)
  • actors树形继承结构

Dispatcher

默认的,事件驱动的,将一组actor绑到一个线程池中,共享线程的

Mailbox

默认为akka.actor.default-mailbox(无限邮箱,java.util.concurrent.ConcurrentLinkedQueue)默认是先进先出的队列,可以自行实现优先级队列,但akka中当前behavior必须总是处理下一个出队的消息,而且没有扫描mailbox的动作,处理消息失败时,即认为failure发生了,当然这个行为可以被重写

Actor

可以理解为calble,跑在线程池上

ActorRef

这是一个 Actor 实例的句柄(handle),你可以用它来与实际的 Actor进行交互。 The ActorRef 是不可变量,与它所代表的Actor之间是一对一的关系

EventStream

携带日志消息,死信.actor可以从EventStream订阅日志或者死信

Reference

http://www.gtan.com/akka_doc/scala/dispatchers.html
http://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1


目录
相关文章
|
Java 应用服务中间件
idea tomcat 404 无法自动打开本地项目war包路径
idea tomcat 404 无法自动打开本地项目war包路径
262 0
|
Web App开发 缓存 安全
电脑屏幕上的广告太多怎么解决?
安装一个广告拦截扩展或软件,如AdBlock Plus、uBlock Origin等。这些工具可以帮助拦截网页广告,在浏览器的扩展商店中搜索并添加这些扩展。例如,在Chrome中,你可以访问Chrome网上应用店来安装。
|
弹性计算 Docker Windows
阿里云Windows Server 2016环境Docker试用
前文我们介绍过在本地Windows10环境中,基于Hyper V容器的Docker使用。现在阿里云已经提供了Windows Server 2016支持,我们来亲自体验一下原生的Windows Server容器吧。
28097 0
|
7月前
|
缓存 NoSQL Java
阿里面试:DDD 落地,遇到哪些 “拦路虎”?如何破局?
为每个子领域定义限界上下文(bounded context),限界上下文是一个清晰定义了领域模型的边界的范围。在限界上下文内,领域模型的概念是一致的,但不同限界上下文之间可以有不同的模型和语言。界限上下文,基本可以对应到 落地层面的 微服务。这就是 DDD 建模和 微服务架构, 能够成为孪生兄弟、 天然统一的原因。具体的方法论和落地实操,请参考 《第34章视频 DDD学习圣经》DDD 战略设计的第一步就是统一语言,也叫通用语言(UBIQUITOUS LANGUAGE),用于定义上下文。
阿里面试:DDD 落地,遇到哪些 “拦路虎”?如何破局?
|
10月前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
Java 应用服务中间件 Linux
解决Tomcat启动闪退问题的详细指南
解决Tomcat启动闪退问题的详细指南
|
机器学习/深度学习 人工智能 算法
探索AI在医疗诊断中的应用:挑战与机遇
本文旨在探讨人工智能(AI)在医疗诊断领域的应用,分析其在提高诊断效率和准确性方面的潜力。同时,讨论了当前面临的挑战,包括数据隐私、算法透明度以及技术普及等问题。通过案例研究,本文展示了AI如何在实际医疗场景中提供辅助诊断,并提出了相应的解决策略。
|
Linux Shell Android开发
40K+Star的开源免费美化命令行工具
40K+Star的开源免费美化命令行工具
|
机器学习/深度学习 人工智能 数据可视化
【人工智能】人工智能可解释性和透明度的详细探讨
人工智能的可解释性和透明度是当前AI领域的重要议题,它们对于AI系统的公正性、可靠性、用户信任以及合规性等方面都具有深远的影响。以下是对人工智能可解释性和透明度的详细探讨
782 1
|
机器学习/深度学习 JavaScript 前端开发
PyCharm 2024.1最新变化
PyCharm 2024.1最新变化