就以问答百科 为例说说大数据的故事。以下说的数字都不是真实的,都是我的假设。
比如每天都有1亿的用户在问答百科 上回答问题或者阅读问答。
每天产生的内容假设平均有1000万的用户每天回答一个问题。一个问题平均有1000的字, 平均一个汉字占2个字节byte,三张图片, 平均一帐图片300KB。那么一天的数据量就是:
文字总量:10,000,000 * 1,000 * 2 B = 20 GB
图片总量: 10,000,000 * 3 * 300KB = 9 TB
为了收集用户行为,所有的进出问答百科 页面的用户。点击,查询,停留,点赞,转发,收藏都会产生一条记录存储下来。这个量级更大。
所以粗略估计一天20TB的数据量. 一般的PC电脑配置大概1TB,一天就需要20台PC的存储。
如果一个月的,一年的数据可以算一下有多少。传统的数据库系统在量上就很难做到。
另外这些数据都是文档类型的数据。需要各种不同的存储系统支持,比如NoSQL数据库。
需要分布式数据存储,比如Hadoop的HDFS。
数据的流动上述1000万个答案,会有1亿的人阅读。提供服务的系统成百上千。这些数据需要在网上各个系统间来回传播。需要消息系统比如Kafka。
在线用户量同时在线的用户量在高峰时可能达到几千万。如此高的访问量需要数前台服务器同时提供一致的服务。为了给用户提供秒级的服务体现,需要加缓存系统比如redis。
机器学习,智能推荐所有的内容包括图片都会还用来机器学习的分析,从而得到每个用户的喜好,给用户推荐合适的内容和广告。还有如此大量的数据,必须实时的分析,审核,审核通过才能发布,人工审核肯定做不到,必须利用机器来智能分析,需要模式识别,机器学习,深度学习。实时计算需要Spark,Flink等流式计算技术。
服务器的管理几千台服务器,协同工作。网络和硬件会经常出问题。这么多的资源能够得到有效利用需要利用云计算技术,K8S等容器管理工具。还需要分布式系统的可靠性和容灾技术。
本人,@小马过河Vizit,专注于分布式系统原理和实践分享。希望利用动画生动而又准确的演示抽象的原理。欢迎关注。
关于我的名字。小马过河Vizit,意为凡事像小马过河一样,需要自己亲自尝试,探索才能获得乐趣和新知。Vizit是指Visualize it的缩写。一图胜千言,希望可以利用动画来可视化一些抽象的原理。