网页搜索核心模块架构重构

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网页搜索核心模块重构2014.6~至今

网页搜索部& 工程效率部

冯上马波

C 模块-位置Web 服务器

上游模块…

召回控制器

C

召回控制器Query 分析搜索模块

搜索模块搜索模块搜索模块摘要

模块C

•多产品支持

•网页搜索

•移动搜索

•知道/贴吧/文库

•开发密集

•每周上线10-20个功能

•最近1.5年有206人贡献过代码

内容简介

项目背景

阶段性成果

我们如何做设计层面、编码层面、工具层面

项目背景

模块接连出现上线回滚一个月6次代码复杂难以维护复杂度高

系统性错误难以排查内存、指针、core

项目阶段性成果

Query分析交互部分全部OO化

面向对象的设计,接口清晰,职责明确

搜索控制器交互状态机重新设计

逻辑清晰化,复杂度降低,内存下降,性能提高

单元测试覆盖率提升、代码复杂度下降类平均大小降低25%,平均圈复杂度下降10%

清除无用代码2.6W+ lines

我们如何做

指导思想小步快跑、演进式设计、SOLID原则实现细节设计层面、编码层面、工具层面

设计层面

架构:混乱/messy →清晰/clear and focused 初级OO/basic OO →设计模式/design pattern

架构:混乱/messy 清晰/clear and focused

PackParse QueryControl QueryControl 不再参与词性分析交互与词性分析交互解析词性分析结果构造词性分析请求根据当前召回状态筛选要执行的query_type

QaResponseParser makeDaRequest_strategy()QaRequestBuilder get_normal_query_type get_next_query_type parseDaResponse_strategy()Queryanalyze.cpp

QueryAnalyzer 总控逻辑通过A 平台发送请求通过B 平台发送请求AsyncSubmitterA AsyncSubmitterB

AsyncSubmitter

RequestBuilder ResponseParser 词性分析请求控制框架

PackParser 退出与词性分析交互

ResultFetcher

search

-Cac******irer*-Ca******ta*-QueryTy********ata*-Req*****Array -_*******en_cache -Pack****ager -char buf[]-lost_bs_arr_t -_search*****ueryType -_nee***archCac****vel -_sendAn*********neBc -sen********ertOneDBArr -_sendA********ostDB …………后端查询Proxy

缓存查询Proxy StrategyQueue -search Normal Specific1Specific2

getResults::recall info

-RecallInfo*_m_recall_array[]check_*****_old_strategy check_db_****mask_*****sults Upd**********es_num modify_***results_layout merge_and_save_***_result processAfterRecall

-RecallInfo*_m_recall_array[]check_*****_old_strategy

check_db_****mask_*****sults Upd**********es_num modify_***results_layout merge_and_save_***_result XXCallback::on_success

-RecallInfo*_m_recall_array[]

check_*****_old_strategy

check_db_****

mask_*****sults

Upd**********es_num modify_***results_layout merge_and_save_***_result RecallInfo

-finish

Queue TypeResult RecallInfo

ResultFetcher RecallInfo

初级OO/basic OO 设计模式/design pattern

Template Method StrategyQueue

parse_response

QueryHighRisk

QueryHighRisk

QueryHighRisk

SpecialQueryB

SpecialQueryA

parse_response

AnotherStrategy find_query parse_response StrategyQueue find_query parse_response SomeStrategy find_query parse_response SomeStrategy find_query parse_response ElseStrategy find_query parse_response QueryDiyukuozhan find_query parse_da_response ElseStrategy find_query parse_response QueryDiyukuozhan find_query parse_da_response QueryDiyukuozhan find_query parse_da_response QueryDiyukuozhan find_query parse_da_response AnotherStrategy find_query parse_response

StrategyQueue parse_response SomeStrategy parse_response ElseStrategy parse_response AnotherStrategy parse_response QueryFinder find_query

NormalFinder find_query AnotherFinder find_query OtherFinder find_query

Bridge

相关文档
最新文档