CWYAlpha

Just another WordPress.com site

Thought this was cool: Twitter搜索架构设计核心之一:Earlybird

leave a comment »


Twitter的实时搜索在2010年重写了架构。新架构的核心就是Blender 和
Earlybird。本文主要介绍一下Earlybird架构。Earlybird是一个基于Lucene的实时倒排索引。

Twitter的实时搜索架构以前是建立Summize的技术基础上。Twitter的爆炸式增长时还使用Summize架构是相当惊人的。因此,扩展以MySQL为基础的检索系统就越来越具有挑战性。2010年4月左右,Twitter计划开发一个新的、现代的搜索架构,基于更高效的倒排索引,而不是关系型数据库。Twitter是很热衷开源软件的,所以Twitter选择了Lucene(Java写的搜索引擎库)作为起点。

Twitter当时对新系统的需求是非常巨大的:超过1000 TPS(Tweets/sec)和12000
QPS(Queries/sec,相当于每天十亿查询量)。这已经耗费了大量的机器资源。当时希望新系统能够持续若干年,并且至少支持更大数量级的负载。

Twitter是实时的,所以搜索引擎也必须是实时的。除了这些可扩展性需求外,我们还需要支持小于10秒的极低的索引延迟(从Tweet发布到可被检索到的时间间隔)。因此,索引是Tweet
pipeline的一部分。我们需要让索引(indexer)自己的延迟是亚秒级的(sub-second)。

Lucene是伟大的,但是它当时的版本对实时搜索而言也有一些明显的不足。这也是Twitter为什么会重写大量的内存数据结构内核,尤其是针对发布列表,但这些改进始终都支持Lucene标准APIs。这样,就能够不加修改即能使用Lucene的检索层。Twitter改进的一些亮点包括:

(1)垃圾收集性能显著改善
(2)无锁的数据结构和算法
(3)支持逆序的发布列表(posting lists, that are traversable in reverse
order)
(4)更有效的早期查询终止

Twitter的这些改动,已经提交给了Lucene,某些功能已经合并进了Lucene主干以及它的新实时搜索分支。

新的检索架构图如下:

新系统上线后,只使用可用的后端资源的5%。新索引每秒索引量提升了50倍。也能够支撑更大的索引量(2倍)。并且,新系统是非常灵活和可扩展的,这将使Twitter能够更快更好地建立很酷的新功能。

 

参考文章:http://engineering.twitter.com/2010/10/twitters-new-search-architecture.html

转载请注明出处:互联网旁观者~黄言之 http://blog.sina.com.cn/netreview/

from 互联网旁观者: http://blog.sina.com.cn/s/blog_72995dcc01013pka.html

Written by cwyalpha

五月 11, 2012 在 2:39 下午

发表在 Uncategorized

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: