gpt4 book ai didi

node.js - 领事:SD架构。从前端访问微服务的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:57 33 4
gpt4 key购买 nike

我有一些由consul管理的后端微服务,为了从一个服务获取另一个服务的一些数据,我使用consul的服务发现功能 - 比如获取所有健康的服务器,然后从检索到的条目中获取服务器地址和端口等。但是我应该如何从前端执行它?只需使用其实际IP调用所需的微服务器或使用docker容器的命名空间调用它?从知道如何做到这一点的人那里得到任何回应都会非常有帮助,甚至更好,以前做过的人,因为我坚持了一点。

最佳答案

“前端”是指在网络浏览器上运行的 Javascript 还是在同一数据中心内运行的软件?我假设我们在这里讨论的不是网络浏览器场景。

我认为具有智能缓存和循环负载平衡的客户端发现可以实现最佳扩展,因为不存在单点故障,并且它对集群内的任何中断 react 非常快。但它把更多的逻辑推到了客户端,使得日志记录比 Nginx 的琐碎访问日志更加困难。

第二个选项非常标准且易于理解,Nginx 和 Haproxy 就是针对此工作负载而设计的。请注意,您应该有一些可用的文件,以免出现单点故障,并且升级它们的二进制文件(特别是如果您在 Docker 上运行它们)将导致短暂的停机。无论如何,客户端需要以某种方式发现这些负载均衡器,DNS 是最常见的选项。当情况非常静态并且所有内容都在默认端口上运行时,DNS 可以很好地工作,因此您无需对 TTL 和 SRV 记录进行太多修改。

第三个选项使客户端逻辑更简单,因为 API 网关可以充当您内部可用的服务的“ View ”。但您仍然需要服务发现让客户端找到这些服务,这样它们就不能真正解决原始问题。

欢迎提供任何反馈,这是一个非常广泛的主题,您的情况可能会有所不同。

更新:此外,如果您使用 HTTP 协议(protocol),您可能希望通过 HTTPS 来保护它。借助负载均衡器,您有机会终止 HTTPS,并在 VPC 或防火墙后面的任何地方获得更简单的非加密流量。

关于node.js - 领事:SD架构。从前端访问微服务的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42073576/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com