现如今,当人们在讨论公有云的时候,已经习惯性的给公有云戴上了服务小微企业的帽子,而大部分云服务提供商都会面临如下质疑:1. 创业公司规模增大到一定程度后,选择公有云是否真的节约成本。2. 成熟的产品放在公有云上,当前的国内云服务商是否能靠得住,提供足够的稳定性。笔者想,所有国内的云服务商都默默的憋着一口气,一定要靠谱的服务些有规模的成熟产品来正公有云的名。七牛作为一家成立三年的云服务提供商,已经拥有一批拥有海量数据的成熟性产品,也想分享下这方面的经验与案例,希望能够给初次尝试云服务的成熟产品有些借鉴。
对云,爱过,伤过?
遇到过很多拥有海量数据的互联网产品,初期会认为所有的服务都应该掌握在自己的手上,这样可控性最强。他们其中也会有些尝试过一些云服务,但如果在当时服务质量没有给予他们足够信心,那么很长一段时间内,他们的绝大部分服务,都是自建的,比如说图片源站存储选择利用业界的一些开源工具自建。
但是这两年,随着精益创业理念的盛行,以及云服务的进一步完善,他们又会开始重新考虑使用第三方服务,观念在逐步转变为:专业的东西,让更专业的人来做,而团队则更专注业务的优化。谓之“善假于物也”。2014年纳斯达克上市的移动社交平台陌陌正是经历了这样一个过程。2014年,当自建的源站存储,随着用户量过亿以及月活跃用户增大至数千万,遇到了访问的压力时,他们想到了七牛云。
小试“牛刀”
七牛平台上已经承载了一批拥有海量数据的成熟互联网产品,其中不乏上市公司,很多都是UGC类产品,比如海康威视,唱吧,camera360,豌豆荚,视觉中国等。这里面的经验是:出于之前对云服务已经持有的怀疑以及谨慎态度,成熟产品在选择一家第三方云服务时,会进行非常系统而谨慎的功能以及性能测试。这个测试主要包含:
1. 首先是功能,看提供的API是不是能够充分考虑到客户对场景的需求,并且是否留给调用者以足够的灵活性。此外,功能的使用者是程序员,而API就是程序员的UI(用户界面)。API应该对程序员友好,应该简单,直观,容易使用的同时优雅。
在陌陌测试七牛的案例中,根据产品业务运营的特点,他们分别从不同大小的文件上传,下载,缩略图处理,自定义域名绑定,以及七牛独有的镜像存储等功能点进行了测试。
2. 丰富的API,易用性强能够迅速接入,满足场景特点。接下来就是要测试源站的稳定性了。
测试稳定性通常都是放一小部分的量跑一段时间看各方面数据。为了测试稳定性,陌陌先丢了万分之一的量到七牛上,跑了一周。在成熟产品对七牛进行初步稳定性测试的时候,使用的一般是七牛的“镜像存储”功能。镜像存储是指数据还是存储在客户源站的情况下,额外使用七牛作为镜像服务器,对于已经拥有海量数据的客户,这个功能既可以很方便的感受到加速又有“安全感”。通过七牛的开发者后台,可以为源站设置镜像存储,让网站的用户每次访问的时候都从七牛云存储上读取。如果云端上没有用户需要读取的数据,则七牛的服务器会从源站拉取资源,然后再返回给终端用户。在七牛内部,这个功能又被称为“秒接”,其中寓意,可以感受下。
三观正了,从万分之一到百分之十
在测试过程中,服务方和客户方也会在技术选型、团队、产品以及服务理念等方面进行非常深入的交流,客户也会从“三观”来评价云服务。三观正了,会对后续的合作有很大的推动作用,也让彼此都有了很好的信任基础。在这个服务为王的时代,专注,专业,极致的服务理念应该是每家云提供商放在心里去遵循的。
在七牛推动与成熟产品合作的过程中,还有个技术细节被客户考虑到的是:七牛服务端是用Go语言写的,Go从基因上支持并行计算,非常适合做云服务系统的搭建,因此很多客户对这个选型也非常认可。
回到陌陌的案例,经历了系列测试后,对陌陌来说,结果是很令他们满意的,但由于本身已经是成熟运营的互联网产品,本着对用户体验的负责,测试后决定只切10%的量到七牛上。
专业,极致
社交类产品与电商或者其他产品不同。对于用户已经过亿,日活跃用户千万级别的社交类应用,后端系统文件数可以达到百亿级别。整体的访问中,图片的流量要占到90%以上,并且因为在移动设备上被访问,因此系统中小于8k的图片特别多,而图片的显示质量,上传时间和访问速度都是直接影响到用户体验的关键因素。此外,对于社交类的UGC, 技术难度在于没有数据是死角,所有数据理论上都是“热数据”,流量分散,但总的访问压力非常大。还有社交网络中的突发热点造成的单个文件的并发访问急剧增大,也会给基础服务带来巨大考验。
这样的特点,基于开源技术做存储,随着源站的业务压力越来越大,如果出现问题,很难实现精准的bug定位。这些问题,很多自建存储的成熟产品一般都会遇到。
而服务过多个类似产品并淌过各种坑的第三方云存储服务在这些方面会更有经验。下面也分享下七牛是如何解决问题的:
1. 海量存储。
采用多数据中心的广域网分布式架构,在全国建设数个核心存储机房。客户可以根据自己的业务特点主动选择存储机房或者完全交给云服务系统来调度数据。此外,双数据中心之间采用互备技术,将两个数据中心用裸光纤互联,当用户上传到某个数据中心时,系统异步将文件数据和相关原数据同步到与之互备的另一数据中心,这样当一个数据中心故障时,存储服务会根据故障的级别启用不同的应急预案,将请求切换到与之互备的数据中心。
在技术上存储系统的核心诉求是成本和可靠性,而这两者又是一对矛盾,想降低丢失数据的风险,势必要增加每份数据拷贝的份数,而增加每份数据拷贝的份数,又势必增加成本。为了解决这个问题,七牛使用了EC冗余算法来很好的平衡这对矛盾,达到低成本,高可用。
2. 流量压力的应对
作为云服务提供商,要承载更多的成熟业务,运营上的精细化是非常重要的,能够考虑不同类型客户业务的特点,在设计缓存以及系统逻辑时,留有足够的灵活性以及可扩展性。云服务需要建立分级存储机制,并且按照对象访问热点进行迁移。对内部数据流的分发体系进行统一,并且统一管理消息流的处理流程,以便能有足够的容量来应对不同客户的峰值请求,使服务更稳定。同时针对响应时间做实时监控,以确保问题出现时能够第一时间感知并作出处理。
3. 强大的图片/音视频处理服务。
在场景化时代,视觉系,富媒体类的数据会越来越多的产生。这其中有一部分来自用户主动生成,也会有一部分来自被动产生,比如摄像头的数据。可以预见,云存储平台上将会承载大量的图片音视频类型的数据,这其中云存储服务对图片处理的实时响应能力也是重点。拿陌陌来说,每一秒中有一半的图片都需要做处理,也就是说,每秒接近5000次左右的实时图片处理次数,要保证其实时性,99.9%都在一百毫秒以内处理完。并且,使用七牛的图片转码,可以将原有的JPG格式转为WebP格式,在同等质量的条件下获得更好的压缩比,节省了成本。
对视频的实时响应也是一样。当前比如说像短视频应用,还有一些其他的游戏视频分享,就是用户在手机上录完以后,后台传输,过个10秒钟你就可以分享了,分享完即时就有其他终端设备的用户访问了,访问需要的格式还不一定一样。如果客户采用自建,这种实时性要求高,从后端数百公里,数千公里的机房,通过各种路由器,最终到用户小区的局域网,这条路是很长的,环境比较难控制。再到真正的服务端,它必须数据要快,处理能力要强。然后又有高吞吐,用户量大了,一秒钟一台服务器仅能支持几百个KPS,这种情况下,对客户来说,自建能保证性能的响应依然是良好的技术难度大大增加。从我们观察到的,服务端处理不应该超过一秒,超过一秒用户的体验将大受影响。
4. 新增自定义处理来满足部分客户的特殊数据处理的需求。这是七牛比较有特点的一个服务。云服务作为通用型框架,本身提供的处理服务可能不能包含有些客户提出的不通用的数据处理需求。因此针对这种特殊需求,客户可以定义自己的数据处理逻辑。客户说去我们机房买一个处理器是可以的。但是接下来要运维、机器全部覆盖,这个流程做起来很累。自定义处理可以让用户把自定义程序打包完,放在这个计算框架里跑。用户的应用处理完以后,进入到指定的框架,让用户以插电的方式体验自己的逻辑。这个服务也可以让更多本身针对非结构化数据做处理的开发者比如语音识别,图像识别服务提供商等可以加入七牛平台上提供处理能力给我们的客户,大家一起把生态做起来。
5. 专业的服务意识。 服务意识对于云服务提供商的重要性自不必说,快速定位和解决客户问题,迅速响应客户的需求是一个好的云服务提供商的判定标准之一。
全面拥抱云存储
随着对七牛的技术以及服务的越来越肯定,几个月后,陌陌做出了决定,把七牛正式作为源站以及异地备份的提供方,并且将所有图片处理也转至七牛。同样是一直保持创业精神的陌陌,需要一家持续、稳定、有前景、有技术情怀的公司,提供稳定高质的云服务。七牛恰恰符合他们的期许。
全面拥抱云的第一步就是将历史数据迁移到云端。这是大工程,但对于”成熟产品使用云服务“来说,这是极其关键的服务步骤。首先,在迁移过程中可能遇到以下问题:
1. 硬盘迁移过程中,网络传输中的数据出错。
2. 传输过程中的速率问题。拿陌陌举例,如果采用常用的传输办法,整个迁移过程要耗时半年,并且会严重影响线上的业务。
3. 硬盘寄送过程以及使用过程中的磁盘损坏。
4. 存储数据文件对数据库的合并。如果按照传统的数据库写入方式,需要若干天,会给客户数据库以及云服务的数据库带来不必要的巨大压力。
针对这些问题,一个考虑全面的迁移系统就显得尤为重要:
1. 针对客户的业务数据模型,定制数据格式,进行存储数据的导入。
2. 数据库结构需要有强扩展性,可以实现瞬时合并。
3. 迁移系统充分考虑不可控因素,比如硬盘损坏,断电等情况。
至此,七牛已经成为陌陌非常好的合作伙伴,支撑了他们近两亿用户的数据存储,访问加速与图片处理。云服务帮助小伙伴陌陌解决了后续业务增长规模所带来的技术压力,让他们可以更加关注自己的核心业务。
大家也许会说国内的云生态尚不成熟,但是经历了几年洗礼,踩过无数的坑后,目前的国内云服务提供商越来越努力,专业,我们也看到越来越多成熟企业和新创公司一样,选择信任专业的第三方云服务,因此可以更专注自有业务。2015,可以预见,云将更加精彩。