现现在,当人们在讨论公有云的时候,已经习惯性的给公有云戴上了服务小微企业的帽子,而大部分云服务提供商都会面临以下质疑: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,能够预见,云将更加精彩。