我正在构建一个 Web 服务,该服务需要查阅 ~80mb 文件并使用用户提交的数据执行查找(以及其中两列的一些简单数学运算)并返回结果。该文件如下所示:
1 236 comment
236 13255 comment
....
传入的请求包含一个数字,我需要找到包含该数字的范围(第 1 列,第 2 列)的行,并返回注释。
我的第一个想法是尝试加载文件并在每个请求时读取它。这会显着减慢连接速度并导致 2-3 秒的页面加载。
我的第二个想法是为每个工作人员(使用 Flask 和 Gunicorn)将文件加载到内存中一次。这个 DDOS 攻击了我的云实例并消耗了太多内存。我确信有一种不需要购买更多资源的内存效率更高的方式。
我正在考虑可能编写一个小型本地 Web 服务来响应环回接口上的查询。这应该不会太慢(不会离开盒子的 Web API 请求),但会增加一些复杂性。
有什么简单的我遗漏或忽略了吗?有没有我不熟悉的设计模式会有所帮助?