如何使用隔离的前端托管多服务解决方案

时间:2019-02-20 14:22:54

标签: rest docker docker-compose frontend microservices

对于一个项目,我正在构建一个Web应用程序,该应用程序利用了我开发的各种宁静组件。现在我有:

  1. 用于解析某些XSD数据(Java)的API
  2. 用于根据提供的内容连接到某些远程数据库的API
    参数(NodeJS)
  3. 用于执行某些数据分析的API(Rstudio /水管工)

所有组件都是RESTful的。现在,我正在使用java(Spring)组件(1)来托管我的网页和所有前端。我也希望该网页也单独托管,并有一种正确的方式在组件之间进行通信(现在,我只运行它们,然后根据它们所在的端口将请求发送到localhost:xxxx)。

最终,我希望有一个可执行文件,其结构类似于下面的结构。请注意,我不希望从解决方案的环境外部访问API。enter image description here

  • 是否可以使用Docker做到这一点?
  • 如何在没有任何后端的情况下分别运行前端,并使其可以从外部环境访问?
  • 一旦到达,我可以在代码中到达API的哪个地址 工作吗?

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。您可以容器化您的api,但要取决于您要如何运行它们。如果您正在考虑使用云服务,则所有云服务都提供了运行容器的不同选项。

是否可以使用Docker做到这一点?

您可以在容器中独立运行这些api,但通常必须使用某种容器编排服务(例如kubernetes)来运行容器。

在我可以使用该代码后,可以在哪个地址到达代码中的API?

您将包括Web前端在内的所有api打包在容器中,并部署到节点集群的kubernetes。只有您的前端会分配外部IP,而其他API只能通过前端访问,因为它们位于带有私有IP的防火墙后面。 kubernetes内部拥有自己的网络,可以通过服务名称简单地访问集群中的服务(您的api)。

另一种方法是在虚拟网络中部署所有api,只有前端(具有公共ip)才能访问这些服务。

如何在没有任何后端的情况下分别运行前端,并使其可以从环境外部访问?

您可以如上所述在kubernetes中将前端作为容器运行,也可以将静态前端(仅htm css)部署到某些静态托管中,例如aw s3或azure静态网站。