中国数据存储服务平台

微软徐明强:微软云存储架构概览

DOSTOR北京报道:2014(第十届)中国存储峰会2014年2日在北京盛大开幕。作为中国存储产业的十年盛会,峰会以“掌控数据经济·重塑商业价值”为主题,邀请超过1500位学术界顶级学者、产业精英和企业用户出席,围绕数据经济和商业价值两大话题,从云计算、大数据、软件定义和闪存等四个技术方面举行一系列主题演讲和圆桌会议。

在下午的云存储应用论坛(云存储下的数据经济)上,微软Azure首席架构师徐明强博士,他为我们带来的演讲题目是微软云存储架构概览。以下是演讲实录:

徐明强:我是来自于上海,在上海我们有一个开发团队,做云存储,很多人说微软做云存储,一个桌面OS的公司为什么要做云存储?大家不要笑,确实在一开始的时候,我们是一个队伍,经过验证这样做代价太高,所以我们从头写了一个云存储。

首先它是业界最可靠,2013年曾经写了一个研究报告,参加测试的有三大云运营商,亚马逊、微软、谷歌,还有其他的一些厂商。如果对这个报告感兴趣的可以想我索取,在那其中他讲到从性能上、从可靠性上、综合角度和最少错误上微软是排在云存储的第一。

讲到云存储大家都知道,我们在企业里的文件系统最大的不同是当你把文件放在文件系统上,你并不能够拿到你的手机,要访问它还是很难的,但是云存储是你只要放在上面,任何地方都可以访问。而且它是高持久,有人说是不是你们家的墨水好,你写到磁盘上就抹不掉。讲到高持久,我有很多要跟大家来分享,我们有什么样的技术,整个硬件的硬盘是三个9,但是我们在拿我们的软件技术让它达到了5个9。一开始要在存储上我需要多少多少存储量,使用是慢慢才把这个用满,云存储是按实际收费,我们是用开放的API和工具,讲到大规模是个什么概念呢?首先有19个不同的地区,这个是全球三大云运营商分布最广的,原因是企业客户想要和他们的客户零距离接近,想让他们的服务当用户使用的时候是最短的延迟、最高的带宽,就是让我们在物理上把它铺得最宽。
    第二,Office365,在去年我们的云存储就有三倍的增长,在座的有专门是负责数据中心的,这是一项非常艰巨的任务,艰巨在于当服务器、硬盘到了我们的数据中心门口的时候,那个秒就开展长,多放一天就是一百万美金的损失。所以要尽快地把这些服务器投入生产,我们去年有这样好的增长。
    讲一讲现在使用的情况,我们有35万亿目标对象,当人们数不清的时候,就抬头望天说,和天上的星星一样多,告诉大家35万亿是银河系恒星的70倍,大家知道已经数不清了。
    第二,每秒钟有350万个请求进去,已经有700万个请求进入我们的云存储,扩展性大家可以想像,每天有3.5个PB的入口,作为云运营商发布数据是不太情愿,因为过了一天日新月异,很多数字就改变,作为云存储我们的队伍非常兴奋,经常我们是供不应求,造完一个数据就卖光了,好在我们在北京、上海都有数据中心,我们拒绝了一个全世界最大的客户,留下来是为了给在座的各位使用。
    最后一个,我要强调很多人使用云磁盘性能肯定很差了,我相信云盘最多的就是500个IOPS,我们最新推出的云服务上面支持超大规模的服务,大到你可以装32个盘,这个虚机可以达到每秒钟5万个IOPS,而且这是每个虚机,你可以加更多的虚机,可以扩展。
    讲到这里大家就会问说,你到底支持什么样的东西才可以放上去呢?首先,我们有这样四种,BLOB是大容量的文件,Table是结构化,文件是基于我们微软的SNB的文件。
    我们先讲第一个大容量文件,大家想问那么多,最多的是什么呢?Blob里面装的是文件,很多视频文件还有很多照片,到底是什么样的文件?什么样的照片?我可以告诉大家,基本上我们的云存储就好比是一个不夜城,越到晚上越热闹,尤其晚上什么时候开始热闹呢?是到晚上基本上传数据的人是在卧室里头,是当你的手机最后晚上睡觉的时候充电,你没有把Wifi关闭的时候,这些手机开始往上面倒数据,你的照片、各种各样应用的文件就开始倒到上面去,这是上面最多的。所以消费者所创造的数据是在我们上面最多的,我们微软也是一个互联网公司。还有就是有很多Blob,刚才我说有很多虚机的印象,它是在不同的地方可以更新。
    其他Blob也可以做一些大数据,像我们微软支持Hadoop,很多就是把日志和分散的数据放到这个Blob里头,然后用Hadoop来做。
    第二点Table,Table是一个建职表,大家用的建职表的就会知道,建职表的时候能装多少啊?问这个问题的时候我就知道你们可能比较喜欢用的是哈希建职表,按照用户的建职来决定放在什么地方,当一个服务器开始满的时候,你就开始想想要重新改变你这个建职了,这样才可以不断地把它扩展到别的地方去,我们不是用哈希表,哈希表在我个人认为不是一个很好的平台级服务的做法。我们这种云存储的建职有一个用户是XBOX,他用了我们的Table以后,他经常是数据库,通常数据库都有大小,他用了这个以后,他发现就往里头扔,扔到了上万亿,他还发现好像速度没有变化嘛,可扩展性有由此可见,所以非常方便,基本上你就弄一个账号,往里就塞,尤其那种IOT的数据,记录的数据也是特别适合的。
    下面再看Q,不算是传统的存储,但是这边Q存储主要是用来做不同处理单元之间同步用,用小的MXNQ和IBM的NQCS比较类似。
    最后一个也是我个人最喜欢的,我跟一个客户讲到这个以后,他就说我要上你们微软云,原因是File,大家知道曾几何时有一个公司很快被微软取代,File就成为标准的文件服务器,这个所用的协议就叫SNB,这个意味着什么?当我们支持File意味着所有Windows的应用直接拿出来放到云说,不用修改,N多家的云运营商只有我们一家支持这个,因为我们有了File的支持,我们微软云计算就可以让我们的用户上传他的应用到云上去。
    讲了这个以后,大家可能还有个问题,你们到底存了多少数据?我跟大家讲一讲我们很快要达到一个目标,一个(T)就相当于我们桌上的书从地球开始一直摞起来,摞到冥王星再回来,这么多数据里头我们也不知道哪一块是某某用户的数据,而且不知道任何时候哪以后用户会出来加很多数据进来,所以这个大的挑战我们该怎么样去管理这么大的数据呢?这就是我们用的一个方法,也是很简单一个方法,就是每一个I/O的操作都需要给我们一个(K),根据数据类型的不同来反别。首先,每一个用户可以有一个或者多个账号,我个人账号已经数不清了,很多很多账号。这个账号要用Blob就是HPPT,任何名字可以往上面放,也可以有多个斜杠,这个就成为了我们管理从冥王星来回那么多数据的一个方法。
    有了这个以后,很快介绍一下我们微软的其他的云服务,首先大家知道尤其在中国导入一个TB的数据,我建议大家千万不要这样做,通过网络首先这个带宽就小,要花很长的时间,即使倒进去了以后,你可能会发现从微软收到一个近一千块钱的表。我们现在在国外已经支持用快递的方法把硬盘寄到数据中心,然后通过我们的门户,或者通过API来创建和监控导入和导出的作业,而且这个磁盘中间是经过加密的,当它被快递当中是没有任何人可以解开的,当它到了数据中心解开它的密钥数据人员也没有,所以很安全。
    我有很多共享的文件夹,我要往里面扔很多文件,我们这项服务是可以让你锁定某些可以上传的文件,增加和删除的时候在云里面都相应地得到体现。既然数据得到的灾备了以后,下一步我能不能数据中心都能够灾备?现在在国内讲到数据中心的灾备还没有如此热,主要建一个异地的灾备,从数据中心基础设施的代价非常高,这一点我可以向大家推荐,这样的服务就是把Windows当作你的最后灾备的对象。我们有很多投行,在纽约的投行非常喜欢这个,因为他们在纽约的投行经常和这边建一个数据中心,和那边建一个数据中心,即使没有灾难发生的时候,他们在那边的数据中心的硬件、规格和实际投入生产是完全一样的,换句话说那个就是投入生产的机器,所以经常很多高档的机器三年以后几乎没有用过就被换掉了,现在有了WindowsAzure这个服务了以后,他们如此地喜欢,一周就要做好几次这样的测试。
    最后讲到无底存储服务,多少人都希望有一个文件服务器,这个文件服务器是没有底的,再往里存数据都不会满,这是我们微软购买的一个公司,我个人认为是购买的最好的公司之一,它叫一个很小的一体机,这个一体机对企业来说像是一个服务器,你可以指定哪些数据只能存在本地,哪些是可以放在云上的。这个无底存储服务可以把你的数据加密存到云上,当你要使用的时候,它要从云上拿下来,那有人就问要花多少时间?这个当然不如本地那么快,根据网络的具体情况,但是这个自从我们买了它了以后,这个东西卖得是非常非常好,最近已经进入国内了。
    当然,任何的云服务都需要它的工具库,跟大家说微软是一个拥抱型的公司,我们支持各种各样的,包括我们支持的手机也是有IOPX,还有安卓、Windows。
    最后一个是拷贝数据都是比较头痛的事情,因为数据都比较多,在那之前数据拷贝是我们上海团队做的,在我们做之前市面上有非常非常多的有要收费的,有免费的,有非常多的工具,我们做出来了以后,基本上这些都没有了,为什么呢?我们是所有人的十倍以上的。而且当你要传上百万个文件的时候,中间有时候都会有各种各样的故障就断掉了,其他的工具你早上起来发现传到一半断掉了,对我们来说你的精力是非常愉悦,我们会自动重启完成数据拷贝。就连俄国的初创公司要我们的源代码,想知道我们为什么能做到比别人快十倍。
    讲到这个了以后,很多衡量的标准,是你们公司自己用不用自己的云存储?我很高兴告诉大家,比如说SKYPE就用我们的云存储,他们之前也是有自己的数据中心,结果跑到我们这里,就问他们一个问题你们每一个GP的开销成本是多少呢?回答是一个美金,后来说不行,你必须要上Azure。这些都是因为WindowsAzure的云存储成本非常低、可靠性非常高。
    其中一个XBOX我要讲讲,他们问这样一个问题,当云里头有你用不完的存储,你要拿来做什么?你要给你的游戏玩家做什么样一个东西呢?他们想到了一个东西,他们让玩家在玩的时候随时开始录像,他在网上玩的时候可以把像录下来,我开车的时候别人要超过他,他就录下来,录完了以后,我们还可以自动帮他做,或者是他的朋友的,他就发一个邮件给那个朋友看,他说我放到U2上面去了,相互之间自从发布以后非常非常火,短短一年之内已经有一个PB的视频数据在上面了,我们帮它来做这样的管理。
    讲这么多了,我们就讲一讲今天说到是架构,我们还要讲讲架构,我们的架构不算太复杂,也不是太简单。刚才讲到了从这里冥王星来回这么多数据,是要经过索引,就像一个图书馆,图书馆里头有一些索引,同样当我们分数据的时候,也是通过URL去访问,第一步是存储定位服务,其实有一个DNS是需要被解析的,就会解析到一个我们的一个一个邮戳,数据从SLB进来,可以选择到多个Front Ends里面,再下面到分区层,这么多数据从冥王星再回来所有的索引都存在这里,这底下就存了所有从冥王星到再回来的数据,我们全球有几百个这样的数据中心。
    我们有跨地区数据的备份,我们是唯一一家云运营商可以让在座各位的数据经得起地震这样一个灾难,当然在美国飓风就不一定有可能,飓风有时候大的要跨几百英里的。
    我们下面具体讲一讲细节,从最底层开始讲起,这个文件系统上面首先有一点要强调的就是这个文件我们是每一份数据要存三份,在上面我们对所有的数据都要做CRC,讲到这里就要讲我们的可靠性,就是我刚才一开始提到那家公司,对很多云存储的厂商做了一个测试,这个测试要一个月,基本上要读写上亿次,很多写是一开始,一个月之前无的开始就写进去,他的目的是要看你丢不丢数据,微软是唯一一家公司没有出现任何数据错误。为什么其他人出现错误?对不起,我不知道,我只可以告诉你我们为什么不出现错误?大家知道我们真希望存储是一个墨水,写上去就不会抹掉,但是这是一个电子产品,我们是每过两周都要走一个作业,把所有磁盘上的数据都要读出来,然后看这个CRC上对不对?不对的话,就要立刻恢复数据,把这些数据再重新写进去,我们是这样保证在座各位的数据是不丢失的,所以我有句话,就是每一个企业的数据宝贵,我们且存且珍惜。
    下面在分区层,分区层存了所有的索引,质征说这个文件是放在下面哪一个服务器,所以这些索引都是分发在不同的P服务器上,很多P服务器和底下的是不一样的。
    再往下面就是前端,很多解析就在这上面,下面这一层就是让大家看到我们是怎样创建三份数据,这要讲到很重要的一个,不是很多的云存储都放三份吗?要问清楚,如果有一个云运营商跟你说我们也要放三份,你要问他第一份和后面两份是不是同时放?因为很多云运营商他为了显示出自己写的速度非常快,他只放一份,就跟你说写好了,其实还有两份还没写,所以他在后台用异步的方法这样做,但是问题在于如果他在没有备份完的时候前端一个硬盘坏了,数据就丢失了,大家说这种发生可能吗?不就是数据吗?我写的数据量不大它不是很快就可以复制好了吗?大家听我一句话,在云存储中心是非常忙的,白天黑夜是不会停歇的,很多时候如果一个机器死了,它上面所有的副本都要在其他地方再促备份,很多很多这样的作业,最后你就会发现很多时候你要异步做的事情通常是没有时间去做,到了一定时间不得不做的事情就变成一个必须要做的事情。当每次手动做的时候代价就上去了,而且手动的时候是最容易出错的。包括我们三大运营商,亚马逊、微软、谷歌,都是三种同时写上告诉你写成功。
    我们看分区层,分区层它分了很多很多的索引,所以这些索引我们不知道哪些索引在哪一天的任何时候会突然变成热了,突然有很多气球进来,我们怎么做呢?首先我们的分区层是这样,分区层不是哈希分区,我们是按照ABCD五这样分层,刚才我不是说我的账号是P,我们起头就是P,整个所有的数据把它理解成从AAA到ZZZ这么大的空间当中,所以我们上来就把这些分区放到不同的分区服务器上。就当是一个快照,P的联络图就放到每一个FT上面。如果A到H之间打头的请求就会发到第一个上面去。大家说这有什么难的?首先,还是回到刚才你不知道,什么时候突然有一个PT,那个地方有一个KEY,我哪一天开始疯狂地往里发请求,就像这边说每一个区间就非常热,我们动态地监控到这一点的时候,如果这个是A到H的话,我们就把它分到A到F,G到H。它就分流了,把所有G到H的分流到另外一个PT上,很多基于哈希这种云存储最后不得不移数据,到了移动装满了之后还要移数据,这时很糟糕的一件事情,以后移数据的时候用得最多的是网络带宽,还有很多是CPU的资源。
    再讲我们是如何达到稳定性的,因为在数据中心当中大家遇到的问题是很多时候会掉电?在掉电的时候怎么保证有足够的副本让用户能够读到呢?我们三份拷贝就要分三个不同的RACK里头,同时我们是一行一行做更新的,要分三个不同的行,最大限度躲开这两个问题。
    最后我们要讲一下强一致性,这个也是企业用户,刚才我讲到为什么企业用户非常喜欢Windows的原因,有多少人知道最终一致性这个说法?我想有很多人都知道,原因就是CAP理论,高可用和强一致性以及网络分区的容错这两个不可全得,这三个中间你只能挑两个。亚马逊很多云存储服务商上来就说我就挑网络分区和高可用吧,当你写进去一个东西的时候,你要去读的时候,很可能还没有更新,你可能还读的是老的数据。企业说这我可不要,我很多应用都是依赖于当我写到存储里头我再读出来应该是最新的,我很多应用都没办法改,我连原程序都没有,我怎么可能改呢?包括今天很多有理性的程序员都是这样思维,当我写成功了以后,读出来应该是更新的,这就是我们微软说我们三个都要做,大家说你不是和这个理论不符合了吗?我们所做的是把我们的数据中心建造成一个让网络分区基本上不可能发生,大家看我们的数据中心,第一个感觉是怎么样?最底下是每一个存储是在这里,每一个RACK上去以后有36个和第二级,每一个RACK有36级网络通路,是一个非高冗余的网络通路,因此我们就达到了强一致性和高可用。
    最后我说一个,刚才强调了云存储我觉得是比较难的,难在哪里呢?又让马儿跑得快,又让马儿跑得不摔跤,又让马儿少摔跤,大家知道只要有足够的有钱好办事,有足够的钱的时候我可以给你稳定性非常好的存储,有足够的钱的时候,我可以给你有足够性能的好的存储。因为我们有三家竞争得非常厉害,大家可以关注过去几年内所有降价的很多时候都在存储上降价,今天的云存储也就是一个百分点吧。说不是因为数据的隐私性的话,任何人在自己做云存储是非常任何意义的。
    讲到这些就要讲到在我们云存储最大的开销,如果你打开我们的存储你会发现磁盘是占最大的比例,所以能够节省磁盘是非常非常对我们有益处的。在一个数据中心里头是存三份拷贝,一开始是存三份,在后端的时候我们会启动一个程序,把数据分成编码块,这样做的好处就可以不用存三份这么大的空间,就可以达到三份的高持久性,一般标准的算法是1.5,你存1.5份,开销是50%,你就可以达到存三份这样的效果,我们这里达到1.29,是业界最好的,大家想知道怎么做就可以去读这篇文章,我们把我们的做法也发布在这个文章当中了。包括今天我讲的很多内容,我们也是有一个拷贝,先来先到,是中文翻译的,大概三十页非常细节地讲我们云存储的架构、算法,因为我们相信当我们越透明的时候,我们的客户就会选择微软。
    下面我总结一下我们微软的云存储为大家提供一个高可用的,非常高考的,而且是高性能的云存储,谢谢大家!

未经允许不得转载:存储在线 » 微软徐明强:微软云存储架构概览
分享到: 更多 (0)