首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >搜索引擎软件的线程化和进程架构所需的建议

搜索引擎软件的线程化和进程架构所需的建议
EN

Stack Overflow用户
提问于 2010-03-05 08:37:06
回答 1查看 58关注 0票数 2

该软件是一个经典的搜索引擎。应用程序的一部分负责抓取/收集数据,另一部分负责获取数据并构建索引或数据库。最后一部分处理来自客户端的查询,并在检索结果之前对数据执行搜索。

我讨论的特定引擎是一个频繁更新数据(至少每分钟一次)的引擎,因此查询必须始终对最新数据进行操作。

我的问题很简单。这三个任务应该由三个独立的进程来处理,还是由多个线程分别负责的单个进程来处理?

我提出这个问题的主要原因是关于内存分区的最佳方式。如果搜索器必须更新索引器的可用数据,而索引器必须更新查询处理器的数据集,那么它们都位于相同的进程下并具有相同的地址空间是否有意义?或者,是否可以接受使用共享内存映射文件的单独进程?

我倾向于独立的进程,这样每个进程都可以生活在不同的机器上,从而实现集群、分发等。但是就较小数据集的原始速度而言,整合的方法会更好吗?

操作系统为Windows,语言为C++。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-05 11:32:52

我不是专家,但我倾向于独立进程的方法,因为它提供了最好的灵活性,可伸缩性,易于管理(重启一个服务不会影响其他服务)和性能。

对于不同的任务,我也会考虑使用不同的数据库。如果您采用让一个组件完成一项工作的方法-并且做得很好,那么将这一原则应用于DB也是有意义的。

这取决于你在哪里看到的性能瓶颈是你如何做到这一点。我正在考虑最初的收集区,可能是临时区域(排序等),最后是专门用于快速访问和搜索的区域。

我想SQL to SQL批处理/ ETL会提供最好的性能。

仔细考虑-我会构建3个独立的应用程序,它们一起构成了解决方案。这也将允许你使用不同的技术来完成不同的任务,如果你真的想要的话。允许更灵活的维护路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2383777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档