淘宝图片空间手机版入口 淘宝图片空间在哪里



淘宝图片空间手机版入口 淘宝图片空间在哪里

文章插图

简介: 阿里巴巴旗下的淘宝和天猫作为国内最大在线购物平台 , 提供售卖的商品数目数以亿计 , 其活跃用户数量超过了7亿人 , 服务的商家的数量也在数千万量级 。面对性能和成本的双重压力 , 阿里数据库内核团队如何应对?


作者:旺德、志歉


图片空间是淘宝智能图片中心面向商家提供的免费图片存储管理服务 , 由于淘宝、天猫主站上累积的用户图片数据量非常大(想想淘宝/天猫的商家和消费者每天要上传多少图片!) , 并且增长量惊人 , 图片空间业务面临着非常巨大的存储空间和写入性能压力 。尤其每年双11之前 , 商家大量更新商品库存保有单位SKU(Stock keeping Unit) , 此时数据会急剧增长 。
淘宝图片空间手机版入口 淘宝图片空间在哪里

文章插图

淘宝/天猫每日新增大量商品、评论图片某年双十一前夕 , 当时阿里大部分数据库系统还使用的是InnoDB存储引擎 , 图片空间的研发同学梳理双十一线上风险时 , 咨询到DB磁盘及水位的容量是否足够 , 我们曾信誓旦旦地说:“没有问题 , 四个月前我们刚扩了一倍机器” 。可是没过多久就被现实打脸了:不到5个月的时间 , 业务数据累积了过去6-7年的量 , 每日增量急剧上升 , 扩容的磁盘很快也将不够了 。




最简单粗暴的方法当然是扩容 , 这样做风险最小 , 但却只能解决眼前的问题 。以现在数据的膨胀速度 , 未来难免多次扩容 。仅仅因为空间不足的问题 , 导致成本翻好几倍 , 这是难以接受的 。另外一个方法是换引擎 , 当时阿里主打高性能低成本的自研存储引擎X-Engine()刚刚成熟 , 相较于基于B+-Tree的存储引擎(例如InnoDB)数据页存在较多空间浪费 , 基于LSM-Tree的X-Engine数据完全紧凑排列 , 空间利用率更高 。而紧凑排列的数据施以前缀压缩技术 , 空间使用进一步减少 。
淘宝图片空间手机版入口 淘宝图片空间在哪里

文章插图

X-Engine的Data Block无需原地更新 , 可以方便使用通用压缩算法(zlib,zstd,snapy等)压缩 。所有位于LSM-tree低层次的数据都会默认压缩 。经过大量对比测试 , X-Engine默认选用了ZSTD压缩算法 , 但同时也保留了对其他算法的支持 。此外后台compaction会持续删除无效记录(LSM-Tree更新和删除都是写入新记录 , 旧版本记录不再被需要时 , 视为无效) , 持续释放冗余的空间 。因为上述技术特点 , X-Engine对存储空间的节省几乎到达了“变态”的程度 , 以至于当图片空间库的数据全部从InnoDB转移到X-Engine后 , 空间节省了7倍 , 如下图所示
淘宝图片空间手机版入口 淘宝图片空间在哪里

文章插图



为什么数据从InnoDB迁移至X-Engine后 , 取得了如此巨大的成本收益?