我有一台服务器有十多个不同的独立应用程序,都是用PHP编写的。这些应用程序通过API相互通信。顶部有一个应用程序让它们与服务器外部的客户端进行通信,全局看起来像这样:
必须处理命中的应用程序以JSON响应App 1,App 1根据JSON中的信息为命中生成适当的答案,例如网页,图像或纯JSON。
如果应用程序需要与另一个应用程序通信,他将使用cURL发送HTTP请求。基本上他成为自己服务器上的客户。我知道这种方法比使用直接函数(如Include或Require)消耗更多资源。但是当我使用这些功能时,我失去了许多独立原则。
我喜欢坚持独立原则的原因是我喜欢与外部初级程序员合作。我不希望他们被迫使用像OOP,类等的东西。我想对他们说:“这是输入,我希望输出是这样的,创建一个PHP应用程序来实现它”。< / p>
我的问题是:
答案 0 :(得分:2)
您的问题的答案:
这取决于很多事情,包括但不限于:
为了让您了解这一切是如何实现的,请考虑所有应用程序都在同一个盒子上的虚拟主机的简单情况。您正在使用curl
从app2点击myserver.com/app1/
。您可能不知道的是:
myserver.com
而不是早期的情况,请考虑以下情况:您正在使用curl
从myserver2.com
点击myserver.com
。这两者一起在VPN上,但两者都有一个公共接口,其中myserver.com
和myserver2.com
分别绑定。结果?当你可以通过VPN进行隧道传输时,你将通过广域网。
在所有情况下,如果呼叫转到WAN,您将在每次通话约10毫秒到约50毫秒之间产生任何延迟。
像include
这样的“直接函数”解决了一个完全不同的问题,但是,它们减少了整个HTTP请求开销。应始终首选直接实例化,并且您的第二个最佳选择应该是使用redis
之类的内容缓存HTTP调用。
问题二有一个简单的答案:是的,没有构建一个。如果通过“内部API”,您构建的只是负载均衡器,请考虑使用负载均衡器。如果您正在构建内容中介,请考虑将其抽象出去并让您的开发人员做他们擅长的事情。