平均来说,每天有5亿条推文被分享。这可以进一步分解为每秒6000条推文,每分钟**350000
条推文**,以及每年约2000亿条推文。🤯
尽管每条推特只有280个字符长,但推特每天生成的数据超过12TB。这相当于每周84兆字节和每年4.3兆字节。我们每天发送的推特会产生大量数据。
在此处可视化
早些时候,Twitter使用MySQL,MySQL非常快速和健壮,复制也很容易。它使用了时间分片,即来自同一数据范围的推文存储在同一分片上。这里的问题是,推特最终填满了一台又一台机器。
每隔几周建立一个新集群的成本非常高。此外,他们还面临着流量问题,因为人们对现在发生的事情(最新消息)很感兴趣。
虽然Linkedin在其内部大数据技术方面取得了巨大成功,如卡夫卡、Smasa、伏地魔和浓缩咖啡,但推特的任何努力都没有特别成功。😮
推特构建了一个出色的数据存储框架,Gizzard用于创建数据存储。Gizzard是Twitter在MySQL之上构建的分布式数据存储框架。😄
许多现代网站需要快速访问无法在一台计算机上高效存储的大量数据。解决这个问题的一个好方法是“切分”数据,这意味着将其存储在多台计算机上,而不仅仅是一台计算机上。分区和复制经常用于分片解决方案。分区将数据分成小块,并将其分布在多台计算机上。使用复制方法跨多台机器保存数据的多个副本。该系统可以有效地回答大量问题,因为每个副本都在自己的机器上运行,并且可以对查询做出反应。
什么是砂囊
Gizzard是一种网络中间件服务,用于管理跨任意后端数据存储的数据拆分。
2、分区规则存储在转发表中,该转发表将键范围映射到分区。
3.每个部门使用声明性复制树来处理自己的复制。
4.每当我们发推特时,它都会存储在内部系统“T-bird”中,该系统建立在Gizzard的顶部。二级索引存储在“T-flock”(基于Gizzard)中,使用“Snowflake”生成唯一ID。FlockDB用于ID到ID的映射。它基本上存储ID之间的关系。
gizzard如何处理复制和分区
- 使用复制树处理复制
可以在每个碎片的转发表中提及物理或逻辑碎片。物理碎片表示特定的数据存储后端,例如SQL数据库。另一方面,逻辑碎片只是其他碎片的树,每个分支表示数据的逻辑转换,每个节点表示数据存储后端。这些分支级别的逻辑更改通常是将读写操作传播到分支子体的规则。
- 分区使用转发表处理
Gizzard通过将数据范围映射到特定碎片来处理分区。这些映射保存在转发表中,该表描述了数值范围的下限以及该范围内的数据所属的碎片。
提供了一个自定义哈希函数,为生成属于转发表中某个范围的数字的数据提供键。这种方法不同于一致散列。
优点:
-
容错,其设计方式可以避免单点故障。
-
迁移数据变得更容易,这有助于处理硬件故障。
-
它旨在跨任何可用网络复制数据,可以是关系数据库、Lucene、Redis或任何你能想象到的东西。
参考文献:
[1]blog.twitter.com/engineering/en \u us/a/2010/i...
[2]highscalability.com/blog/2011/12/19/how-twi..
[3]adweek.com/performance marketing/twitter-op...
[4]youtube.com/watch?v=5cKTP36HVgI