理论教育 Dispatchers和Routers

Dispatchers和Routers

时间:2023-11-24 理论教育 版权反馈
【摘要】:Akka Message Dispatcher是维持Akka Actor“运作”的部分,可以说它是整个Akka框架的引擎。所有的Message Dispatcher同时实现一个Execution Context,这意味着它们可以用来执行任何代码。在Akka中,Dispatcher基于Java Executor框架来实现,提供了异步执行任务的能力。在Akka中,Dispatcher控制和协调消息并将其分发给运行在底层线程上的Actor,由它来负责调度资源的优化,并保证任务以最快的速度执行。Akka提供了多种Dispatcher类型,用户可以根据自己的硬件资源及应用类型选择合适的Dispatcher类型。在Akka中,提供了4种类型的Dispatcher:●Dispatcher。

Dispatchers和Routers

Akka Message Dispatcher是维持Akka Actor“运作”的部分,可以说它是整个Akka框架的引擎。所有的Message Dispatcher同时实现一个Execution Context,这意味着它们可以用来执行任何代码。

在Akka中,Dispatcher基于Java Executor框架来实现,提供了异步执行任务的能力。

Executor是基于生产者—消费者模型来构建的,这就意味着任务的提交和任务的执行是在不同的线程中隔离执行的,即提交任务的线程与执行任务的线程是不同的。Executor框架的两个重要实现是:

●ThreadPoolExecutor:该实现从预定义的线程池中选取线程来执行任务。

●ForkJoinPool:使用相同的线程池模型,提供了工作窃取的支持。

在Akka中,Dispatcher控制和协调消息并将其分发给运行在底层线程上的Actor,由它来负责调度资源的优化,并保证任务以最快的速度执行。Akka提供了多种Dispatcher类型,用户可以根据自己的硬件资源及应用类型选择合适的Dispatcher类型。

Dispatcher运行在线程之上,负责分发其邮箱里面的Actors和Messages到executor中的线程上运行。在Akka中,提供了4种类型的Dispatcher:

●Dispatcher。

●Pinned Dispatcher。(www.daowen.com)

●Balancing Dispatcher。

●Calling Thread Dispatcher。

对应的,也有默认的4种邮箱的实现:

●Unbounded mailbox。

●Bounded mailbox。

●Unbounded priority mailbox。

●Bounded priority mailbox。

Akka提供了这么多默认的实现,在程序中要如何使用呢?以及如何为Actor指定派发器呢?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈