存储系统的那些事
漫衍式存储最容易处置惩罚的问题域照旧单键值的存储,也就是所谓的 Key-Value 存储。只有一个 Key,就意味着我们可以通过对 Key 做 Hash,或者对 Key 做分区,都能够让请求快速定位到特定某一台存储机械上,从而转化为单机问题。这也是为什么在数据库之后,会冒出来那么多 NoSQL 数据库。由于数据库和文件系统一样,最早都是单机的,在伸缩性、性能瓶颈(在单机数据量太大时)、可靠性、可用性上遇到了相同的贫苦。NoSQL 数据库的名字实在并不适当,他们更多的不是去 SQL,而是去关系(我们知道数据库更完整的称谓是关系型数据库)。有关系意味着有多个索引,也就是有多个 Key,而这对数据库转为漫衍式存储系统来说很是倒霉。
七牛云存储的设计目的是针对海量小文件的存储,以是它对文件系统的第一个改变也是去关系,也就是去目录结构(有目录意味着有父子关系)。以是七牛云存储不是文件系统(File System),而是键值存储(Key-Value Storage),用时髦点的话说是工具存储(Object Storage)。不外七牛自己喜欢把它叫做资源存储(Resource Storage),由于它是用来存储静态资源文件的。蛮多七牛云存储的新手会问,为什么我在七牛的 API 中找不到建立目录这样的 API,基础缘故原由照旧受文件系统这个经典存储系统的影响。
七牛云存储的第一个实现版本,从手艺上来说是经典的 3 副本的键值存储。它由元数据集群和数据块集群组成。每个文件被切成了 4M 为单元的一个个数据块,各个数据块按 3 副本做冗余。可是作为云存储,它并不仅仅是一个漫衍式存储集群,它需要分外思量:
- 网络问题,也就是文件的上传下载问题。文件上传方面,我们得思量在相对比力差的网络条件下(好比2G/3G网络)怎样确保文件能够上传乐成,大文件(七牛云存储的单文件巨细理论极限是1TB)怎样能够上传乐成,怎样能够更快上传。文件下载加速方面,思量到 CDN 已经生长了 10 多年的历史,很是成熟,我们决议基于 CDN 来做下载加速。数据处置惩罚。当用户文件托管到了七牛,那么针对文件内容的数据处置惩罚需求也会自然衍生。好比我们第一个客户就给我们提了图片缩略图相关的需求。在音视频内容越来越多的时间,自然就有了音视频转码的需求。可以预见在Office文档多了后,也就会有 Office 文档转换的需求。
以是从手艺上来说,七牛云存储是这样的:
七牛云存储 = 漫衍式存储集群 + 上传加速网络(下载外包给CDN) + 数据处置惩罚集群
网络问题并不是七牛要解决的焦点问题,只是我们要面临的现实难题。以是在这个问题上若是能够有足够专业的供应商,能够外包我们会尽可能外包。而漫衍式存储集群的演进和优化,才是我们最焦点的事情。早在 2012 年 2 月,我们就汇海了新一代基于纠删码算术冗余的存储系统的研发。新存储系统的关注焦点在:
- 成本。经典的 3 副本存储系统虽然经典,可是价格也是高昂的,需要我们投入 3 倍的存储成本。那么有没有保证高可靠和高可用的条件下把成本做下来?可靠性。怎样进一步提升存储系统的可靠性?谜底是更高的容错能力(从允许同时损坏2块盘到允许同时损坏4块盘),更快的修复速率(从原先3小时修复一块坏盘到30分钟修复一块坏盘)。伸缩性。怎样从系统设计容量、IO吞吐能力、网络拓扑结构等角度,让系统能够支持EB级此外数据存储规模?关于伸缩性这个话题,涉及的点是全方位的,本文不睁开讨论,后面我们另外自力探讨这个话题(让我们把焦点放在成本和可靠性上)。
在经由了四个大的版本迭代,七牛新一代云存储(v2)终于上线。新存储的第一大亮点是引入了纠删码(EC)这样的算术冗余方案,而不再是经典的 3 副本冗余方案。我们的 EC 接纳的是 28 + 4,也就是把文件切分为 28 份,然后再凭据这 28 份数据盘算出 4 份冗余数据,最后把这 32 份数据存储在 32 台差别的机械上。这样做的利益是既自制,又提升了可靠性和可用性。从成本角度,同样是要存储 1PB 的数据,要买的存储服务器只需 3 副本存储的 36.5%,经济效益相当好。从可靠性方面,以前 3 副本只能允许同时损坏2块盘,现在能够允许同时损坏4块盘,直观来说这大大改善了可靠性(后面讨论可靠性的时间我们给出详细的数据)。从可用性角度,以前能够接受 2 台服务器下线,现在能够同时允许 4 台服务器下线。
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。