我正在使用Laravel's Lumen构建一个API,我已经意识到我的API的主要任务是为其他API提供数据。
我真的不知道哪种方法是获得最佳性能的最佳方法。
我想出了两种解决方案:
每次用户发出请求时,我都会调用不同的API来处理请求。
我认为主要的问题是响应请求所需的时间,因为这取决于所有API的调用。
每X秒钟调用每个API(使用cron)并保持我的数据库更新,然后处理来自数据库而不是其他API的每个请求。
我认为这是一种超级糟糕的方法,因为即使没有人需要数据,我每秒也会浪费大量资源。
我看到的问题是另一个API的数据在不断变化,因此我必须提供更新的数据。
所以我真的希望有其他更好的解决方案来解决此类问题。我不知道大公司会采取什么措施。
谢谢!
答案 0 :(得分:1)
您描述的是微服务架构。 在我的公司(大型电子商务网站)中,我们正在开发5个微服务和2个网关。
当客户要求数据时,数据被定向到我们的网关(与后部或前部相关)。 然后,应用我们的业务逻辑,我们将differentials微服务称为服务新数据(或在可能的情况下缓存数据)。
当然,您必须具有快速有效的微服务。 为此,您必须使用ORM缓存(例如,我们的微服务使用Symfony,因此我们使Doctrine与Redis一起使用)。 另外,您的数据库查询必须进行优化。
您的第二种方法可以工作,但是维护起来会很痛苦,并且对于您的数据库将非常繁琐,因为将对所有数据进行爬网。 这不符合“微服务规范”,因为结果是前面有一个大数据库,并由许多较小的数据库填充
最后,大公司通过RESTFul API或GRAPHQL技术使用我首先描述的微服务