如何在使用 Lucene.net 索引文件的情况下减少延迟

How to reduce the latency in case of Indexing files using Lucene.net

您好,我们计划使用 lucene.net 作为我们主要是内容存储库的产品之一。为了获得更好的性能,我们的系统将使用 Lucene 查询引擎进行大部分内容读取操作。但我们认为的主要挫折之一是延迟,因为我们不知道集群或分布式 Lucene 实现,这是减少延迟的最佳方法。

根据评论,我现在了解到延迟问题与 IP 数据包延迟有关,因为在用户的地球另一端有一个索引服务器。

Lucene.net,和 Lucene 一样,是一个库而不是平台。它提供了极快的索引和查询,但不提供更高级别的平台功能,如多服务器分布式索引。 Lucene 确实包含大量管道来支持此类用例,并且软件产品可以构建在这些管道之上以提供多服务器分布式索引。基于 Lucene 构建的提供此类功能的两个最流行的软件平台是 Apache Solr and ElasticSearch。然而,重要的是要注意它们是建立在 Java 版本的 Lucene 而不是 Lucene.net 之上的。我不知道 Lucene.net 的类似替代方案,构建自己的替代方案将是一项艰巨的任务。

不过,您担心的 IP 数据包延迟可能不是一个大问题,让我解释一下。通常可以在 300 毫秒内将 IP 请求发送到地球的另一端,当然在 500 毫秒内。当渲染从地球另一端提供的网页以及从那里提供的大量图像时,这种延迟会迅速增加。如果页面上有 20 张图像加上几个 css 文件和几个 js 文件,每张图像 300 毫秒,那么渲染页面可能需要 25 个请求。每个请求的延迟为 300 毫秒,这种情况将承受 7500 毫秒的延迟,即 7.5 秒。实际上,一些请求可以并行处理,这将减少有效延迟,但除了这种延迟之外,服务器还必须做一些工作来满足请求,这也需要时间。无论如何,此示例仅用于说明目的,同意从世界另一端提供网页确实会引起 IP 延迟问题。

但是,从地球的另一端向Lucene发出搜索请求不会有类似的问题,因为它只需要是一个请求。因此,例如,如果某人需要向地球另一端的 API 服务器发出搜索 运行 Lucene.net,请求(可能 json)是一个暴露 IP 延迟的单个请求,比如 300 毫秒。该请求由 Lucene.net 提供服务,结果作为对该请求的单个响应返回,然后发出请求的应用程序或网页呈现结果。因此,总 IP 延迟只是单个请求的 IP 延迟,对于许多用例来说,在全球范围内都可以很好地完成。