版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、搜索实时更新架构实践周航1号店搜索架构H5搜索APP搜索PC搜索搜索服务SmartBox展示逻辑自动补全搜索历史Query(理解、意图识别、扩展)自动货架坑位合并热词推荐相似数据融合(去重、重排序、精确控位)展示模板多屏适配类目提示属性提示导购筛选主题转化率排序个性化关联商品商品数据更新新实时更新数据导入框架离线数据处理语言模型排序模型搜索日志分析排序学习搜索引擎(倒排)商品摘要(K-V)索引生成数据服务数据更新搜索服务管理商家管理。卖家实时索引促销管理数据库商家买家索引HbaseSqoopHadoop实时更新搜索服务管理商家管理。卖家实时索引促销管理数据库商家买家索引HbaseSqoopHa
2、doopDataService数据处理Databus流程更新验证统计分析消息接收消息更新处理实时更新DataBusWork QueueDB ScannerMsg ReceiverDataServiceProcessor PipelineDispatcherResolverFilter搜索引擎搜索服务Message QueueHbase Store索引更新ZoieIndex SearcherSoftCommitMultiReaderHardCommit缓存Index WriterRAM Index BRAM Index ALucene File Index一致性:+实时实时更新流搜索服务实时更新
3、新 持久数据抽取时间索引构建时间分发前Sync开始时间切换前Sync开始时间数据更新定时分发前等待实时更新索引分发索引构建数据抽取、处理数据模型(1)将数据分割为有意义的列,抽象化。(2)数据按照列的粒度来操作、重用。(3)复杂度,数据可能有几百上千维,列保持在几十维。ProductColumn AColumn BColumn CColumn DProvince 1 : D1Province 2 : D2Province 3 : D3计算模型(1)定义输入和输出,将逻辑划分到Processor内Input Data AProcessorOutput DataInput Data BInput
4、Data C(2)根据逻辑复杂度,给Processor分配SEDA (Staged Event Driver Architecture)Stage 1EventStage 2EventProcessor 1Data AData AProcessor 4Processor 2Data BData CProcessor 3队列 1len = 100队列 2len = 50线程池 1Threads = 10线程池 2Threads = 50计算模型(3)根据数据的生成和使用关系,计算Processor间的依赖(4)根据依赖生成DAG,构建Processor PipelinePriceStock Pr
5、ocessorMerchantProcessorCoverProvincePromotionProcessor(5)新,使用MR封装Processor PipelineDataColumn/ProcessorMerchantInfoPriceStockPromotion覆盖省份生成使用使用价格库存生成促销生成实时更新含义:某一个输入数据发生了改变(1) 根据定义,找到使用这个数据的Processor(2) 根据DAG,构建Processor PipelineInput Data AProcessor BInput Data BProcessor AProcessor DProcessor CI
6、nput Data C(3)更新Pipeline中所有的输出数据数据更新索引数据 05-27 00:00 新(Hadoop)05-27 00:00原始数据数据更新05-26 17:3005-26 17:30促销更新05-26 18:00价格库存更新索引数据 05-27 10:45增量更新05-27 10:30促销更新05-26 18:00价格库存05-27 10:30促销数据05-26 18:0005-26 17:30数据价格库存05-27 10:3005-26 17:30价格库存促销数据05-26 18:00价格库存05-26 17:30促销数据05-26 17:30促销数据数据数据05-2
7、6 17:30数据实时更新指标:正确性,及时性。External SRCDataProviderdataSearch-MonitorCheck&AlertSchedulerMetricsDataMonitorSystemSystem人Monitor邮件RESTAPI(2)与人的集成AnalyzerNotifierReportAggregatorDataStoreCollectorReceiverAgent(1)的集成可跟踪性设计DataChangeMessage消息接收ProductChange消息ProductUpdateJob更新UpdateRequest更新分发IndexRequ
8、est更新消费ShardId_IndexName_ReceiveTime_ReceiverIPIndexName_ReceiveTime_ReceiverIP<PC Id>_ProcessTime_Sequence<PC Id>_ProcessTime_Sequence<DCM Id>_ResolveTime_SequenceTopic_ReceiveTime_Sequence_ReceiverIPDashboard更新延迟更新延迟更新失败多源更新调度问题:各个消息源更新频率和数量不均,服务器的利用率不高。方案:使用公平队列(WFQ),按照有数据的消息源平均
9、分配处理。效果:40秒完成更新2万条促销消息,优化前需要20分钟。Fetch msg by fair queuepolicy when work queue has1/3 free sitLess than 250 productId.If mor than 250, split it.Waitting queue(topicNum: n)pmInfoDataChange SchedulerWork Thread poolbrandcoreSize: 20*nmaxSize:20*n workQueue:3*coreSizepromotionWait queuesize:Int.MaxSize
10、:Int.MaxStatus.RESOLVED等待调度消息更新进行中的工作(1) 代码一致性- 架构:业务逻辑 = 20:80- 业务逻辑代码100%复用- 降低代码开发和维护的成本- 缩短测试时间,使用实时更新做功能测试(2)降低构建的频率- 数据一致性检查,计算构建的新倒排索引(online)正向索引(online)Index-ServerHive(offline)ShardingFieldMappingItem Feature Repository品牌/类目/属排序因子(销量、等)分词(标题、品牌、型号等)价格、库存促销性Business Processor PipelineCombin
11、e/SeriesPromotionPrice StockRankSegmentData Source ProcessorGoraColumnizerJoinHBase 离线数据impressioncover areaserialproductpminfoattributesaleDumpOracleMysqlMongoHive实时更新倒排索引(online)正向索引(online)Index-ServerShardingFieldMappingItem Feature Repository品牌/类目/属排序因子(销量、等)分词(标题、品牌、型号等)促销价格、库存性Business Processor PipelineCombine/SeriesPromotionPrice StockRankSegmentData Source ProcessoriBatisColumnizerJoinDataService 内存数据cover areaserialproduc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论