我有两个使用Spring Boot开发的小型微服务。对于这两个服务之间的通信,我没有使用任何api网关或消息传递层。
我打算使用URL调用其他服务(http://。我将在此处使用rest模板。
如果不在此处使用任何api网关进行两个服务之间的通信,可能会有什么弊端。
答案 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网关不用于服务之间的通信,如上一个答案中所述,它将成为请求访问您的微服务之前的大门。但是,您似乎希望使用同步微服务方法,该方法具有以下缺点:
我能想到的唯一好处是,与响应事件驱动的用例相比,您的业务用例将得到更好的控制和更清晰。