Spring boot SpringBoot:我应该如何部署我的微服务

Spring boot SpringBoot:我应该如何部署我的微服务,spring-boot,docker,nginx,microservices,infrastructure,Spring Boot,Docker,Nginx,Microservices,Infrastructure,因此,首先我构建了一个简单的monolith应用程序,并使用docker和nginx(仅用于反向代理)进行部署。现在我计划将每个服务分开,因为有些服务需要大量的时间和IO来完成它们的工作。我已经对此进行了研究,我知道一些我需要的组件,如spring cloud eureka、服务发现等。我有点困惑,因为我只使用docker和nginx,如果我添加这些组件,我还需要nginx吗?您能给我一个我应该知道或应用于我的项目的结构示例吗。在重构的第一次迭代中,您可以不使用服务发现: 为每个微服务创建一个

因此,首先我构建了一个简单的monolith应用程序,并使用docker和nginx(仅用于反向代理)进行部署。现在我计划将每个服务分开,因为有些服务需要大量的时间和IO来完成它们的工作。我已经对此进行了研究,我知道一些我需要的组件,如spring cloud eureka、服务发现等。我有点困惑,因为我只使用docker和nginx,如果我添加这些组件,我还需要nginx吗?您能给我一个我应该知道或应用于我的项目的结构示例吗。

在重构的第一次迭代中,您可以不使用服务发现:

  • 为每个微服务创建一个SpringBoot应用程序
  • 服务直接相互通信(无需使用Nginx),也无需服务发现,这意味着您需要硬编码(或存储在属性文件中)端点的URL
  • 在为最终用户服务的应用程序/服务(即Web应用程序)前面部署NGINX
一旦您验证了新的体系结构(将责任分散到微服务中),就可以引入服务发现(Eureka),这样端点就不再是硬编码的


Nginx非常轻巧,因此如果您愿意,它也可以用于处理内部流量,但此时,您的架构应该开始考虑流量和组件数量,以决定哪个更有效。

我认为Nginx代理可以用于外部流量,例如客户端的浏览器->您的应用程序。Nginx可以处理SSL证书。但是,如果两个服务在内部通信,那么连接应该是直接的(没有Nginx)。我应该在不同的服务器上部署每个服务,还是可以使用docker容器将其部署在同一个服务器上。您可以使用一个服务器运行多个docker容器(每个容器都是一个服务),我假设您仍在开发/测试该体系结构。在PROD系统上,是的,您希望在不同的节点上部署服务,等等。。。但是,当你到达那里,你需要考虑是否使用另一层(Kubernetes,群)