SlideShare a Scribd company logo
1 of 13
Download to read offline
实时搜索架构分析
王鹏云
wangpengyun@gmail.com
@wangpengyun
内容提要
•   初识实时搜索
•   搜索系统的基础知识
•   传统搜索和实时搜索的区别
•   实时搜索系统架构
•   实时搜索的难点
•   实时搜索开源工具
初识实时搜索

• 实时搜索不是新鲜事物
  –   新闻搜索,社区搜索……
  –   微博火爆让实时搜索成为热点
• 商业价值
  –   新信息聚合和放大
  –   热门话题和趋势分析
  –   搜索广告
• 主要实时搜索引擎
  –   Google 、 bing 、 twitter 、 friendfeed……
搜索系统的基础知识

• Crawling
    –   抓取、超链分析
• Indexing
    –   内容提取、分词、倒排索引
• Searching
    –   查询分析、索引查询
• Ranking
    –   TF/IDF 、 PageRank 、其他特征
传统搜索和实时搜索的区别

• 结果呈现
  –   静态 vs 动态
• 搜索效果
  –   相关性 vs 实时性
  –   PageRank vs 社会化特征
• 数据获取
  –   抓取 vs 推送
• 数据分布
  –   URL 分布 vs 时间分布
实时搜索系统架构图

                  antispam                                                             Internet


                               ram      switch       ram
       queue                 index A               index B
                                                                                          High-level
                                                                               ui         searcher
                                       snapshot/
    add/modify/del                      merge




                                                             parallel search
                                                                                    result data
                                   disk index cur
Push API

               Spider                   merge
                data                                                            searcher

                                  disk index his A


                                  disk index his B
      Internet
                                       more……
架构设计要点

• 信息获取
  –   Push API ( preferred )
  –   Spider 抓取
        •   定向 + 制导式抓取
        •   模板 + 启发式信息提取
  –   队列
        •   Topic 订阅式
        •   支持信息重放
  –   独立 antispam 模块
        •   易于性能扩展
        •   快速演进
架构设计要点( cont. )

• 信息删除 / 修改
   –   删除做标记(合并或重建时实际删除)
   –   修改 = 删除 + 添加
• 内存索引
   –   加快索引速
        •   边写边读
   –   控制内存占用大小
        •   写到硬盘( snapshot )
        •   snapshot 实现?双索引结构
   –   防止数据丢失
        •   redo 日志
        •   队列重放
架构设计要点( cont. )

• 库合并( merge )
   –   减少库数量,提高性能
   –   对内存库, snapshot 和 merge 可合一
   –   一定规模拆分出历史库(准静态)
• 历史库
   –   按需合并
   –   综合考虑:合并频率、库规模、访问量
• 查询合并
   –   遍历查询所有库的结果并合并
   –   分布式情况下,每个库自带 1 级 searcher , 2 级
       searcher 合并所有 1 级的结果
实时搜索的难点

• 快 + 动态,让很多事情变得复杂!
    –   架构、算法、运维、升级……
    –   考验工程化水平
• Ranking 算法
    –   基本 TF/IDF
    –   时间因素
    –   社会化信息调权
• 信息 anti-spam
    –   文本特征过滤
    –   社会化特征过滤
    –   动态行为特征过滤
实时搜索的难点( cont. )

• 海量规模下
  –   数据切分
       •   时间 +URL
  –   Hotspot 问题
       •   Cache
       •   Replication
  –   索引数据更新
       •   分词调整、信息删除 / 修改、库调整……
       •   每库独立更新,错峰更新
       •   Cache warming
实时搜索开源工具

• Zoie
    –    Lucene-based ,源自 LinkedIn
    –    提供了 solr plugin
    –    足以应对中小规模的搜索需求
• Sphinx
    –    1.10-beta 开始支持实时搜索
    –    应用于 craigslist 、 netlog
Thanks!
 Q&A

More Related Content

Viewers also liked

杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈Leechael
 
Copyright, trolls and the Internet
Copyright, trolls and the InternetCopyright, trolls and the Internet
Copyright, trolls and the Internetwdsnead
 
基于Tornado后端系统架构暨最佳实践
基于Tornado后端系统架构暨最佳实践基于Tornado后端系统架构暨最佳实践
基于Tornado后端系统架构暨最佳实践ZY Zhang
 
Resilient Distributed Datasets
Resilient Distributed DatasetsResilient Distributed Datasets
Resilient Distributed DatasetsAlessandro Menabò
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in PythonGavin Roy
 
Nsq & python worker
Nsq & python workerNsq & python worker
Nsq & python workerFelinx Lee
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析Leechael
 
豆瓣技术架构的发展历程
豆瓣技术架构的发展历程豆瓣技术架构的发展历程
豆瓣技术架构的发展历程George Ang
 
Tornado开发实践
Tornado开发实践Tornado开发实践
Tornado开发实践ZY Zhang
 
回顾展览
回顾展览回顾展览
回顾展览Wei Weng
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题XiaoJun Hong
 
用Tornado开发RESTful API运用
用Tornado开发RESTful API运用用Tornado开发RESTful API运用
用Tornado开发RESTful API运用Felinx Lee
 
Python web开发吐槽
Python web开发吐槽Python web开发吐槽
Python web开发吐槽Felinx Lee
 
Cyclone vs Tornado
Cyclone vs TornadoCyclone vs Tornado
Cyclone vs TornadoSmit Gajera
 
Integrating PostgreSql with RabbitMQ
Integrating PostgreSql with RabbitMQIntegrating PostgreSql with RabbitMQ
Integrating PostgreSql with RabbitMQGavin Roy
 
AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台dennis zhuang
 
An Introduction to Tornado
An Introduction to TornadoAn Introduction to Tornado
An Introduction to TornadoGavin Roy
 

Viewers also liked (20)

杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈杨卫华:微博cache设计浅谈
杨卫华:微博cache设计浅谈
 
Copyright, trolls and the Internet
Copyright, trolls and the InternetCopyright, trolls and the Internet
Copyright, trolls and the Internet
 
基于Tornado后端系统架构暨最佳实践
基于Tornado后端系统架构暨最佳实践基于Tornado后端系统架构暨最佳实践
基于Tornado后端系统架构暨最佳实践
 
Resilient Distributed Datasets
Resilient Distributed DatasetsResilient Distributed Datasets
Resilient Distributed Datasets
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in Python
 
Nsq & python worker
Nsq & python workerNsq & python worker
Nsq & python worker
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
 
豆瓣技术架构的发展历程
豆瓣技术架构的发展历程豆瓣技术架构的发展历程
豆瓣技术架构的发展历程
 
Tornado
TornadoTornado
Tornado
 
Tornado开发实践
Tornado开发实践Tornado开发实践
Tornado开发实践
 
回顾展览
回顾展览回顾展览
回顾展览
 
Week10
Week10Week10
Week10
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
 
用Tornado开发RESTful API运用
用Tornado开发RESTful API运用用Tornado开发RESTful API运用
用Tornado开发RESTful API运用
 
Redis
RedisRedis
Redis
 
Python web开发吐槽
Python web开发吐槽Python web开发吐槽
Python web开发吐槽
 
Cyclone vs Tornado
Cyclone vs TornadoCyclone vs Tornado
Cyclone vs Tornado
 
Integrating PostgreSql with RabbitMQ
Integrating PostgreSql with RabbitMQIntegrating PostgreSql with RabbitMQ
Integrating PostgreSql with RabbitMQ
 
AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台
 
An Introduction to Tornado
An Introduction to TornadoAn Introduction to Tornado
An Introduction to Tornado
 

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

曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731drewz lin
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lakeJames Chen
 
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012certph4nt0m
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化Frank Xu
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1medcl
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享vanadies10
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for bankingfocusbi
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Introericpi Bi
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseJack Gao
 
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocessbabel_qi
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲Herman Wu
 
推荐系统规划
推荐系统规划推荐系统规划
推荐系统规划2005000613
 
Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結James Chen
 
用Python实现hadoop任务调度管理
用Python实现hadoop任务调度管理用Python实现hadoop任务调度管理
用Python实现hadoop任务调度管理Leo Zhou
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...acelyc1112009
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011Yiwei Ma
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构Sky Jian
 
去哪儿Ugc平台设计经验
去哪儿Ugc平台设计经验去哪儿Ugc平台设计经验
去哪儿Ugc平台设计经验mysqlops
 

Similar to 王鹏云:实时搜索架构分析 (20)

曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
曲琳 购物搜索引擎架构的变与不变——一淘网搜索技术分享0731
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for banking
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
 
分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲
 
推荐系统规划
推荐系统规划推荐系统规划
推荐系统规划
 
Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結
 
用Python实现hadoop任务调度管理
用Python实现hadoop任务调度管理用Python实现hadoop任务调度管理
用Python实现hadoop任务调度管理
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 
去哪儿Ugc平台设计经验
去哪儿Ugc平台设计经验去哪儿Ugc平台设计经验
去哪儿Ugc平台设计经验
 

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

  • 2. 内容提要 • 初识实时搜索 • 搜索系统的基础知识 • 传统搜索和实时搜索的区别 • 实时搜索系统架构 • 实时搜索的难点 • 实时搜索开源工具
  • 3. 初识实时搜索 • 实时搜索不是新鲜事物 – 新闻搜索,社区搜索…… – 微博火爆让实时搜索成为热点 • 商业价值 – 新信息聚合和放大 – 热门话题和趋势分析 – 搜索广告 • 主要实时搜索引擎 – Google 、 bing 、 twitter 、 friendfeed……
  • 4. 搜索系统的基础知识 • Crawling – 抓取、超链分析 • Indexing – 内容提取、分词、倒排索引 • Searching – 查询分析、索引查询 • Ranking – TF/IDF 、 PageRank 、其他特征
  • 5. 传统搜索和实时搜索的区别 • 结果呈现 – 静态 vs 动态 • 搜索效果 – 相关性 vs 实时性 – PageRank vs 社会化特征 • 数据获取 – 抓取 vs 推送 • 数据分布 – URL 分布 vs 时间分布
  • 6. 实时搜索系统架构图 antispam Internet ram switch ram queue index A index B High-level ui searcher snapshot/ add/modify/del merge parallel search result data disk index cur Push API Spider merge data searcher disk index his A disk index his B Internet more……
  • 7. 架构设计要点 • 信息获取 – Push API ( preferred ) – Spider 抓取 • 定向 + 制导式抓取 • 模板 + 启发式信息提取 – 队列 • Topic 订阅式 • 支持信息重放 – 独立 antispam 模块 • 易于性能扩展 • 快速演进
  • 8. 架构设计要点( cont. ) • 信息删除 / 修改 – 删除做标记(合并或重建时实际删除) – 修改 = 删除 + 添加 • 内存索引 – 加快索引速 • 边写边读 – 控制内存占用大小 • 写到硬盘( snapshot ) • snapshot 实现?双索引结构 – 防止数据丢失 • redo 日志 • 队列重放
  • 9. 架构设计要点( cont. ) • 库合并( merge ) – 减少库数量,提高性能 – 对内存库, snapshot 和 merge 可合一 – 一定规模拆分出历史库(准静态) • 历史库 – 按需合并 – 综合考虑:合并频率、库规模、访问量 • 查询合并 – 遍历查询所有库的结果并合并 – 分布式情况下,每个库自带 1 级 searcher , 2 级 searcher 合并所有 1 级的结果
  • 10. 实时搜索的难点 • 快 + 动态,让很多事情变得复杂! – 架构、算法、运维、升级…… – 考验工程化水平 • Ranking 算法 – 基本 TF/IDF – 时间因素 – 社会化信息调权 • 信息 anti-spam – 文本特征过滤 – 社会化特征过滤 – 动态行为特征过滤
  • 11. 实时搜索的难点( cont. ) • 海量规模下 – 数据切分 • 时间 +URL – Hotspot 问题 • Cache • Replication – 索引数据更新 • 分词调整、信息删除 / 修改、库调整…… • 每库独立更新,错峰更新 • Cache warming
  • 12. 实时搜索开源工具 • Zoie – Lucene-based ,源自 LinkedIn – 提供了 solr plugin – 足以应对中小规模的搜索需求 • Sphinx – 1.10-beta 开始支持实时搜索 – 应用于 craigslist 、 netlog