1、淘宝大数据量产品技术架构张轩丞(朋春)淘宝网-数据平台与产品部淘宝大数据量产品技术架构第1页关于张轩丞(朋春)淘宝数据平台与产品部(杭州)vi党,脚本语言兴趣者关注NodeJS,cnode小区组织者之一:我是aleafs淘宝大数据量产品技术架构第2页数据平台与产品淘宝网淘宝卖家供给商消费者搜索、浏览、收藏、交易、评价.淘宝大数据量产品技术架构第3页一些数字淘宝主站:30亿店铺、宝贝浏览10亿计在线宝贝数千万量级交易笔数数据产品:50G统计汇总结果千万量级数据查询请求平均20.8ms响应时间(6月1日)淘宝大数据量产品技术架构第4页海量数据带来挑战计算计算速度处理吞吐量存放存放是为了更方便地查询
2、硬盘、内存成本查询“大海捞针”全“表”扫描淘宝大数据量产品技术架构第5页架构总览主站备库RAC主站日志数据源MyFOXProm存放层数据中间层/glider查询层数据魔方淘宝指数开放API产品Hadoop集群/云梯计算层实时流数据DataX/DbSync/TimeTunnel1500节点,每日40000 JOB,处理数据1.5PB,凌晨2点结束,结果20T淘宝大数据量产品技术架构第6页今天话题关系型数据库依然是王道NoSQL是SQL有益补充用中间层隔离前后端缓存是系统化工程淘宝大数据量产品技术架构第7页关系型数据库依然是王道淘宝大数据量产品技术架构第8页关系型数据库有成熟稳定开源产品SQL有较
3、强表示能力只存放中间状态数据查询时过滤、计算、排序数据产品本质拉关系做计算SELECT IF(INSTR(f.keyword,)0,UPPER(TRIM(f.keyword),CONCAT(b.brand_name,UPPER(TRIM(f.keyword)AS f0,SUM(f.search_num)AS f1,ROUND(SUM(f.search_num)/SUM(f.uv),2)AS f3,ROUND(AVG(f.uv),2)AS f4 FROM dm_fact_keyword_brand_d f INNER JOIN dim_brand b ON f.keyword_brand_id=
4、b.brand_id WHERE f.keyword_type_id=1 AND f.keyword!=AND keyword_cat_id IN(50002535)AND thedate=-07-07 GROUP BY f0 ORDER BY SUM(f.search_num)DESC LIMIT 0,100淘宝大数据量产品技术架构第9页存放在DB中数据淘宝大数据量产品技术架构第10页分布式MySQL集群字段+条目数分片MyISAM引擎离线批量装载跨机房互备数据装载数据查询MyFOX淘宝大数据量产品技术架构第11页透明集群中间层MyFOX透明查询基于NodeJS,1200QPS数据装载路由计
5、算数据装入一致性校验集群管理配置信息维护监控报警淘宝大数据量产品技术架构第12页MyFOX-数据查询取分片数据(异步并发)取分片结果合并(表示式求值)合并计算缓存路由SQL解析语义了解查询路由字段改写分片SQL计算规则APC缓存X淘宝大数据量产品技术架构第13页MyFOX-节点结构MyFOX热节点(MySQL)15k SAS盘,300G*12,raid10内存:24G成本:4.5W/T冷节点(MySQL)7.2k SATA盘,1T*12,raid10内存:24G成本:1.6W/T路由表30天无访问冷数据新增热数据淘宝大数据量产品技术架构第14页小结依据业务特点分库分表冷热数据分离降低成本,好钢
6、用在刀刃上更有效地使用内存淘宝大数据量产品技术架构第15页SQL虽牛,不过假如继续用MySQL来存放数据,你怎么建索引?淘宝大数据量产品技术架构第16页NoSQL是SQL有益补充淘宝大数据量产品技术架构第17页全属性交叉运算不一样类目标商品有不一样属性同一商品属性对有很多用户查询所选择属性对不确定Prometheus定制化存放实时计算淘宝大数据量产品技术架构第18页Prom数据装载 PromHbaseHbaseHbase索引:交易id列表属性对交易1(二进制,定长)交易2淘宝大数据量产品技术架构第19页Prom数据查询求SUM(alipay)属性属性值笔记本尺寸13寸笔记本定位商务定位节点11
7、,2,3,4,5,6,7,8,9节点21,2,3,4,5,6,7查索引求交集节点21,2,4,6,7当地SUM运算(Hbase扩展)汇总计算写入缓存淘宝大数据量产品技术架构第20页Prom数据冗余明细数据大量冗余牺牲磁盘容量,以得到:防止明细数据网络传输变大量随机读为次序读淘宝大数据量产品技术架构第21页小结NoSQL是SQL有益补充“预算”与“现算”权衡“当地”与“集中”协同淘宝大数据量产品技术架构第22页其它数据起源Prom其它应用(淘词、指数等)从isearch获取实时店铺、商品描述从主站搜索获取实时商品数异构数据源怎样整合统一?淘宝大数据量产品技术架构第23页用中间层隔离前后端淘宝大数
8、据量产品技术架构第24页pengchun$tail/logs/glider-rt2.log127.0.0.1 14/Jun/:14:54:29+0800 GET/glider/db/brand/brandinfo_d/get_hot_brand_top/where HTTP/1.1 200 17 0.065淘宝大数据量产品技术架构第25页数据中间层Glider多数据源整合UNIONJOIN输出格式化PERCENT/RANK OVER JSON输出淘宝大数据量产品技术架构第26页Glider架构DispatcherController配置解析请求解析一级缓存actionMyFOXProm二级缓存
9、datasourceJOINUNIONfilter淘宝大数据量产品技术架构第27页缓存是系统化工程淘宝大数据量产品技术架构第28页glider缓存系统前端产品一级缓存data二级缓存URL请求,nocache?nocache?nocache?Min(ttl)ttl,http headeretag,http header淘宝大数据量产品技术架构第29页小结用中间层隔离前后端底层架构对前端透明水平可扩展性缓存是把双刃剑降低后端存放压力数据一致性问题缓存穿透与失效淘宝大数据量产品技术架构第30页回顾关系型数据库依然是王道分库分表、冷热分离NoSQL是SQL有益补充用冗余防止网络传输和随机读用中间层隔离前后端异构数据源整合缓存是系统化工程数据一致性、穿透与雪崩淘宝大数据量产品技术架构第31页矛盾之美SQLNoSQL计算时机“预算”Hadoop/实时计算引擎“现算”MySQL+中间层Hbase+中间层计算场所当地MySQL单机Hbase Region Server集中MyFOX中间层Prom中间层数据存放冷7200 SATA盘HDFS热15000 SAS盘+缓存HDFS+缓存淘宝大数据量产品技术架构第32页谢谢淘宝大数据量产品技术架构第33页