java - 在 Vertx 中创建新垂直领域的最佳实践

标签 java vert.x

当我需要在 Vertx 中创建新的垂直时,有人可以给我最佳实践吗?我知道每个垂直领域都可以远程部署并放入集群中。但是,我仍然有一个问题如何设计我的应用程序。嗯,我的问题是:

  1. 拥有很多垂直领域可以吗?
  2. 例如,我创建了一个 HttpServer,其中有很多服务端点。我想制作不同的子路线并根据启用的功能(服务)进行设置。其中一些将启动长期进程并使用事件总线在系统中生成新事件。这里最好的方法是什么?

例如,我可以将 vertx 作为参数传递到每个端点,并使用它来创建路由器:

getVertx().createHttpServer() .requestHandler(路由器::接受) .listen(Config.GetEVotePort(),startedEvent -> {..}); ... router.mountSubRouter("/api",HttpEndpoint.createHttpRoutes( getVertx(), in.getType()));

或者我可以创建每个新的端点作为垂直服务,而不是传递 Vertx。我的问题主要是是否可以将 vertx 作为参数传递,或者当我需要这样做时我应该实现新的 Vertical?

最佳答案

我的10美分:

  1. 是的,重点是可以有数千个垂直体,因为据我了解,这个名字来自“粒子”这个词,整个想法是一种赌在 JVM 上的 UNIX 哲学。所以写每个粒子/垂直做一件事并做好它。使用文本流在粒子之间进行通信,因为这是一个通用接口(interface)。

那么你的问题的答案是你有多少台服务器?每台服务器要启动多少个 JVM?您期望每个 JVM 使用多少内存?在内存限制内,每个 JVM 可以运行多少个 verticle?您的邮件大小有多大?网络带宽限制是多少?有多少消息正在通过您的系统?而且,事件总线可以处理这种流量吗?

  • 然后就是Verticle如何协同工作,这基本上就是事件总线。我认为你想要的是你的HttpServer将消息路由到事件总线,其中不同的verticle被配置为监听不同的“主题”(不同的文本流)。如果 1 个 verticle 启动一个长期进程,它是由总线上的事件触发的,那么它将输出放回到下一个 verticle/响应 verticle 的主题上。
  • 同样,这取决于您拥有多少服务器/JVM 以及您是否拥有集群事件总线。

    所以 1 个 verticle 应该服务多个端点,例如使用 Router,是的,将来自 HttpServer 的给定请求匹配到 Route,然后路由选择一个 Handler,并且该 Handler 位于给定的 Verticle 中。

    关于java - 在 Vertx 中创建新垂直领域的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376881/

    相关文章:

    java - 当消费者已满时,Jzmq生产者不会阻塞

    java - E/AndroidRuntime : FATAL EXCEPTION: main at dalvik. system.NativeStart.main(Native Method) 崩溃

    java - Android - 在整个类中使用和更改数组

    java - Vertx默认配置文件

    grails - 知道为什么将Grails中嵌入的vertx请求同步排队

    java - 在 gin 中绑定(bind)生成的类

    java - ServletRequest 获取实际页面的名称

    java - *垂直x* : How to handle in synchronous code

    java - 使用 Vert.x vertx-pg-client 从池中获取 PgConnection

    java - Vert.x RESTful 垂直