我需要构建一个Vert.x虚拟主机服务器,以将流量引导到其他Vert.x应用程序。这种应用间通信如何完成?

时间:2018-12-11 21:48:43

标签: microservices vert.x

Vert.x virtual host server for other vert.x apps

如上所述,我需要构建一个Vert.x Java应用程序,它将成为HTTP服务器/虚拟主机(TLS Http通信,Web套接字通信),它将特定于域的通信重定向/引导到其他Vert.x Java应用程序运行在同一台服务器上,每个服务器都在自己的JVM中。

我已经阅读了几天,但是对于如何处理任务的各个方面,我仍然不确定。

我了解或拥有的经验:

  • 创建HTTP服务器等
  • 使用Vert.x VirtualHost处理程序来“处理” 特定域

我不知道的地方:

  • 如何将域的流量“重定向”到另一个Vert.x应用(此 其他Vert.x应用也可以在同一服务器上运行 JVM)。

    -当然,此“其他” Vert.x应用程序需要响应HTTP 请求等。我采用什么Vert.x机制来完成此任务 任务的哪个方面?

解决方案是否包含以下任何概念?我不熟悉这些概念以及它们如何构成解决方案的一部分。

  • 使用-cluster选项运行每个Vert.x应用程序吗?

  • Vert.x流?

  • Vert.x泵吗?

1 个答案:

答案 0 :(得分:0)

有多种方法可以让您的微服务相互通信,事实是您的所有应用程序都在同一服务器上运行并没有太大变化,但这使编号2.)易于配置

1。)基于Rest的客户端-服务器通信

  • 主机和应用均具有网络服务器
  • 在主机上处理传入请求时,只需使用HttpClient调用另一个应用程序

enter image description here

通常,所有服务都通过service discovery找到彼此的地址。 例如:每个服务在中央注册表中注册其地址,然后其他服务使用该中央注册表来查找地址。

注意:这可能对您来说是一个过大的杀伤力,您只需配置其他服务的地址即可。

2。)您以集群模式启动vertx微服务

  • 然后在服务之间共享事件总线
  • 对于所有传入请求,您都在事件总线上发送广播
  • 负责任的应用回复邮件

enter image description here

要进一步阅读,您可以结帐https://vertx.io/docs/vertx-hazelcast/java/#configcluster。您可以使用-cluster选项启动项目,并在xml配置中定义集群。我认为默认情况下,它是通过本地广播找到服务的。

3。)您使用RabbitMq等消息代理。

  • 您所有的应用都连接到中央消息代理
  • 当新请求进入主机时,它将向消息代理发送一条消息
  • 负责任的应用程序随后侦听相关消息并回复
  • 主机收到消息代理的回复

enter image description here

对于某些消息代理,例如kafka,骆驼,zeromq,已经有许多现有的vertx客户端:

https://github.com/vert-x3/vertx-awesome#integration