阿里云开放存储服务高级产品经理 陆晶丹
陆晶丹:大家好,很高兴在深圳跟大家见面。我今天主要介绍一下我们开放存储服务的一些应用、技术使用方面的技巧和在OSS上面比较成功的客户案例。
第一个部分我简单介绍一下什么是OSS开放存储服务?我想问一下在座的同学有没有已经在使用OSS服务的了?
OSS服务是什么?这个问题经常有人问我,特别是不太了解OSS的人,因此我打个简单比方吧,不是很专业。比如我们OSS业务像银行,储户把钱存到银行,银行要保证他的钱的安全不要丢,第二个就是我要能随时随地存取,保障服务不间断。而OSS服务就如银行业务一样。OSS一定要保证数据不丢失,我们的设计要求就是数据的安全要保证99.99999999%的安全,以及不间断服务保证可性用。
通过这个比方,从侧面也反映出了OSS几个特点,
1,就是说我们支持海量的数据存储。你有多少钱,银行都可以让你存,你有多少数据OSS也可能存下。
2,我们对文件的大小也是没有限制的,我发现我们底下的人也是使用过OSS,细心的用户会发现一次上传请求(PUT Objcet)的文件大小上限是5G,倒不是说我们OSS一次请求不支持更大的文件,而是由于我们的中国互联网的网络环境的影响,很少能一次请求就能够完整的5G数量传到上去。因此我们要上传更大的文件,还支持一个上传方法Multipart Upload的操作,你可以把你的大文件切块成若干个小快,然后通过并发上传小块,传输到OSS上,在OSS的服务端还原成大文件。
3,我们希望OSS能跨语言开发,跨平台支持,跨终端分享。因此我们采用了简单、简洁地RESTful语言,并且为开发者封装了一些各语言版本的SDK。
4,支持高可用性和高可靠性,并不是简单的宣传的。而要做到这些需要我们在设计OSS时要遵循的几个原则,第一要求硬件故障透明,我们让用户把有效的资源投入到自己的应用服务上来,把存储的事情交给我们来做,帮用户维护存储服务器。对于OSS的用户来讲,不用再担心存储服务器坏了,硬盘坏了,数据怎么办?于是延伸到第二个问题,如果一旦硬盘坏了或者是服务器当掉了,我们必须要保证数据的安全。就必须要对数据有一个或多个备份的机制,我们OSS服务提供多份备份,而且它们是部署在不同的机房和机架中,这个是很容易理解的,就是不想在一棵树上吊死。
第三个就是对于应用者来讲,最关心的就是易扩展。有的客户就说,如果我要做存储,就必须要为未来的业务做扩容的准备,用OSS的话,就不许要提前买空间。而是你使用多少空间,就付多少钱。我们OSS服务端是会根据用户的存储业务发展,会提前部署扩展,永远不用担心空间不够用的问题。
现在,我简单介绍一下开发存储服务的架构。现在看到的是典型的一个文件请求,用户的所有请求会落到我们的负载均衡层上,然后会均匀地打到协议处理、访问空间层,之后送到分区、索引上面,最后落到持久化存储层上面。
上面我简单介绍一下了OSS服务的特点,现在我介绍一下OSS在开发时候的使用技巧。
这上面是我微博曾经说的一句话,像fopen,fwiter这些本地读写文件的函数,当使用了我们OSS以后,可以把这些函数丢弃掉了。取而代之的可以用PUT、GET、HEAD,DELETE的RESTful语言代替,与云端的存储互通。
我简单介绍一下我们OSS的一些基本术语,第一个就是Bucket,我觉得它就是为你的空间起一个名字,不管你存储是多大。第二个Obiect,文件。第三个Acces Key ID、Access key Secret,密钥。
接下来,我介绍一下Bucket的权限,每一个都有权限的控制,1.可以设置为私有读写权限,你访问OSS的bucket数据的请求都要密钥认证,如果没有密钥进行访问的话,别人是访问不到你的数据的,保证数据的私密性和安全。第二个权限就是public—read,读操作是可以匿名访问的,但是写是加密的。第三个就是public—read—write,是公开的。
我们OSS是支持防盗链的功能,大家可以看一下,这是一个加密的请求。如果说,你的Bucket进行了私有读写的权限,你要访问这个文件的话,你必须要加上一个签名认证,我们OSS才会认为你这个请求是有效的。这个URL的结构我给大家介绍一下,Signature签名,我们有一个协商好签名的规则,一个加密的请求过来,服务器端会判断签名是不是对的上,如果对的上则是一条有效的加密请求,如果对不上,我们就会拒绝这个请求。还有一点就是有效期Ecpires,比如说可以设置60秒失效或者五分钟失效,在这里可以做参数。另外我们也支持referer白单名的防盗链规则。
我们还有很多小技巧,我们OSS也支持特定条件时才传输数据,了解浏览器的人对这四个参数应该很熟悉。它的作用是什么?当用户读取一个文件的时候,我们浏览器会CACHE这个文件,当再次请求时,应用端会把CACHE时间发给OSS服务端,如果您的文件未更新,则服务器端不会重复下载你的文件。如果您的有文件已更新,则服务器会更新传输这个文件到您的客户端上。这样做的目地是能够节省您的下行流量。刚才有一个朋友也说了,流量是要收费的,我在这里说一下只有在GET请求的时候才收费,我们上传(PUT)产生的流量免费。
我们OSS上传Opject支持添加自定义的Header。在这个例子里面,为一个object添加作者字段。
接下来,我觉得这个技巧也特别有用,实现了Opject断点和并发下载。使用HTP请求中通用的“range”头。
一开始我也介绍了,支持大文件的上传,我觉得在中国的互联网现在不稳定的情况下,我建议把大文件都切成小块,并发上传,这样也节省时间。Multipart Upload就是做这件事情的。
我在上面已经讲到了一些我们OSS最主要的一些方法,接下来我想跟大家分享一下用OSS能够做哪些应用?也是一个产品非常关注的问题。
首先看一下,在Web上的应用,只要你开通了OSS服务,就可以在管理界面上看到控制台,它有两个目的。第一个目的就是想把API进行可视化的控制功能,比如说修改文件的属性,没有这个管理界面的话,程序员要把API相关接口调一下,现在提供控制台的功能,操作就会方便一些。
第二个用途,其实原来OSS控制台前身是叫OSS体验站,我的意思就是希望让用户知道我们OSS是可以支持WEB应用开发的,这个页面就是简单的WEB OSS的应用案例,它通过我们的API接品实现了通过WEB页面与云端的交互。
第二个案例,就是够快,相当于一个网盘的应用。我会把我的一些文档都上传到上面,我说一个我的简单例子。
第三个,我相信E人E本(同步)还是挺有意思的,葛优和冯小刚的广告是我最喜欢看的,也说明了一点,终端设备他们也在用我们的OSS服务。
还有一个就是同步盘,就是终端共享。
另外APP应用手机的案例,淘乐圈(手机 导购)。
接下来,又回到我们今天沙龙的主题,就是我们2012年开发者大赛,也是列举了几个应用的案例,这些仅供大家参考,大家可以往这些方面去思考,但是不限于此。你有更好地应用或工具也可以参加我们的大赛。
我简单地介绍一下,在OSS上面的一些很使用的工具,第一个工业同步客户端。第二个就是文件系统类的工具,一般站长来讲,对于FTP工具是比较熟悉,我们也希望能够封装出FTP的工具来打通我们OSS,它的第二个小功能,可以支持能把OSS的bucke当成一个盘符,挂载本地系统中或当网络驱动器。给最终用户的感觉就像是打开D盘一样。第三个SDK。第四个就是框架插件,比如说phpwind、discuz等。
我今天的演讲就到这里结束了,谢谢大家。
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。