-
Notifications
You must be signed in to change notification settings - Fork 2
系统架构
Yvette Han edited this page Jun 1, 2021
·
3 revisions
本节我们将解释SOCO Search的是如何运作的,如您想了解如何使用SOCO Search,请参考实例操作
如图所示,SOCO Search主要由以下部分组成:
- Server Manager(soco-search-server)
- Controller (soco-search-controller)
- Sync_workers (soco-search-worker).
服务器管理器负责通过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 恢复失败的作业。
控制器从状态数据库中提取作业并将作业分配到 RedisDB。 控制器会定期检查状态数据库。如果TO_DO状态数据库中有作业,控制器会将作业保存到 RedisDB 中。控制器也会在控制器console中管理索引速度。
同步工作器负责根据映射和索引转换数据以进行搜索。同步工作器将无限循环地从给定队列中读取作业,在所有作业完成后等待新工作的到来。他们从数据库中提取数据,并根据索引映射进行编码、分块和运行插件等过程