从PHP后端的多个API提供服务的最佳解决方案是什么?

时间:2019-04-19 14:01:17

标签: php laravel logic backend lumen

我正在使用Laravel's Lumen构建一个API,我已经意识到我的API的主要任务是为其他API提供数据。

我真的不知道哪种方法是获得最佳性能的最佳方法。

我想出了两种解决方案:

  • 每次用户发出请求时,我都会调用不同的API来处理请求。

    我认为主要的问题是响应请求所需的时间,因为这取决于所有API的调用。

  • 每X秒钟调用每个API(使用cron)并保持我的数据库更新,然后处理来自数据库而不是其他API的每个请求。

    我认为这是一种超级糟糕的方法,因为即使没有人需要数据,我每秒也会浪费大量资源。

我看到的问题是另一个API的数据在不断变化,因此我必须提供更新的数据。

所以我真的希望有其他更好的解决方案来解决此类问题。我不知道大公司会采取什么措施。

谢谢!

1 个答案:

答案 0 :(得分:1)

您描述的是微服务架构。 在我的公司(大型电子商务网站)中,我们正在开发5个微服务和2个网关。

当客户要求数据时,数据被定向到我们的网关(与后部或前部相关)。 然后,应用我们的业务逻辑,我们将differentials微服务称为服务新数据(或在可能的情况下缓存数据)。

当然,您必须具有快速有效的微服务。 为此,您必须使用ORM缓存(例如,我们的微服务使用Symfony,因此我们使Doctrine与Redis一起使用)。 另外,您的数据库查询必须进行优化。

您的第二种方法可以工作,但是维护起来会很痛苦,并且对于您的数据库将非常繁琐,因为将对所有数据进行爬网。 这不符合“微服务规范”,因为结果是前面有一个大数据库,并由许多较小的数据库填充

最后,大公司通过RESTFul API或GRAPHQL技术使用我首先描述的微服务

相关问题