Angular 微服务之间的REST通信-在REST调用中从主机或端口提取

Angular 微服务之间的REST通信-在REST调用中从主机或端口提取,angular,rest,spring-boot,microservices,Angular,Rest,Spring Boot,Microservices,我刚开始钻研微服务的话题,所以如果这是一个愚蠢的问题,请原谅 假设我有两个微服务,一个提供RESTAPI,另一个是一个角度微服务,用于一个好的前端。角度微服务应与其他微服务进行通信。 我看到了很多实现这一点的例子,这基本上没什么大不了的。我很清楚这一点。然而,在所有这些示例中,我在angular microservice中看到了类似的内容: this.http.get('http://....:8080....'); 一开始我只是很高兴它能运行。然而,现在我想知道这样的实现是否没有将服务紧密地

我刚开始钻研微服务的话题,所以如果这是一个愚蠢的问题,请原谅

假设我有两个微服务,一个提供RESTAPI,另一个是一个角度微服务,用于一个好的前端。角度微服务应与其他微服务进行通信。 我看到了很多实现这一点的例子,这基本上没什么大不了的。我很清楚这一点。然而,在所有这些示例中,我在angular microservice中看到了类似的内容:

this.http.get('http://....:8080....');
一开始我只是很高兴它能运行。然而,现在我想知道这样的实现是否没有将服务紧密地耦合在一起。在http URL中,我们看到主机和端口也是固定的。这在某些情况下可能会很好地工作,但是,如果我们的微服务(例如)动态选择端口,我们已经有问题了,对吗?那么我们就不能用这种方式在其他微服务中定义端口。主机信息也是如此。如果微服务可能在不同的主机上运行,我们不能总是静态地定义主机

如果我错了,请纠正我。我们是否有任何方法可以从这些细节(即主机或端口)中抽象出来,但是否有其他方法可以动态地发现这一点?或者,对于微服务之间的通信,是否有其他不存在此问题的好方法


我看到了使用服务注册中心的服务示例。通过这种方式,我们可以从中抽象出一点-不?这是唯一的可能性吗?我不确定这是否与此相关,但到目前为止,我正在使用Spring Boot来实现我的微服务。

我认为这里有一个困惑,微服务应该围绕业务能力构建,这意味着您的微服务将包括前端和后端。前端不应被视为微服务


前端可以使用子域名访问后端,比如

除了Hossam发布的内容之外,我现在还玩了。为此,我研究了以下内容。使用concur,我可以执行如下操作:
restemplate.getForObject('http://city-service/rest/city/capital', ...);而不是
restemplate.getForObject('http://localhost:8080/rest/city/capital', ...);。这也适用于其他服务注册中心。我仍然不知道如何在例如Angular(角度)中执行此操作,但也许我将为此创建一个新问题。

首先感谢您的回答。你能简单解释一下为什么前端不应该被视为微服务吗?如果我有一个后端,我想为这个后端提供多个前端,该怎么办?然后我是否需要为每个前端复制后端?此外,我想即使我们这里没有多个服务,我们也会遇到同样的问题——我们现在不知道在哪个主机上哪个端口执行我们的服务。如果你能详细说明一下,我会很高兴的。谢谢。微服务应该代表一种业务能力,服务应该是相互协作的小型自治服务。自治意味着每个服务都可以响应其客户机,而不管其依赖项的可用性如何。在电子商务示例中,服务可以是“目录”、“订单”或“发货”,“目录”包括查看消费者的所有产品,它可以查看产品,而不考虑“订单”服务可用性。对于同一后端的多个前端,您可以使用或最后定义服务边界,您可能需要服务发现机制,您可以考虑使用对两个其他页面的链接的感谢。我对你的答案投了更高的票,但我想它没有显示出来,因为我的声誉太低了。我仍然希望有人能参考一些处理原始问题的东西。即使前端和后端都在一个微服务中,我想基本的问题仍然会发生。如果我再问你一件事,我希望没问题。如果我有一个微服务(包括Angular前端和Java/Spring Boot REST后端),我会构建两个单独的docker文件吗?一个用于前端,一个用于后端,尽管它是一个微服务?我还可以就此提出一个新问题。