Akka Cluster Aware Router

Cluster Aware Router前端

    Cluster aware Router相对于传统的Router区别在哪?传统的Router是相对于一个Akka System[有待进一步确认是否能够远程部署?],Cluster Aware Router是指可以识别集群的路由。集群必然涉及到多个Akka System,因此Cluster Aware Router就是Remoting和Routing的组合。Cluster Aware Router能够经过查找已有路由看成本身的routees,也能够建立远程部署到多个Node上。集群中的节点变更会自动挂载和卸载routee。 node

两种使用场景web

    1.Router that lookup existing actors and use them as routeeswebsocket

    2.Router that create new routees and deploy them on remote nodes     网络

说一下使用的场景,在下边的这个架构图中客户端经过websocket链接到Front-End模块,Front-End是整个系统的门面,负责前端发送的指令解析并向下转发。下边M1,M2,M3是系统的业务处理模块,接收Front-End发送过来的指令。假如系统的部署状况是这样的Front-End,M1,M2,M3都是集群中的Node。Front-End的路由就要使用Look-up的方式了也就是第一种方式,由于该模块定义了整个系统的服务接口,可是具体的业务是要由下边的模块去作的;M1,M2,M3各个模块的部署能够使用第二种远程的部署方式,这样部署能够使Routees分散在各个Node节点(注意不必定非要这样作,衡量利弊,看是否有必要。利:可控性统一调控actor数量;分布式;充分利用计算资源。弊:分布式带来的网络问题)。架构

Lookup existing actors方式socket

akka.actor.deployment {分布式

  /statsService/workerRouter {spa

    router = consistent-hashingrouter

    nr-of-instances = 100

    cluster {

      enabled = on

      routees-path = "/user/statsWorker"

      allow-local-routees = on

      use-role = compute

    }

  }

}

routees-path:从那个路径查找Actor做为本身的Routee

allow-local-routees:是否容许本地查找,或只容许远程查找

use-role:只从特定节点上查找  

Create and deploy方式

akka.actor.deployment {

  /singleton/statsService/workerRouter {

    router = consistent-hashing

    nr-of-instances = 100

    cluster {

      enabled = on

      max-nr-of-instances-per-node = 3

      allow-local-routees = off

      use-role = compute

    }

  }

}

create-deploy方式就不用制定routees-path了,max-nr-of-instances-per-node:指定单个节点部署多少个routees。

相关文章
相关标签/搜索