繁体   English   中英

REST API托管在多个服务器上

[英]REST API hosted on multiple servers

我有一个需要帮助的问题(我以前从未遇到过这个问题,以前也找不到任何相关问题)。

php中的应用程序托管在名为01.example.com, 02.example.com类的不同服务器上

现在,有许多使用此应用程序的客户端(用PHP编写的软件即服务),每个客户端都在一个特定的服务器上托管自己的数据库-客户端A数据库位于01.example.com ,客户端B数据库位于02.example.com (哪个客户端属于哪个服务器存储在共享数据库中)

我想创建一个类似URL的REST API http://HOST/api/resourceshttp://01.example.com/api/resourceshttp://02.example.com/api/resources

如何使api URL / URI独立于( http://example.com/api/resources )这样的主机?

我可以想到几种解决方案-

  1. 收到第一个请求后,从共享数据库中获取客户端的服务器位置,然后发送重定向。
  2. 或在使用REST时(例如http://01.example.com/api/resources要求客户端提供用户服务器特定的URL / URI。 (但是,当客户端迁移到其他服务器时,他们的代码将中断,直到他们将URL更改为新服务器为止)

这听起来可能令人困惑(对我也是如此),但我发现很难为这种情况设计解决方案。

您可以在URL中添加应用程序ID(或客户端ID或您要选择数据库的标识符),例如http://example.com/1/api/resourceshttp://example.com/2/ api / resources并通过NGINX,haproxy,F5或任何其他代理或路由器重定向所有HTTP请求。 问题在于,每次迁移应用程序时,您都必须重新配置代理。

通常,如果您可以将所有这些数据库合并到一个数据库中,则可以节省很多麻烦。 如果出于性能原因分离数据库,请考虑对所有只读请求使用只读从属。

更多REST API服务器指南: http : //example.com/1/api/resources

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM