如何通过一个入口点在多个 worker 上扩展 RESTful API?

How to scale RESTful API on several workers with one entry point?

我有 C# 微服务 (.netcore 2.x),板载 RESTful API,在 <someaddress>:<someport> 上发布(例如 server:9999)。它运行良好,但由于大量查询而有点慢,需要让它运行得更快。

第一个想法是在不同的服务器(例如node1:9999node2:9999)上创建多个微服务实例(即worker),但不知道如何保存初始入口点( server:9999)?

我是否需要像某些负载平衡器这样的第三方软件,或者有一种简单的方法可以让它工作吗?

Loadbalancer 是一个不错的选择。阅读更多 here

您肯定需要负载平衡器之类的东西。几个选项:

  • 如果您的 DNS 服务器支持,您可以使用 DNS 循环:只需为同一主机名创建多个 DNS 条目。这是一种极其基本的负载平衡形式,只有在您有足够多的不同客户端(因为 DNS 缓存)时才会起作用。如果其中一个节点关闭(一半的调用将失败),这将不会执行任何操作。
  • 您可以使用软件负载平衡器,例如 nginx 或 haproxy。这些可以安装在其中一个节点或第三个节点上。这些负载均衡器中的大多数都能够检测到已关闭的节点,但是当负载均衡器所在的节点已关闭时,您将很容易受到攻击。
  • 硬件负载平衡器:非常昂贵,但稳定且快速。

如果您只有一个服务和两个节点并且容错不是您主要关心的问题,那么第二个选项可能是最好的。