【发布时间】:2016-10-12 00:25:49
【问题描述】:
我的系统架构是一个 Web 应用程序服务器,它运行带有 PHP-Slim 3 的 LAMP 堆栈,作为 API 和 Web 应用程序前端。 API 允许获取请求以检索数据,还允许传感器设备每秒向其发送 POST。在同一台服务器上,我们运行用 Python 编写的处理算法,该算法每 5 分钟执行一次,以处理 600 秒的数据。
MongoDB 位于具有自己资源的单独服务器上。一开始只有很少的传感器,性能就像你想象的那样好。但是随着时间的推移,随着索引的增长与数据量成正比,以及发布数据的传感器数量的增加,来自 Web 应用程序前端的 get 请求已经减慢到即使显示图表也会导致很大的延迟,从而阻塞传感器数据的发布。这是一个大问题,需要我们解决。
我一直认为 Web 应用程序可能需要拆分为 3 个组件 - 一个用于 POST API 的 Web 服务器,一个用于 Web 应用程序,另一个用于处理 API 获取请求。这样一来,我们就有了 3 个到 MongoDB 服务器的单独连接,并且希望我们不会对发布数据的 get 请求产生不利的阻塞影响。
我的问题是,我将如何开始使用 PHP Slim 执行此操作?
【问题讨论】:
-
嗯,这听起来不像是 Slim 的问题,或者可以单独使用 Slim 解决。您是否尝试过缓存?例如,您可以使用 Redis 缓存非规范化/准备显示数据。您能否解释一下“用 Python 编写的处理算法,每 5 分钟执行一次以处理 600 秒的数据”?
-
我会研究缓存,因为我们目前绝对不会这样做。处理算法需要一批最后 600 秒的传感器数据,并执行许多不同的转换来规范化数据(因此在 Python 中完成)。它每 5 分钟运行一次 crontab,并为过去 10 分钟内所有传感器设备处理数据。使用更多传感器进行扩展并持续记录数据将使我进入大数据领域。
标签: php mongodb api slim restful-architecture