tup2王鹏云:实时搜索架构分析

13
实时搜索架构分析 王鹏云 [email protected] @wangpengyun

Upload: yongboy

Post on 27-May-2015

1.185 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Tup2王鹏云:实时搜索架构分析

实时搜索架构分析王鹏云[email protected]@wangpengyun

Page 2: Tup2王鹏云:实时搜索架构分析

内容提要

• 初识实时搜索• 搜索系统的基础知识• 传统搜索和实时搜索的区别• 实时搜索系统架构• 实时搜索的难点• 实时搜索开源工具

Page 3: Tup2王鹏云:实时搜索架构分析

初识实时搜索

• 实时搜索不是新鲜事物– 新闻搜索,社区搜索……– 微博火爆让实时搜索成为热点

• 商业价值– 新信息聚合和放大– 热门话题和趋势分析– 搜索广告

• 主要实时搜索引擎– Google 、 bing 、 twitter 、 friendfeed……

Page 4: Tup2王鹏云:实时搜索架构分析

搜索系统的基础知识

• Crawling– 抓取、超链分析

• Indexing– 内容提取、分词、倒排索引

• Searching– 查询分析、索引查询

• Ranking– TF/IDF 、 PageRank 、其他特征

Page 5: Tup2王鹏云:实时搜索架构分析

传统搜索和实时搜索的区别

• 结果呈现– 静态 vs 动态

• 搜索效果– 相关性 vs 实时性– PageRank vs 社会化特征

• 数据获取– 抓取 vs 推送

• 数据分布– URL 分布 vs 时间分布

Page 6: Tup2王鹏云:实时搜索架构分析

实时搜索系统架构图

ram index A

ram index B

disk index cur

disk index his A

disk index his B

more……

switch

snapshot/merge

merge

antispam

searcher

add/modify/del

Push API

Spider data

Internet

queueparallel search

High-level searcher

result data

ui

Internet

Page 7: Tup2王鹏云:实时搜索架构分析

架构设计要点

• 信息获取– Push API ( preferred )– Spider 抓取

• 定向 + 制导式抓取• 模板 + 启发式信息提取

– 队列• Topic 订阅式• 支持信息重放

– 独立 antispam 模块• 易于性能扩展• 快速演进

Page 8: Tup2王鹏云:实时搜索架构分析

架构设计要点( cont. )

• 信息删除 / 修改– 删除做标记(合并或重建时实际删除)– 修改 = 删除 + 添加

• 内存索引– 加快索引速

• 边写边读

– 控制内存占用大小• 写到硬盘( snapshot )• snapshot 实现?双索引结构

– 防止数据丢失• redo 日志• 队列重放

Page 9: Tup2王鹏云:实时搜索架构分析

架构设计要点( cont. )

• 库合并( merge )– 减少库数量,提高性能– 对内存库, snapshot 和 merge 可合一– 一定规模拆分出历史库(准静态)

• 历史库– 按需合并– 综合考虑:合并频率、库规模、访问量

• 查询合并– 遍历查询所有库的结果并合并– 分布式情况下,每个库自带 1 级 searcher , 2 级

searcher 合并所有 1 级的结果

Page 10: Tup2王鹏云:实时搜索架构分析

实时搜索的难点

• 快 + 动态,让很多事情变得复杂!– 架构、算法、运维、升级……

– 考验工程化水平

• Ranking 算法– 基本 TF/IDF

– 时间因素

– 社会化信息调权

• 信息 anti-spam– 文本特征过滤

– 社会化特征过滤

– 动态行为特征过滤

Page 11: Tup2王鹏云:实时搜索架构分析

实时搜索的难点( cont. )

• 海量规模下– 数据切分

• 时间 +URL

– Hotspot 问题• Cache• Replication

– 索引数据更新• 分词调整、信息删除 / 修改、库调整……• 每库独立更新,错峰更新• Cache warming

Page 12: Tup2王鹏云:实时搜索架构分析

实时搜索开源工具

• Zoie– Lucene-based ,源自 LinkedIn– 提供了 solr plugin– 足以应对中小规模的搜索需求

• Sphinx– 1.10-beta 开始支持实时搜索– 应用于 craigslist 、 netlog

Page 13: Tup2王鹏云:实时搜索架构分析

Thanks!Q&A