分布式搜索设计的评估
分析我们的设计如何满足要求。
可用性
我们利用分布式存储来存储这些项目:
- 索引器抓取的文档。
- 索引节点生成的倒排索引。
数据在分布式存储中跨多个区域复制,使索引和搜索的跨区域部署更加容易。索引和搜索节点组只需要在不同的可用性区域中进行复制。因此,我们将索引和搜索节点集群部署在不同的可用性区域。因此,如果一个地方发生故障,我们可以处理来自另一个集群的请求。多组索引和搜索节点有助于实现高索引和搜索可用性。此外,在每个集群中,如果一个节点死亡,另一个节点可以取而代之。
索引是离线执行的,而不是在用户的关键路径上。我们不需要同步复制索引操作。没有必要用刚刚添加到索引中的最新数据来响应用户搜索查询。因此,我们不必等待新索引的复制来响应搜索查询。这使得搜索对用户可用。
相关信息
一旦我们复制了所有索引节点组中的最新数据并且搜索节点已经下载了它,那么搜索查询就会对最新数据执行
可扩展性
分区是扩展搜索系统的重要组成部分。当我们增加分区数量并向索引和搜索集群添加更多节点时,我们可以在数据索引和查询方面进行扩展。
索引和搜索过程的强隔离有助于索引和搜索独立和动态地扩展。
大数据快速搜索
我们使用了多个节点,每个节点在较小的倒排索引上并行执行搜索查询。然后合并每个搜索节点的结果并返回给用户。
降低成本
我们使用更便宜的机器来计算索引和执行搜索。如果一个节点发生故障,我们不必重新计算完整的索引。相反,一些文档需要重新编入索引。
结论
几乎每个应用程序都需要一个搜索系统。我们已经看到,开发一个可以在单个节点上运行的搜索系统是不可能的。我们利用并行计算框架和低成本机器构建了一个可用、可扩展且高性能的搜索系统。