
Akka
文章平均质量分 94
Perkinl
但行好事,莫问前程
展开
-
8、Akka任务调度(Dispatcher)
Dispatcher解析Dispatcher是将如何执行任务与何时运行任务两者解耦,所 Actor或Future的工作都是由 (Executor或Dispatcher)分配的资源来完成的。一般来说,Dispatcher会包含一些线程, 这些线程会负责调度并运行任务, 比如处理 Actor 的消息以及线程中的Future事件。不自己创建Dispatcher时使用的是默认Dispathcer,如果任务中有些耗时任务,容易将默认线程池打满,影响其他任务的调度。ExcutorDispatcher 基于原创 2021-01-29 18:00:47 · 2700 阅读 · 1 评论 -
9、Akka中邮箱(MailBox)
简介Akka 的邮箱中保存着发给 Actor 的信息。通常,每个 Actor 都有自己的邮箱,但也有例外,如使用BalancingPool,则所有路由器(routees)将共享一个邮箱实例。邮箱选择默认邮箱未指定邮箱时,使用默认邮箱。默认情况下,它是一个无边界的邮箱,由java.util.concurrent.ConcurrentLinkedQueue支持。SingleConsumerOnlyUnboundedMailbox是一个效率更高的邮箱,它可以用作默认邮箱,但不能与BalancingDis翻译 2021-01-29 17:59:12 · 4438 阅读 · 0 评论 -
7、Akka中Router路由机制
Router基本概念在Akka中,Router 也是一种 actor 类型,是负责负载均衡和路由的抽象,把消息按照路由规则调度,分配给Routee去运算,用于调度actor任务或进行负载均衡策略它路由到来的消息到其他的actors,其他那些actors就叫做routees(被路由对象)。创建方式有两种方式来创建RouterActor Group:Routees由外界其它Actor产生(自行创建,自行管理),特点是能实现灵活的Routee构建和监控。List<Routee> ro原创 2021-01-19 13:11:00 · 2186 阅读 · 0 评论 -
6、Akka状态切换
在Akka中,Actor也经常会处在一个无法处理某些消息的状态。例如数据库客户端离线了,那么在重新上线之前,它都无法处理任何消息。我们可以选择不断重新建立客户端的连接,直到连接成功为止。在这种情况下,在成功连接之前,客户端会丢弃收到的所有消息。另一种做法是把客户端无法处理的消息先放在一旁,等到客户端恢复连接状态之后再做处理。Akka提供了一种叫做stash的机制,用于对于Akka中消息状态的来回切换:stash:将消息暂存到一个独立的队列中,该队列存储目前无法处理的消息:unstash:把消息从暂存原创 2021-01-13 22:27:20 · 1959 阅读 · 2 评论 -
5、Akka Actor生命周期
Actor生命周期Actor的生命周期是使用Hooks体现和控制的,我们可以重写相关的Hooks,从而实现对Actor生命周期各环节的细粒度控制,各种Hook顺序关系如下图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传prestart():在构造函数之后调用,重启时不会执行。postStop():在重启之前调用,异常重启时不会执行。preRestart(reason, message):在 actor 异常重启前保存当前状态,默认情况下会调用 postStop()。po原创 2021-01-13 13:41:42 · 1998 阅读 · 3 评论 -
4、Akka容错处理
监督(Supervision)容错(fault tolerance)概念与 Actor 相关,Actor 模型中容错处理使用叫做监督(supervision)处理。监督的核心思想就是把对于失败的响应和可能引起失败的组件分隔开,并且把可能发生错误的组件通过层级结构来组织,以便管理。在分布式系统中每个组件都是一个定时炸弹,那么我们希望能够确保无论其中任何一个发生爆炸,都不会引发链式反应,导致其他组件也爆炸。也可以说,我们希望能够隔离错误,或是将可能引发失败情况的组件分离开来。监督的层级结构Akka原创 2021-01-11 13:32:42 · 2463 阅读 · 0 评论 -
3、Akka传递消息
1 消息传递Akka 有 4 种核心的 Actor 消息模式: tell 、ask 、forward 和 pipe。Ask:向 Actor 发送一条消息,返回一个 Future。当 Actor 返回响应时,会返回 Future。不会向消息发送者的邮箱返回任何消息。Tell:向 Actor 发送一条消息。所有发送至 sender()的响应都会返回给发送消息的 Actor。Forward:将接收到的消息再发送给另一个 Actor。所有发送至 sender() 的响应都会返回给原始消息的发送者。Pip原创 2021-01-07 19:33:10 · 4785 阅读 · 1 评论 -
2、Akka并发编程设计
1 响应式系统设计Akka 被称为是一个响应式平台,更具体的说,它是 Typesafe 响应式平台的一部分。响应式宣言中包含了 4 个准则,也可以说是设计目标:灵敏性、伸缩性、容错性以及事件驱动设计。1.1 灵敏性应用程序应该尽可能快的对请求做出响应。为了尽快向用户返回响应,在顺序获取数据和并行获取数据之间选择的话,始终应该优先选择并行获取数据。如果可能出现错误,应该立即返回,将问题通知用户,不要让用户等待直到超时。1.2 伸缩性应用程序应该能够根据不同的工作负载进行伸缩扩展(尤其是通过增加计算原创 2021-01-05 22:16:39 · 4097 阅读 · 0 评论 -
1、Akka简介&常用API介绍
Akka简介Akka是Java虚拟机平台上构建高并发、分布式和容错应用的工具包和运行时。Akka用Scala语言编写,同时提供了Scala和Java的开发接口。Akka可以以两种不同的方式来使用以库的形式:在web应用中使用,放到 WEB-INF/lib 中或者作为一个普通的Jar包放进classpath。以微内核的形式:你可以将应用放进一个独立的内核。自己有一个main类来初始化Actor系统。Akka几大特性易于构建并行和分布式应用 (Simple Concurrency &原创 2020-12-22 21:50:13 · 4686 阅读 · 0 评论