“张轩丞 淘宝海量数据产品技术架构.pptx”主要探讨了淘宝在处理海量数据产品技术架构方面所面临的挑战以及解决方案。报告由淘宝数据平台与产品部的张轩丞(朋春)分享,他是一名脚本语言爱好者,关注NodeJS,并在cnode社区中担任组织者之一。
在海量数据背景下,淘宝每天产生大量的用户行为数据,如店铺浏览、宝贝搜索、交易、收藏和评价等。这些数据的数量级非常庞大,包括30亿次店铺和宝贝浏览、超过10亿个在线宝贝、千万级别的交易笔数。为了支持这些数据产品,淘宝需要处理50GB的统计汇总结果和千万级别的数据查询请求,同时保证平均响应时间为20.8毫秒。
面对这些挑战,淘宝采取了以下策略:
1. **计算速度与处理吞吐量**:淘宝需要快速处理大量数据,这对计算速度和处理能力提出了高要求。通过分布式计算和优化算法,以满足实时或近实时的数据处理需求。
2. **存储管理**:存储不仅要满足大数据量的需求,还要便于查询。淘宝选择了成本效益高的硬盘和内存,并利用分片策略将数据分散存储,以提高查询效率。
3. **数据库选择**:尽管NoSQL数据库在处理非结构化数据上表现出色,但淘宝认为关系型数据库(如MySQL)仍是核心,因为它们提供成熟稳定的产品,且SQL具有强大的查询和计算能力。同时,NoSQL被用作SQL的补充,用于特定场景。
4. **中间层隔离**:为了减轻后端数据库的压力,淘宝引入了中间层,如MyFOX,它是一个基于NodeJS构建的透明查询系统,能处理1200QPS(每秒查询数)。MyFOX负责数据装载、路由计算、一致性校验和集群管理,实现对后端数据库的透明查询。
5. **缓存策略**:缓存作为系统化工程,对于减少数据库访问压力和提高响应时间至关重要。淘宝可能使用了缓存技术来存储常用数据,以减少对数据库的直接访问。
6. **数据产品本质**:报告强调了数据产品的主要任务是“拉关系”和“做计算”,例如通过SQL查询对数据进行筛选、聚合、计算和排序,以生成有价值的洞察。
7. **分布式MySQL集群**:淘宝采用了字段+条目数的分片策略,使用MyISAM引擎以支持快速读取,同时实现离线批量装载和跨机房互备,确保系统的高可用性和数据安全性。
8. **MyFOX架构**:MyFOX由热节点(MySQL)组成,这些节点负责数据查询,而整个系统还包括数据装载、路由计算、一致性校验和集群管理等功能,确保整个数据查询服务的稳定运行。
通过上述技术架构,淘宝能够有效地应对海量数据带来的挑战,提供高效、稳定的数据服务,为商家和用户提供精准的数据分析和决策支持。