首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka独立路由器与独立路由器

Akka独立路由器与独立路由器
EN

Stack Overflow用户
提问于 2018-03-09 00:06:54
回答 1查看 252关注 0票数 0

最近我一直在学习Scala,并且一直坚持路由的概念。总的来说,我知道路由器是怎么回事,但是我不明白独立路由器和独立路由器之间的区别。

我反复阅读了文档,这仍然让我非常困惑:https://doc.akka.io/docs/akka/2.5.3/scala/routing.html

请有人解释一下我(如果可能的话)一些代码或参考)独立路由器和独立路由器之间的区别是什么?

提前谢谢你。

编辑:

根据文件:

路由器可以在参与者的内部或外部使用,您可以自己管理路由器,也可以使用具有配置功能的自包含路由器参与者。

所以我想,这一切都是关于如何管理路由器的。在一种情况下,它们是手动管理的,而在另一种情况下,...well,我还不知道如何使用自包含的路由器参与者来管理它们。

编辑2:

再一次,根据文档,这就是他们在谈论自成一体的参与者时所指的东西。实际上,我一直使用这样的路由器,但是什么是独立路由器呢?

代码语言:javascript
复制
val router1: ActorRef = 
   context.actorOf(FromConfig.props(Props[Worker]), "router1")

编辑3:

我想我的困惑来自以下代码。这被称为独立路由器:

代码语言:javascript
复制
Router(RoundRobinRoutingLogic(), routees)

与此相比,有什么不同?

代码语言:javascript
复制
val router1: ActorRef = 
   context.actorOf(FromConfig.props(Props[Worker]), "router1")

在性能或能力方面有什么不同吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-09 07:44:52

主要区别在于路由器是如何管理的。您可以自己管理路由器,也可以使用具有配置功能的独立路由器参与者。

案例1-为了管理路由器,您必须创建路由器参与者并添加到路由器中。注意路由器的演员被终止,这样他们可以再次被添加到路由器。选自阿克卡博士

代码语言:javascript
复制
var router = {
    val routees = Vector.fill(5) {
      val r = context.actorOf(Props[Worker])
      context watch r
      ActorRefRoutee(r)
    }
    Router(RoundRobinRoutingLogic(), routees)

如您所见,创建路由器的参与者必须确保添加了路由器。

案例2-自管理路由器就像线程池(Java池)。它是由路由器池管理的路由器参与者的集合,就像线程池管理线程一样。它有一些优点,如在负载下动态调整大小。鲁蒂创造完成了自动化。

代码语言:javascript
复制
new RoundRobinPool(5, new DefaultResizer(1, 10))

基本上,自包含路由器(池或组)可以被视为包装器。

编辑->组路由器保存路由者的路径,无论路由器是否死,参与者ref.So都不会将消息路由到它。群路由器的可能用例可以是多个共享路由器的组路由器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49184588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档