当我需要在Vertx中创建新的Verticals时,有没有人能给我最佳实践。我知道每个垂直可以远程部署并放入集群。但是,我仍然有一个问题如何设计我的应用程序。好吧,我的问题是:
例如,我可以将vertx作为参数传递到每个端点,并使用它来创建路由器:
getVertx().createHttpServer()
.requestHandler(router::accept)
.listen(Config.GetEVotePort(), startedEvent -> {..});
...
router.mountSubRouter("/api",HttpEndpoint.createHttpRoutes(
getVertx(), in.getType()));
或者我可以将每个新的端点服务创建为垂直而不是传递Vertx。我的问题主要是关于将vertx作为参数传递还是当我需要这样做时我应该实现新的Vertical?
答案 0 :(得分:1)
我的10美分:
然后您的问题的答案是您有多少台服务器?你要为每台服务器启动多少个JVM?您希望每个JVM使用什么内存?在内存限制内,每个JVM可以运行多少个Verticle?你的邮件大小有多大?什么是网络带宽限制?你的系统有多少邮件?并且,事件总线可以处理此流量吗?
同样,这取决于您拥有多少台服务器/ JVM以及您是否拥有集群事件总线。
所以1个verticle应该服务多个端点,例如使用路由器,是的,将来自HttpServer的给定请求与Route匹配,然后Route选择一个Handler,并且Handler在给定的Verticle中。
答案 1 :(得分:0)
拥有大量的Verticle是最好的。这样,您的应用程序就可以松散耦合,并且可以轻松实现负载均衡。例如,如果您的负载很高,您可能需要1-3个路由Verticle,但需要更多工作者Verticle。这样,您只需增加工人数量,而不会改变路由Verticle的数量。
我不建议将vertx作为参数传递。正如@rupweb已经建议的那样使用EventBus。将路由Verticle之间的消息传递给工作人员并返回。这是您正在寻找的最佳做法: http://vertx.io/docs/vertx-core/java/#event_bus