Skip to content

系统架构

Yvette Han edited this page Jun 1, 2021 · 3 revisions

系统架构

本节我们将解释SOCO Search的是如何运作的,如您想了解如何使用SOCO Search,请参考实例操作 alt text

如图所示,SOCO Search主要由以下部分组成:

  • Server Manager(soco-search-server)
  • Controller (soco-search-controller)
  • Sync_workers (soco-search-worker).

服务器管理器(Server Manager)

服务器管理器负责通过API调用进行插入、删除或修改

以添加数据API为例. 首先,我们将数据插入到数据库(例如 mongodb)中,并使用特定的操作参数将作业保存到 TO_DO status_db 中. 然后我们将每个作业从 TO_DO 状态数据库移至 DOING 状态数据库,并根据 RedisDB 中的工作线程数量、索引速度和作业数量将它们插入到 RedisDB 中. sync_workers (soco-search-worker) 通过批处理从 redisDB 读取作业并索引它们. 当他们完成索引时,完成的 objectIds 和 index_id 会保存在 DONE 状态数据库中,以方便查看一共索引了多少数据。如果索引失败,objectIds 和 index_id 将保存在 ERROR 状态数据库中,我们可以稍后通过 requeue API 恢复失败的作业。

控制器(Controller)

控制器从状态数据库中提取作业并将作业分配到 RedisDB。 控制器会定期检查状态数据库。如果TO_DO状态数据库中有作业,控制器会将作业保存到 RedisDB 中。控制器也会在控制器console中管理索引速度。

同步工作器(Sync Workers)

同步工作器负责根据映射和索引转换数据以进行搜索。同步工作器将无限循环地从给定队列中读取作业,在所有作业完成后等待新工作的到来。他们从数据库中提取数据,并根据索引映射进行编码、分块和运行插件等过程