이 소프트웨어는 고전적인 검색 엔진입니다. 크롤링/데이터 수집을 담당하는 앱의 한 부분이 있으며 데이터를 가져 와서 색인이나 데이터베이스를 만드는 앱이 있습니다. 마지막 부분은 클라이언트의 쿼리를 처리하고 결과를 검색하기 전에 데이터에 대한 검색을 수행합니다.검색 엔진 소프트웨어의 스레딩 및 프로세스 아키텍처에 대한 제안
필자가 논의중인 특정 엔진은 데이터가 자주 업데이트되므로 (분당 한 번 이상) 쿼리가 항상 최신 데이터에서 작동해야하는 엔진입니다.
내 질문에 간단합니다. 이 세 가지 작업을 세 개의 개별 프로세스로 처리해야합니까? 아니면 하나의 프로세스에 다중 스레드를 각각 처리해야합니까?
내 질문에 대한 주요 이유는 메모리를 파티션하는 가장 좋은 방법에 관한 것입니다. 검색자가 인덱서에 사용할 수있는 데이터를 업데이트해야하고 인덱서가 쿼리 처리기의 데이터 집합을 업데이트해야하는 경우 모두가 동일한 프로세스에서 살면서 주소 공간이 같은 것이 합리적일까요? 또는 공유 메모리 맵 파일을 사용하는 별도의 프로세스를 사용할 수 있습니까?
나는 클러스터링, 배포 등을 가능하게하기 위해 각기 다른 시스템에 살 수 있도록 별도의 프로세스에 기울이고있다. 그러나 더 작은 데이터 세트의 원시 속도면에서 통합 접근 방식이 선호 될 것인가?
OS는 Windows이고 언어는 C++입니다.