三字要诀
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上的参考资料: