海量数据存储硬件平台解决思路

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网络与服务器领域,规划、运营、研发、服务等层面的实战干货,期待与您的共同成长。

网络平台部以构建敏捷、弹性、低成本的业界领先海量互联网云计算服务平台,为支撑腾讯公司业务持续发展,为业务建立竞争优势、构建行业健康生态而持续贡献价值!

前言

2015年5月1号,来自QQ相册和微信相册的当天统计,分别上传照片7亿张和5亿张。如此海量的规模需要多大的存储空间,采用怎样的软硬件解决方案,小编有幸请到我们的存储硬件技术大拿守锋和大家一起聊聊腾讯的存储硬件架构及有关存储的技术应用。

(一)存储数据的业务特征及类型

腾讯提供了包括社交,娱乐,支付及应用工具类等领域的服务,这些不同的业务对应多样化的存储模型,对存储的容量、性能和成本的要求也不相同。我们就从腾讯的一个典型应用来介绍腾讯数据存储的多样性和复杂性。

将上图挑选的几个主要应用进行业务存储特征进行分析,如下表:

把以上的业务特征抽象出来,分别有以下三类数据类型:

第一类是非结构化数据非结构化数据就是文件型数据包括图片、音频、视频和软件包等,这类数据从存储量来看占到互联网数据的主要部分;在这类数据中又可以分为三类,一是音视频类文件对时延非常敏感,文件大小相对较大;二是图片/JS类文件延时相对不是非常敏感,文件大小也较小;三是供下载的软件包类文件延时要求可更低,文件一般都较大。

第二类是半结构化数据也叫日志型的数据,你的一些上网过程中可能会产生一定的数据,譬如对好友QQ空间的评论,对朋友圈的评论点赞,在微信中的聊天内容,分享的链接、图片、视频等等。这类数据的特征是一般数据量较小,但是访问的频度非常高、对时延要求也较高。

第三类是结构化数据也叫数据库里面的数据,这类数据主要是用户的一些注册资料信息、游戏业务的装备信息、或者是一些关键的财务数据等;这类的数据量虽然绝对值比较小的,但是对于企业来说是非常非常重要的,它对可靠性、安全性的要求非常高,同时对时延也非常敏感。

(二)面临的挑战2.1 数据量巨大导致的成本压力

文章开始的地方提到一天上传的图片就有过10亿张,这折合的存储容量是巨大的;随着智能机越来越普及以及接入网络带宽越来越优,可以预期后续用户产生的内容会越来越多,存储的空间需求也越来越大;但当今互联网的存储服务基本是免费的,如何给用户提供最优质存储服务的同时节约存储成本将是个永恒的话题。

2.2 数据的可靠性要求数据不能丢失

腾讯的存储系统是面向UGC(User Generated Content)的存储,也许一封多年前的邮件、一张多年前的文档对用户来说都是非常关键的,一张小时候的照片找不回来了可能是非常大的遗憾,所以对于用户来说希望存储的有效期是无限期的,但设备的寿命是有限的,如何能够长期保持用户的数据无丢失将是技术上非常大的挑战。

2.3 数据的访问体验要求高

移动互联网时代,大多都是瘦终端,处理能力不强,同时,现阶段的中国,移动数据流量的成本还比较高。怎么让用户体验好,虽说是一个复杂的问题,但是存储一定是其中重要的一环。为提供给用户最佳的访问体验,如何提高读取数据的速度、如何并行的为用户快速响应一直是我们优化的方向。

2.4 运营运维的复杂高

数据量大意味着设备多,设备多意味着出故障的设备也多,面对几百万片磁盘,每时每刻都有出故障的服务器和硬盘。实时监控这些设备是否正常工作,预警故障,快速定位故障和维修这些存储设备需要一个系统来自动化的处理和监控系统。这个系统需要一些故障预警算法,存储的寿命监控,磁盘自动修复方法等等支撑,这需要一个长期的摸索过程。

总的来说一句话:就用最低的成本解决各种业务可靠的存储需求!也就是需要更好用的存储系统,更便宜的存储系统,更可靠的存储系统。

说起来容易做起来难,通常需要从存储部件的选择、软件系统架构和业务的应用模型三方面着手来解决这个问题。新的应用导致出现新的存储架构出现;同时老的系统需要试用新的存储部件等问题;新的技术应用需要改造老的存储系统。这些问题是一直推动着我们的存储系统在不停的升级改造中。

(三)存储硬件平台解决思路

为打造更好用的存储系统,更便宜的存储系统,更可靠的存储系统,腾讯开展了一系列解决存储系统问题的思路,希望起到抛砖引玉的作用,有以下几种思路,与大家共同学习之:

1)采用单位存储容量便宜的存储介质;

2)增加有效数据的存储比例;

3)提高单位存储密度和性能,减少运营费用,

4)减少数据的存储量,例如压缩,去重等技术;

5)细化存储分层,冷热分离;

6)统一存储平台,提高存储资源利用率。

3.1 采用大容量存储部件提高存储密度

简单粗暴地采购大容量的HDD硬盘,减少单位采购成本和提高存储密度,看似简单,其实也不简单。随着HDD硬盘的容量不断的增加,但是HDD硬盘的性能却没有增加,依旧和以前小容量的硬盘一样。所以单位存储容量的性能是下降了,同时故障恢复的时间也变长了,这个就是简单粗暴的采购大容量的HDD硬盘所带来的负作用。这个时候就必须修改系统软件来规避这个负作用。使用块RAID技术,基本原理就是先把一个大的磁盘化成很多小块,这些小块与集群内的其它服务器的硬盘上的小块做备份和RAID,如下图所示:

这个时候,当业务访问数据时,可以从不同的磁盘上同时获取有效数据并组合在一起,充分发挥多磁盘的性能。同时当一个磁盘的块坏掉的时候,也不用恢复整个磁盘的数据。恢复时间大大缩短。

3.2 BTFS,RAID算法的文件存储系统,提高有效数据比例

大家都知道GFS,一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。是以副本的方式来保证存储数据完整性的,副本由两份或者三份,导致有效数据的利用率只有0.5或者0.33.在一些低IPOS的存储系统,可以同通过采用类似RAID算法来提供数据完整性的保障,而不采用多副本的方式。BTFS就是这个采用类RAID算法的分布式文件系统。采用9+3的方式,9份有效数据,3份校验数据。在系统同时坏掉2台服务器的情况下也可以保证数据的完整性。整体的有效数据利用率就是9/12 = 0.75。比2副本和3副本的系统提高50%和127%的利用率。

3.3 采用高性能存储部件提升单位性能密度

过去腾讯的游戏的数据库是采用应用服务器+磁盘柜来解决的,随着技术的发展,PCI-E SSD的存储设备出现,在性能方面是磁盘柜的4~6倍,且占用机柜位置少,功耗低,TCO(Total cost of ownership)急剧下降。

在IO密集型应用方面,大家知道LINUX的IO调度层效率不高,对于接SSD这样的设备,不能充分发挥其性能,通过对LINUX的IO调度层的打桩模拟测试,最高性能只有420K左右。而一个SATA接口的S3500的IO可以达到70K,6个左右的SATA SSD就超过了LINUX的理论上线。在腾讯,使用SSD的机型一般是12个SATA SSD,所以不能充分发挥SSD的性能。采用NVMe的SSD,优化了IO调度机制,从而充分的发挥了SSD的性能,利用SSD的性能,从单位性能TCO方面看,也是有效降低TCO的,腾讯计划在后续全面使用NVMe的U.2接口SSD。

3.4 采用专用压缩处理部件,减少数据存储量

腾讯相册照片的上传数量爆发式增长,需要大量的计算资源来处理图片的压缩转码,同时需要大量的存储空间,对业务的成本压力增大。如上图所示,采用新的压缩算法,把图片从JPG格式转成WEBP格式可以减少存储空间,通过采用并行处理器来提高压缩转码效率。

有了高效的压缩转码缩放服务器,可以直接存储原图,不需要再存储套图了(为了适应各种移动终端不同分辨率的需求,需要一组尺寸大小不同的图片),当用户需要套图的时候,直接从原图通过压缩转码缩放服务器实时转换,如下图所示,把现有存储套图的方式改为只存储原图的方式,可近一步节省存储空间。

(四)腾讯应用存储架构

为了对存储的集中的统一管理维护,使需要存储的各种业务把对存储的工作解放出来,把精力放在应用开发上,腾讯构建了统一存储平台,上层是根据腾讯业务数据模型构建云化的存储服务供业务调用,下层是根据业务存储性能、成本的诉求构建不同的介质集群,具体如下:

4.1 云化的存储服务

结合腾讯业务的数据模型,为了整合腾讯公司众多业务的不同存储需求,让业务专注于业务开发和服务,不要为后端的基础存储分散人力,腾讯在软件平台上提供了对应的云化存储服务:

针对非结构化数据(文件类)提供了CBS(Cloud Block Service)服务它是SAN(Storage Area Network),CBS盘以普通块设备的方式挂载到服务器上,可以作为服务器系统盘分区或者数据盘分区。使用方式上与本地块设备完全相同,能够以裸盘或者挂载文件系统的方式来使用。

同时也提供CFS( Cloud File System)服务,它是NAS(Network-attached storage)一种,对应用而言,CFS就是一个无限空间、超级安全、超高吞吐的“大磁盘”。针对结构化数据(数据库类)提供了CDB(Cloud Database)服务它为第三方开发人员提供的DB存储解决方案。

主要特点包括:高性能、高可靠的Mysql服务;同时整合自动化管理工具,最大程度减少开发人员在部署、监控、扩容和故障恢复等方面的投入,使开发者可以集中精力进行产品开发和运营。针对半结构化数据(key-value类)提供了CKV(Cloud Key-Value)服务为第三方开发人员提供的KEY-Value存储集群的解决方案,支持开源的memcached协议。

4.2 数据落地存储服务

云化的服务,其最终落地的数据要求的性能也是不同的,更具不同业务性能的需求,再结合现有的存储硬件的IO访问速度及采购试用成本,作为数据落地的介质分层,搭建不同的存储集群,分别如下:

  • 内存DDR为存储介质的TMEM存储集群;
  • SATA SSD为存储介质的TSSD存储集群;
  • 7200 RPM SATA HDD为介质的TFS存储集群;
  • 5900 RPM SATA 云盘HDD的BTFS存储集群。

可以看到如上图的金子塔的存储结构,各种存储介质组成的存储集群及对应的云化服务和每TB数据的IO响应速度范围。其中绿色部分为将来技术发展后,可能的数据存储集群和应用场景。

(五)未来展望

软件定义数据中心(Software-Defined Data Centers,简称“SDDC”)正在成为用户谈论的热门话题。它让数据中心转型为 IT 服务中心,使数据中心能够更快、更灵敏地为应用程序提供支持,从而提高开发人员的工作效率。从多个角度来看,我们可以将SDDC视作从服务器虚拟化向数据中心虚拟化演变的结果。SDDC架构模型利用软件来定义数据中心资源,特别是计算、网络、存储和安全性资源,以使这些资源不再受到硬件的限制,并实现与这些资源相适应的服务级别灵敏性。

作为SDDC技术架构的支柱,软件定义存储 (Software Defined Storage,简称“SDS”) 将硬件存储资源整合起来,并通过软件的编程来定义这些资源。其目的依旧是:用最低的成本解决业务可靠的存储需求!

随着新技术,新部件的不断出现,腾讯的存储系统也需要不停地改变,以适应更快,更大容量的存储部件的应用。例如SMR的大容量的硬盘,SFF8639的NVMe的PCI-E SSD硬盘,PCM介质的存储部件以及可以存储50年的蓝光存储,这些都是我们降低存储系统成本的方向。

在存储系统架构方面,云化的存储服务随着万兆网络的普及,大力解决现有的带宽瓶颈问题后,可以大力推广云存储方案,收拢大大小小各种业务的不同层次的需求,提高存储设备的利用率,可以从公司层面来降低整个存储成本。

注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市腾讯计算机系统有限公司”所有,未经官方授权,不得使用,如有违反,一经查实,将保留追究权利;

注2:本文图片部分来至互联网,如涉及相关版权问题,请联系judithliu@tencent.com。

原文发布于微信公众号 - 鹅厂网事(tencent_network)

原文发表时间:2015-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吾真本

插图版:领域驱动的微服务架构设计工作坊实施步骤目的步骤

本文参考了我的同事肖然、王威和刘尚奇于2017年7月22日在ThoughtWorks北京办公室所讲授的“领域驱动的微服务架构设计——实战工作坊”的课程内容,同时...

2192
来自专栏IT大咖说

哪些是数据库智能化运维必踩的坑?

内容来源:2018 年 11 月 10 日,SOUG联合创始人周亮在“2018 SOUG年度数据库技术峰会”进行《Oracle AI 性能优化指南探讨》的演讲分...

913
来自专栏Kirito的技术分享

以Dubbo为例,聊聊如何为开源项目做贡献

Github 上有众多优秀的开源项目,大多数 IT 从业者将其当做了予取予求的工具库,遇到什么需求,先去 Github 搜一把,但有没有想过有一天自己也可以给开...

1403
来自专栏全华班

微信公众号、小程序、接口统一集成开发平台框架

RhaPHP微信平台管理系统,支持多公众号管理,小程序开发,APP接口开发、几乎集合微信功能,简洁、快速上手、快速开发微信各种各样应用。简洁、好用、快速、项目开...

5452
来自专栏腾讯NEXT学位

NEXT讲坛丨《webpack 4 如何实现一个插件》公开课

1994
来自专栏IT大咖说

所见即所得-基于Node.js的页面数据实践

摘要 数据抓取是企业信息化的根基和第一步,只有利用先进的技术作好了信息抓取工作,才能为信息化带来最大的价值。懂球帝高级开发工程师邓佳龙用五个字就概括了数据抓取的...

36311
来自专栏纯洁的微笑

小型系统如何“微服务”开发

https://www.cnblogs.com/wcd144140/p/9782823.html

1542
来自专栏Java帮帮-微信公众号-技术文章全总结

测试与测试用例【面试+工作】

软件测试的流程可分为:需求分析,测试计划,测试用例设计,测试用例执行,BUG提交分析,测试报告的编写。

2652
来自专栏数据和云

招商银行王龙:金融科技银行数据架构设计的13条守则(含PPT)

作者简介:王龙,招商银行数据中心MySQL资深架构师,将MySQL引入招商银行,并从无到有建设MySQL生态,解决了MySQL在银行领域使用的诸多问题。

2195
来自专栏互联网数据官iCDO

5招教你轻松获得手机App好评

引言:在应用程序方面,意见和评论也会影响到应用程序商店搜索结果的可见性,以及它们在app store中出现的概率。因此,如何能获得更多的好评呢?本文教你5招。 ...

3865

扫码关注云+社区

领取腾讯云代金券