这里有一个我最近知道的有趣案例。假设一家小型软件商店创建了向 Web 服务发出请求的移动和 Web 应用程序。该软件出售给单个用户以及第三方公司。最初,所有用户都向这个单一端点发出请求,但后来一些客户公司要求在自己的服务器中托管自己的服务器和数据库实例。
一开始这些公司是例外,因此应用程序的自定义副本使用他们的自定义 URL,而应用程序的常规版本则使用原始 URL。但随着此类公司的数量增加以及客户端应用程序的发布越来越频繁,这种方式很快就变得难以维护。
因此,现在有第一个 ws(由开发人员托管),其中包含每个用户需要连接的实际服务 URL 的用户数据库,并且有一个每个人都使用的客户端应用程序的单一版本,该版本使用第一个 WS 的固定 URL 进行编译。当用户登录时,应用程序会发出 http 请求以检索用户的最终 WS URL。第二个 URL 将有所不同,具体取决于用户是需要使用内部托管的 WS 还是属于自托管客户端组织。从那时起,应用程序使用该 URL 进行后续请求。这对于管理公司来说很好,因为您可以快速切断对不付费公司的服务,但另一方面,它会给第一台服务器产生过多的流量。
2016 年你会如何解决这个问题?我不是系统管理员或网络专家,但在我看来,这是一个手工解决路由问题的方法,第一台服务器可以用其他东西代替。确定 WS URL 所需的只是用户的组织名称。最终的服务器端软件是相同的,数据库也类似。也许可以用负载平衡器解决这个问题?我知道 Amazon EC2 和 Azure 支持负载平衡,但这里我们讨论的是重定向到专用服务器,每个服务器都不同,并由第三方公司托管。也许可以用 DNS 来做点什么?
更新
看起来反向代理可以完成这项工作(nginx?)。您将如何根据组织名称路由到每个后端?