在 Angular 中处理服务发现

Handling service discovery in Angular

我目前正在研究微服务,我也刚刚开始使用 Angular。现在,我想知道 whether/how 是否可以从 Angular 中访问服务发现(例如 Consul)?通过访问我的意思是:

为了更准确地表达这一点:有一个用例,其中我使用 Spring Boot 开发了两个简单的服务,我应用了 this 博客中的步骤来访问来自另一个使用领事。因此,我的 REST 调用最终看起来像这样:

restTemplate.getForObject(http://city-service/rest/city/capital', ...);

我喜欢这个的一点是我可以从主机和端口信息中抽象出来。现在,我想在 Angular 中做同样的事情。因此,而不是像这样:

this.http.get('http://localhost:8080/rest/city/capital')

我想要类似这样的东西:

this.http.get('http://city-service/rest/city/capital')

如何访问Angular中的服务发现,比如Consul(不一定是Consul,其他的也可以)?正如我所说,我才刚刚开始了解 Angular,所以如果这是一个愚蠢的问题,请原谅。

我知道一些服务发现(包括 Consul)提供 REST API 来检索有关已注册服务的信息。但是,在我发送我实际想要的 REST 请求之前,我首先需要明确地向它发送一个 REST 请求。如果有其他选择,我更愿意。感谢任何帮助。

关于这个 before 我发布了一个更笼统的问题,但我现在在这里具体化了这个问题。

Consul 和其他服务发现系统并非设计为可从 public 网络访问,您的问题与 Angular 无关。

您可以使用 Consul 感知负载均衡器,例如 https://github.com/fabiolb/fabio or https://traefik.io/ 将流量路由到根据 HOST and/or PATH 在 Consul 中注册的服务。