Microservices Vertex multi-verticle在单微服务中的使用情况是什么?

Microservices Vertex multi-verticle在单微服务中的使用情况是什么?,microservices,vert.x,vertx-verticle,vertx-httpclient,vertx-eventbus,Microservices,Vert.x,Vertx Verticle,Vertx Httpclient,Vertx Eventbus,在vertx中构建的大多数web应用程序中,我看到人们在一个微服务中创建了两个垂直条 一种是rest verticle,用于处理HTTP请求 另一种方法是通过dao垂直体与数据库通信 无论何时有任何api请求,HTTP verticle都会通过事件总线与dao verticle通信 但鉴于顶点是单线程的,在这里创建两个不同的垂直线有什么好处呢。在事件总线上会有不必要的通信开销,而我只能创建一个处理rest和I/o的verticle 我能理解在阻塞呼叫的情况下有一个单独的工人垂直通道的情况。但

在vertx中构建的大多数web应用程序中,我看到人们在一个微服务中创建了两个垂直条

  • 一种是rest verticle,用于处理HTTP请求
  • 另一种方法是通过dao垂直体与数据库通信
无论何时有任何api请求,HTTP verticle都会通过事件总线与dao verticle通信

但鉴于顶点是单线程的,在这里创建两个不同的垂直线有什么好处呢。在事件总线上会有不必要的通信开销,而我只能创建一个处理rest和I/o的verticle


我能理解在阻塞呼叫的情况下有一个单独的工人垂直通道的情况。但是在非阻塞的情况下,i/o调用它的用例是什么?

Vert.x不是单线程的。它使用了一个:

在标准的reactor实现中,有一个单事件循环 在循环中运行的线程,将所有事件传递给所有 当他们到达时

单线程的问题是它只能在单核上运行 在任何时候,如果你想要你的单线程反应器 应用程序(例如,您的Node.js应用程序)以在 多核服务器您必须启动和管理许多不同的 过程

Vert.x在这里的工作方式不同。不是单个事件循环,而是每个 Vertx实例维护几个事件循环。默认情况下,我们选择 数字基于机器上可用的磁芯数,但 可以重写

这意味着单个Vertx进程可以跨服务器扩展,这与 Node.js


因此,通过运行多个垂直站点,您可以让您的服务分布在多个线程/CPU核心上。

错了!在大多数示例应用程序中,不是您看到的dao垂直和其他非真实应用程序