繁体   English   中英

在服务器端处理大型文档

[英]Processing large documents on server side

  • 一些大文档(20-50 MB)存储在服务器端。
  • 可以使用第三方程序加载和查询文档(大约需要3秒钟)。
  • 第三方程序(在给定线程中)只能加载一个文档。
  • 客户可以请求查看已加载文档之一的查询结果。

避免在每个客户端HTTP请求上加载文档的最佳方法是什么? 将所有这些已加载文档保留在内存中是否合乎逻辑? 如果是,是否需要一个线程池,每个线程都在其中存放一个文档? 如果没有,还有哪些其他选择?

(使用Java-Tomcat-Ubuntu)

我会在您的tomcat前面放置另一个服务器来进行一些缓存。 如果您自己执行此操作,那么肯定会遇到问题。 设置可能如下所示:

ClientVarnish Caching ServerApache HTTP ServerTomcat

如果您需要HTTPS,则可以考虑将另一台服务器放在Varnish之前,因为它不支持SSL(我记得)。 然后可能是这样的:

ClientPoundVarnish Caching ServerApache HTTP ServerTomcat

您可以使用某种规则语言广泛地配置Varnish。 它将很好地为您服务。

磅只是一个小的反向代理,可用于终止SSL和/或负载平衡。

链接:

Apache: http//httpd.apache.org/

清漆: https : //www.varnish-cache.org/

磅: http//www.apsis.ch/pound

如果您要通过外部程序处理文档,除了将处理结果缓存到某处之外,您可以做的很多。 另一个选择是急切地预处理文档并存储所有可能的查询结果以供以后检索。

在每个请求上派生外部流程显然是最糟糕的选择。

由于您的数据是通过网络应用程序处理的并且是不可更改的,因此您只需将文件映射到字节缓冲区中,然后再次处理它们。 这样,您将在JVM中节省数据的加载和分配。

并且由于您的查询不会更改数据,因此无需将其推送到单独的线程中-他们可以直接从服务于HTTP请求的不同线程访问数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM