• 阿里云:创业者最佳的选择

    云计算是什么,大家各有各的说法,也各有各的理解,作为一个SaaS服务的创业者和开发者,云计算切切实实地带来了很多不一样的东西。
    我们够快公司是做团队的文件协同服务平台的,简单地理解就是一个很多人一起用的“网盘?#20445;?#25105;们的整个平台类似于BOX的专业版或者是Dropbox的Team版本,更加强调基于文件的协同和共享,同时能够保证整个过程的安全与稳定。
    早在一年前,我们使用的还是传统的做法,通过自主的采购服务器设备,自主开发后端的存储系统(也考虑过Hadoop,考虑过OpenStack),自行维护服务器。整个系统完全按照传统的?#24067;?#37096;署架构搭建。
    在这个过程中,运维的同志曾经因为机器?#25910;希?#21322;夜里?#30333;?#38632;?#31995;?#26426;房抢修;也因为机?#32771;?#30340;光缆被地铁施工破坏,导致网络的中断;还有联通和电信之间的互联互通这个大麻烦,等等。除了这些外部制约的条件,从内部角度来说,维护一套安全稳定的平台难度也很大,需要寻找好的DBA,需要雇佣机房的管理人?#20445;?#38656;要去开发与业务本身不相关的基础平台。
    当时我们就想,国内有没有类似Amazon EC2和S3的服务提供商呢?我们发现了阿里云,它提供了BGP线路接入的云服务器,?#32422;?#19968;整套云计算的产品与服务,比如关系型数据库(RDS),开放存储服务(OSS),开放结?#22815;?#25968;据服务(OTS)。这些云计算服务不仅解决了以前的问题,并且为我们提供了一个良好的环境去很方便地实?#20013;?#30340;功能,比如差量上传同步,文件压缩打包下载等,从而让我们能够把精力聚焦在如何把我们的产品做到最好,我想这才是创业者最应该关心的问题。
    在这篇文章里,我简单介绍一下我们在使用阿里云上的一点点经验,为想使用阿里云的创业者和开发者梳理一下思路。
    阿里云的云服务器通过虚拟化技术为大家提供了廉价、高效的弹性计算服务。一台云服务器对开发者来说本质上还是一台真正的服务器,因此,使用云服务器最大的?#20040;?#26159;可以演戏原来的语言和平台系统进行开发和部署。够快把网站和API服务器?#21450;?#36801;到云服务器上,同时通过SLB?#32422;?#21488;主机进行了计算的负载均衡。
    关系型数据库服务(RDS)目前是支持Mysql,我们仍然是?#20040;?#32479;的Mysql连接器去使用这个数据库,省去了优化的问题。由于是使用云服务器的内网方式和RDS链接,查询与结果的传输带宽也将是完全不受限制的。
    开放式存储(OSS)是和亚马逊S3类似的服务,整个接口基于REST风格,同时阿里云也提供了各种语言的SDK,可以让开发者方便地上手。够快的所有用户上传的文件都存放在OSS中,包括头像,截?#23478;约?#23458;户端软件包等。我们在差量上传中大量了使用了与OSS,以快速的计算组合用户的数据包。
    开放结?#22815;?#25968;据服务(OTS)是一个特别的服务,这是一种基于行列表的NOSQL模型,特点是支持大数据量和快速查询。够快原来使用知名的MongoDB(跑在云服务器上)存放文件版本和差量指纹数据,但在实际使用中遇到了不少的问题,包括MangoDB自身的一些Crash的情况,?#32422;?#38656;要自主考虑数据备份,安全性等问题,最后我们决定把数据迁移到了OTS上。虽然OTS的设计思想和一些流行的NOSQL不完全一样,但至少OTS相比之下更加可靠,而且无需像MangoDB或是Cassandra自己去管理打补丁、升?#19969;?#22791;份、节点部署等繁琐的事务。大家也不需要担心OTS的学习成本,因为它非常简单,甚至比学习其他NOSQL的成本更低,唯一不足之处的是SDK,目前提供的还不是很多。不过因为API基于REST规范,所以自己封装一下也不是很困难的事。
    下面简单向大家介绍一下够快是如何使用OSS和OTS实现文件差量上传的。够快的用户在上传数据时,是以文件的虚拟路径作为文件索引的,第一次上传文件,无论是通过WEB上传还是通过各类客户端进行上传,都是先将文件传送到一组阿里云的云服务器中。云服务器在完成文件的?#37038;?#21518;,对文件进行分析,计算出当前文件的分片索引(通过对每一个固定大小的分片进行哈希计算),并在OTS中以这个文件的逻辑路径为PK(主键)将其保持起来,OTS可以通过这个逻辑路径非常快速地?#19994;?#23545;应的分片索引文件,完成计算后的文件则直接保持到OSS中,再次上传这个虚拟路?#26029;?#25991;件的修改版本时,对于本地各类客户端来说,先通过虚拟路径作从OTS中查?#19994;?#23545;应的分片索引,并与本地需要上传的文件进行?#21592;齲?#35745;算出需要上传部分的数据,将这些数据组合成一个数据包(数据包头部包含新文件的大小和除了这些数据以外部分数据对应于上一个文件的所在位置偏移,如0-2550、2600-31980、31990-32000),然后上传到够快的云服务器上,?#37038;照?#20010;数据包的主机将同时从OSS中读取上一个版本的文件数据并通过数据包的描述信息对数据进行组合,新产生的文件就是那个用户需要上传的文件了。最后,把新的文件索引采样保存到OTS中。在这个架构下,OSS与OTS与云服务器之间的传输直接走内网,从而大大降低了用户通过Interne上传的数据,整体的用户体验非常好,如几百MB的PSD设计文件在修改增加几个图层以后只需要上传可能几MB的数据就可以完成整个数据同步了。下面是整个过程的简单列表。
    ?客户端申请文件上传,如果存在上一个版本,服务端从OTS中读取返回文件的分片索引。
    ?客户端根据分片索引进行计算,生成需要上传的数据包。
    ?客户上传数据包到服务端。
    ?服务端收到数据包后,把数据包和从OSS中取得的上一个版本的文件数据进行组合,产生于用户上传文件一致的新文件。
    ?计算上传文件的分片索引并保持到OTS中。
    ?新文件保存到OSS中
    ?上传完成
    阿里云通过一个强大的内网将这些服务都连接起来是集中优势的体现,各个服务之间的网络带宽均达到千兆的速度,在I/O方面基本?#31995;?#21516;于标准的SAS硬盘的效?#30465;?br /> 够快在阿里云上的部署图如下图所示。
    够快在阿里云上的部署
    对于每个创业者和开发者,阿里云这种把基础的底层平台云服务化的方式是自?#21644;?#38431;能力的真正解放,让他?#21069;?#31934;力聚焦在真正的应用和服务上。我也去过阿里云的办公场所,那里有大量专业的工程师对底层平台进行开发和维护。而我们只需要付出所使用部分的费用,就有那?#21019;?#30340;集群为你服务,就有那么一群工程师为你服务,就有那么好的网络带宽让你高枕无忧。整个软件服务的开发周期被大大缩短了,所谓底层技术和网络宽带上无法和腾?#19969;?#30334;度这些互联网长年积累的公司做比?#24076;?#32780;有了阿里云以后,大?#19994;?#31454;争就会回到了产品本身的竞争上,而且面对用户爆发增长也不会措手不及。

    该日志由 admin 于2013年05月03日发表在 阿里云动态 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。

    转载请注明:阿里云:创业者最佳的选择

    关键词:
    分享到:
    安徽25选5大星