Vertx Websocket:负载平衡

时间:2018-09-05 05:06:41

标签: websocket load-balancing vert.x

我正在使用通过Web套接字向服务器发送消息的系统上工作。为此,我使用具有多个顶点的vertx(无Rx)Web套接字客户端,并将消息存储在内部队列中。我希望从消息传递队列中出队并提交给具有最小负载的vertical。为了确定负载最小的顶点,我计划使用接收到的数字消息与发送的数字消息的比率。我了解vertx Web套接字本质上是异步的。但是是否有规定可以使用提供的任何处理程序来解析表示消息已到达服务器的响应。


  请注意:通信是一种方式,即仅从客户端到服务器,而服务器不在vertx上,它使用纯净网络  预先感谢。

1 个答案:

答案 0 :(得分:1)

您可以结合使用SharedData和常规处理程序:

this.vertx.createHttpServer().websocketHandler(ws -> {
  ws.handler(data -> {
    this.vertx.sharedData().getCounter(this.deploymentID(), (c) -> {
      c.result().incrementAndGet((dummy) -> {});
    });
  });
});

每当一个新的WebSocket请求传入时,这将为特定的顶点增加一个原子计数器。

现在您可以使用vertx.deploymentIDs()

获取所有部署ID。

剩下的就是迭代这些,收集计数器,然后得到最小的计数器。