三字要诀
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上的参考资料:
本文介绍了Twitter工程师如何通过分片(partitioning)、索引(indexing)及复制(replication)等手段构建高效且可扩展的系统。针对Tweet的两种主要查询模式——byid和byauthor,Twitter采用了双复制(replicate)策略,确保每种查询方式都能快速响应,并尽可能减少跨复制查询。文章还列举了Twitter服务器架构中涉及的关键组件和技术。
175

被折叠的 条评论
为什么被折叠?



