1、搜索实时更新架构实践搜索架构搜索架构H5搜索APP搜索PC搜索搜索服务SmartBox展示逻辑自动补全搜索历史Query规划(理解、意图识别、扩展)自动货架坑位合并多屏适配主题清单热词推荐类目提示相似查询属性提示数据融合(去重、重排序、精确控位)展示模板导购筛选转化率排序个性化关联商品搜索引擎(倒排)商品摘要(K-V)索引生成数据服务离线数据处理商品数据更新语言模型排序模型排序学习全量更新实时更新搜索日志分析数据导入框架数据更新数据更新搜索服务产品管理商家管理。卖家实时索引促销管理商家后台数据库HadoopSqoopHbase买家全量索引实时更新实时更新DatabusDataService更新
2、处理消息解析更新验证消息接收流程监控数据处理统计分析搜索服务产品管理商家管理。卖家实时索引促销管理商家后台数据库HadoopSqoopHbase买家全量索引实时更新实时更新DataBusWork QueueDB ScannerMsg ReceiverHbase StoreDataServiceProcessor PipelineMessage Queue搜索服务搜索引擎索引更新索引更新ZoieIndex SearcherMultiReaderSoftCommitHardCommit缓存缓存LuceneFileIndexIndex Writer一致性:全量一致性:全量+实时实时实时更新流搜索服务
3、实时更新全量更新持久存储全量索引构建时间全量数据抽取时间分发前Sync开始时间切换前Sync开始时间数据更新全量数据抽取、处理索引构建索引分发实时更新定时分发前等待数据模型数据模型(1)将产品数据分割为有意义的列,抽象化。)将产品数据分割为有意义的列,抽象化。(2)数据按照列的粒度来操作、重用。)数据按照列的粒度来操作、重用。(3)控制复杂度,数据可能有几百上千维,列保持在几十维。)控制复杂度,数据可能有几百上千维,列保持在几十维。ProductColumn AColumn BColumn CColumn DProvince 1:D1Province 2:D2Province 3:D3计算模型
4、计算模型(1)定义输入和输出,将逻辑划分到)定义输入和输出,将逻辑划分到Processor内内Input Data AInput Data BInput Data CProcessorOutput Data(2)根据逻辑复杂度,给)根据逻辑复杂度,给Processor分配资源分配资源SEDA(Staged Event Driver Architecture)Stage 1EventStage 2EventProcessor 1Processor 2Processor 3Data AData BData CData AProcessor 4队列 1len=100队列 2len=50线程池 1Th
5、reads=10线程池 2Threads=50计算模型计算模型(3)根据数据的生成和使用关系,计算)根据数据的生成和使用关系,计算Processor间的依赖间的依赖DataColumn/ProcessorMerchantInfoPriceStockPromotion覆盖省份价格库存促销生成使用生成使用生成(4)根据依赖生成)根据依赖生成DAG,构建,构建Processor PipelinePriceStockProcessorMerchantProcessorCoverProvincePromotionProcessor(5)全量更新,使用)全量更新,使用MR封装封装Processor Pip
6、eline实时更新实时更新含义:某一个含义:某一个输入数据输入数据发生了改变发生了改变(1)根据定义,找到)根据定义,找到使用使用这个数据的这个数据的Processor(2)根据)根据DAG,构建,构建Processor PipelineInput Data AProcessor BProcessor CInput Data BInput Data CProcessor AProcessor D(3)更新)更新Pipeline中所有的中所有的输出数据输出数据数据更新数据更新索引数据 05-27 00:00全量更新(Hadoop)全量原始数据数据存储05-27 00:00产品数据促销数据价格库存
7、05-26 17:30产品数据促销数据价格库存05-26 17:30产品更新促销更新产品数据05-26 17:3005-26 18:0005-26 17:3005-26 17:3005-26 18:00促销数据价格库存更新05-27 10:3005-26 17:30索引数据 05-27 10:45增量更新05-27 10:30价格库存05-26 17:30产品数据促销数据价格库存05-26 18:00促销更新05-27 10:3005-26 18:00实时更新监控实时更新监控指标:正确性,及时性。指标:正确性,及时性。External SRCdataDataProviderAgent(1)与系
8、统的集成Search-MonitorReceiverCollectorDataStoreCheck&AlertSchedulerAggregatorNotifierMetrics DataAnalyzerReportAPIRESTMonitorSystem(2)与人的集成EMAIL System人Monitor邮件短信可跟踪性设计可跟踪性设计DataChangeMessage消息接收Topic_ReceiveTime_Sequence_ReceiverIPProductChange消息解析产品更新更新分发更新消费_ResolveTime_SequenceProductUpdateJob_Pro
9、cessTime_SequenceUpdateRequestIndexName_ReceiveTime_ReceiverIP_ProcessTime_SequenceIndexRequestShardId_IndexName_ReceiveTime_ReceiverIP监控监控Dashboard更新延迟更新延迟更新延迟更新延迟更新失败更新失败多源更新调度多源更新调度问题:问题:各个消息源更新频率和数量不均,服务器的资源利用率不高。方案:方案:使用加权公平队列(WFQ),按照有数据的消息源平均分配处理资源。效果:效果:40秒完成更新2万条促销消息,优化前需要20分钟。Fetch msg by f
10、air queuepolicy when work queue has1/3 free sitLess than 250 productId.If mor than 250,split it.Waitting queue(topicNum:n)DataChange SchedulerWork Thread poolpmInfobrandcoreSize:20*nmaxSize:20*nworkQueue:3*coreSizepromotionWait queuesize:Int.MaxSize:Int.MaxStatus.RESOLVED消息解析等待调度产品更新进行中的工作进行中的工作(1)代
11、码一致性)代码一致性-架构:业务逻辑=20:80-业务逻辑代码100%复用-降低代码开发和维护的成本-缩短测试时间,使用实时更新做功能测试(2)降低全量构建的频率)降低全量构建的频率-数据一致性检查,计算全量构建的收益全量更新全量更新倒排索引(online)正向索引(online)Index-ServerSharding FieldMappingHive(offline)Item Feature Repository品牌/类目/属性排序因子(销量、曝光等)分词(标题、品牌、型号等)促销价格、库存Business Processor PipelinePromotion Price StockCo
12、mbine/SeriesRankSegmentData Source ProcessorGoraColumnizerJoinHBase 离线数据productpminfoattributeimpressionsalecover areaserialDumpMysqlOracleMongoHive实时更新实时更新倒排索引(online)正向索引(online)Index-ServerSharding FieldMappingItem Feature Repository品牌/类目/属性排序因子(销量、曝光等)分词(标题、品牌、型号等)促销价格、库存Business Processor Pipel
13、inePromotion Price StockCombine/SeriesRankSegmentData Source ProcessoriBatis ColumnizerJoinDataService 内存数据impression saleproductpminfoattributecover areaserialDaoMysqlOracleMongoWe are hiring上海/武汉1.搜索架构师搜索架构师/工程师工程师 Lucene/Solr/ElasticSearch Hadoop/HBase Storm/Spark 高并发、大数据2.算法专家算法专家 大规模数据挖掘 自然语言处理、文本分类 排序算法、推荐算法等