【发布时间】:2017-03-19 18:48:04
【问题描述】:
我正在做一个副项目,我决定将我的 Skelton 项目重新设计为微服务,到目前为止,我还没有找到任何遵循这种模式的开源项目。经过大量阅读和搜索,我得出了这个设计的结论,但我仍然有一些问题和想法。
以下是我的问题和想法:
- 如果我有来自同一个微服务的 2 个节点,如何使 API 网关足够智能以加载平衡请求?
- 如果其中一个微服务发生故障,发现应该如何知道?
- 有没有类似的实现?我的设计对吗?
- 我应该使用 Eureka 还是类似的东西?
【问题讨论】:
-
API 网关通常内置负载均衡功能。有些甚至实现了粘性会话等功能。三个最流行的 API 网关都是负载均衡器(它们最初不是作为 API 网关设计的):haproxy、Nginx 和 Apache。使用 Web 服务器和负载均衡器作为 API 网关的问题是,如果要添加或删除节点,则需要重新启动网关。我专门编写了一个 API 网关,以允许在不重新启动的情况下动态添加和删除节点:github.com/slebetman/typhos。它还没有准备好投入生产,但你可以分叉它
-
此外,由于 API 网关通常是负载均衡器,它们通常具有检测节点返回 400 和 500 错误的功能。所以通常发现服务只是将 url 返回到服务,并且该 url 几乎总是指向 API 网关。一些架构不使用 API 网关 (Amazon),因此它们依赖于发现服务来检测宕机节点
-
@slebetman 是的,我知道,但我正在从头开始构建它,因为我没有找到任何适用于 nodejs 的好的网关,你有什么推荐的吗?
-
@SideeqYoussef 你有没有使用任何特定的库来实现这个架构?
标签: node.js microservices