繁体   English   中英

一个 Spring Boot 微服务如何知道它如何将 POST 发送到另一个服务?

[英]How does the one Spring Boot microservice know how it can send a POST to another service?

在本教程 ( Spring Cloud Microservices ) 中,此存储库中的代码用于说明示例:

https://github.com/saturnism/spring-cloud-gcp-guestbook/tree/master/1-bootstrap

在 repo 中,找到了两个使用 Spring Boot 的 Maven 项目(guestbook-frontend 和 guestbook-service)。 两者都作为服务运行。 通过前端服务,消息可以发布到后端服务。 我的问题是,它在哪里配置,以便前端知道 POST 去哪里? 两者的联系在哪里?

检查 @FeignClient 注释

https://github.com/saturnism/spring-cloud-gcp-guestbook/blob/master/1-bootstrap/guestbook-frontend/src/main/java/com/example/frontend/GuestbookMessagesClient.java

为了详细解释这个问题,我将重点介绍微服务的核心模式

  1. 核心开发模式
  2. 路由模式
  3. 客户端弹性模式
  4. 安全模式
  5. 记录和跟踪模式
  6. 构建和部署模式

上面提到的模式用于处理我们转向微服务时出现的问题。 您的问题突出显示的问题之一是“我们永远无法确定哪台机器将运行我们的微服务”解决此问题的一种天真的方法是我们维护某种包含机器及其服务所有细节的地图。 为了在服务之间建立通信,我们可以使用该映射。 但这种方法很幼稚,而且有其自身的问题。

所以为了解决这个问题,我们将不得不使用路由模式。 在路由模式中有一个服务发现的概念 不同平台提供了不同的服务发现方法。 例如:Netflix 提供了 Eureka 和 Feign Client,后来加入 Spring Cloud,HashiCorp 通过 Consul 提供服务发现,AWS ECS 也有服务发现机制。

话虽如此,我可以得出结论,您可以通过不同的方式从 spring-boot 的一个微服务调用另一个服务。 但是由于您更关心 spring cloud,因此在 spring Cloud 中,您将需要Eureka Server 和 Feign Client 将它们添加到您的项目中非常简单。

您可以按照本教程使用 Eureka 和 Feign Client https://dzone.com/articles/microservices-communication-feign-as-rest-client

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM