Twitter的服务器架构

三字要诀

Twitter的工程师把他们构建高效率,可伸缩的系统的经验总结为三字要诀:

partitioning(分片), indexing(索引), 和 replication(复制)。


分片(partitioning)技巧

Twitter上的tweet有两种主要的插叙模式:

by id和by author的。

单一地以id做key分片或以author做key分片都不好同时满足两种查询需求。

Twitter的工程师使用了这个方法,tweet的一个replicate按id分;另一个replicate按author分。如此有by id的查询走按id分片的replicate;有by author的查询走author分片的replicate,自然就快并且可以可能可以不用跨replicate。


2个replicate采用不同的分片计划适应2种不同的查询模式,这个idea挺不错的。


Twitter的服务器架构的简要示意图:

 

 

 

Unicorn: Ruby 的HTTP服务器。

Kestrel : Twitter用Scala写的message queue。

Flapp: Twitter做的图存储FlockDB。

Gizzard: Twitter用Scala写的一个通用Sharding框架。

Crane: 将数据从MySQL搬到HBase/HDFS.

Scribe:  在各个服务器上收集各种log并汇总。

 

 

internet上的参考资料:

 

 

 

1. http://qconlondon.com/london-2009/file?path=/qcon-london-2009/slides/EvanWeaver_ImprovingRunningComponentsAtTwitter.pdf
2. http://qconsf.com/sf2010/file?path=/qcon-sanfran-2010/slides/NickKallen_DataArchitectureAtTwitterScale.pdf
3. http://strangeloop2010.com/system/talks/presentations/000/014/446/Weil-NoSQLTwitter.pdf?1289428944
4. http://assets.en.oreilly.com/1/event/29/Fixing_Twitter_Improving_the_Performance_and_Scalability_of_the_World_s_Most_Popular_Micro-blogging_Site_Presentation%20Presentation.pdf
5. http://www.youtube.com/watch?v=9X_ed6GPofQ
6. http://prezi.com/gaygypzxcxqa/a-birds-nesta-primer-on-flockdb-gizzard/
7. http://engineering.twitter.com/2010/07/cassandra-at-twitter-today.html
8. http://www.slideshare.net/kevinweil/hadoop-at-twitter-hadoop-summit-2010
9. http://www.slideshare.net/kevinweil/hadoop-pig-and-twitter-nosql-east-2009
10. http:// engineering.twitter.com/2010/03/unicorn-power.html
11. http://engineering.twitter.com/2010/04/memcached-spof-mystery.html

 

 

 

你可能感兴趣的:(互联网应用架构)