1. 客户端请求通过Load Blance到Blender;
2. Blender调用QP,QP调用运营平台,其中运营平台主要负责将日常运营数据服务化,QP负责分析Query;
3. Blender请求Page Cache和Data Cache同时请求Merger调用在线搜索服务;
4. Merger调用UserInfoSystem获取用户标签信息;
5. Merger将请求发给每列Searcher;
6. 每个Searcher召回商品并返给Merger;
7. Merger合并多列searcher的结果,确定需要输出的商品,请求CMS封装对应的商品信息;
8. CMS封装商品信息返给Merger;
9. Merger将包装好的商品返给Blender;
10. Blender将Merger返回的结果与其他垂直搜索结果进行合并,最终返回给前端。
为了保证高召回率和低响应延时,搜索服务流程的处理全部放在内存当中进行计算。多个Searcher并发处理请求,同时单个Searcher内部采用线程池技术,即所有线程之间共享倒排索引和商品属性信息,提高内存使用效率;每个查询使用一个独立线程串行执行,保证并发的多个查询线程之间互不影响。此外通过合理的设置线程池的大小,保证系统的CPU资源得到充分利用。并且采用多级缓存来保证系统的高可用。