2个微服务之间的通信

时间:2018-08-11 11:46:22

标签: spring-mvc microservices

我有两个使用Spring Boot开发的小型微服务。对于这两个服务之间的通信,我没有使用任何api网关或消息传递层。

我打算使用URL调用其他服务(http://。我将在此处使用rest模板。

如果不在此处使用任何api网关进行两个服务之间的通信,可能会有什么弊端。

2 个答案:

答案 0 :(得分:0)

我认为您不想使用API​​网关在服务之间进行通信。 API网关用于提供所有外部API调用都经过的服务。

如果您不想使用消息传递,可以直接使用RestTemplate进行操作,但是请记住,如果您直接使用IP和端口引用服务,则运行它可能会很痛苦在未来的不同环境中。

我想您正在使用Spring Cloud Netflix堆栈,如果是这种情况,我会说使用Eureka存储服务元数据并直接使用Feign。它与Eureka集成在一起,您基本上可以将逻辑名解析为实际的IP和端口号,如下所示:

http://some-service/endpoint -> http://12.34.56.78:9101/endpoint

在这种情况下,当您要将应用程序部署到具有不同网络设置和端口配置的不同类型的环境中时,可以节省长期的时间。

答案 1 :(得分:0)

API网关不用于服务之间的通信,如上一个答案中所述,它将成为请求访问您的微服务之前的大门。但是,您似乎希望使用同步微服务方法,该方法具有以下缺点:

  1. 微服务之间的耦合,如果微服务X依靠微服务Y起作用,如果Y下降,那么X也下降。
  2. 高延迟,如果服务1调用服务2和服务3,则每个请求响应时间将是这3个服务的总和。
  3. 如果您将一个服务与多个服务进行协调以处理请求,那么这就是单点故障。

我能想到的唯一好处是,与响应事件驱动的用例相比,您的业务用例将得到更好的控制和更清晰。

相关问题