视讯天下是中国领先的在线视频平台服务商,团队前身是全球最大的OVP(Online Video Platform)服务商Brightcove(Nasdaq:BCOV)的中国研发团队。
视讯云是针对中小企业群体在线视频需求推出的SaaS服务,即通过简便的租用方式为客户提供端到端的互联网视频云服务。客户无需租用带宽和服务器,可直接将视频上传至视讯云平台,由云平台自动处理所有的视频转码、水印、播放器定制、CDN推送以及后续的播放数据统计分析,极大地简化了客户在线发布视频的技术门槛。
视讯云是一个典型的多租户SaaS(Software as a Service)服务,系统核心为轻量级的无状态Java模块,对外提供REST服务。对于私有云客户,支持普通的NAS接口,同时支持Gluster分布式存储作为公有云的底层存储服务,以提供每天亿次以上的视频播放能力。一组可以在线动态增删的转码集群用于对客户上传的视频进行转码,整个平台架构如图1:
图1 视讯云平台架构图
作为Brightcove早期的中国研发团队,我们的开发人员对AWS平台非常熟悉。2010年公司刚成立的时候,国内还没有一家类似AWS这样能提供IaaS平台服务的公司。我们只能自己购买物理机部署至IDC机房。然后我们仿照EC2的模式,先将物理机虚拟化成若干虚拟机,再在虚拟机上部署系统和服务。众所周知,无论是双线机房还是BGP机房都存在很多弊端,运维成本过高,尤其是出现问题的时候不能快速灵活的响应和处理。因此,当我们得知阿里云服务推出的时候,第一时间进行了试用。最终,我们在2012年8月,达成与阿里云的合作,将公有云视频在线服务部署在阿里云。
整个系统部署到阿里云大概只花费了一周时间,使用了10台云服务器和1个RDS(关系型数据库服务),整个系统就能在阿里云上正常运转。不过,从部署成功到实际应用仍有一段路要走。
迁移OSS
第一要解决的问题是存储。如果我们使用一台云服务器的本地硬盘通过NFS作为一个临时的存储方案,性能肯定很差,原因除了多台云服务器的IO压力外,还在于阿里云云服务器的本地硬盘实际上也是远程挂载的(这一点在我们预料之中),因此这就比普通物理服务器的硬盘速度要慢。当然最合理且优化的解决方案是使用阿里云的OSS(开放存储服务)。于是我们通过阿里云给的Python SDK开发包,经过一周的时间在原有的挂载Gluster的接口上又开发了挂载OSS的接口。
通过将存储迁移至阿里云OSS,不但解决了IO的性能问题,我们还获得了如下好处:
1)OSS提供了比Gluster更强大的分布式存储解决方案,并且不需要我们自己维护了;
2)OSS的分布式特性有更好的IO性能,多台云服务器同时读写OSS性能完全没有问题;
3)OSS提供的HTTP接口可以直接让用户通过浏览器访问文件而无需经过云服务器,这在一定程度上解决了我们的源站问题,部分文件可以不需源站而通过OSS直接实现CDN加速。
实战RDS
RDS(关系型数据库服务)也是我们深度依赖的一个服务。我们原有的系统使用MySQL Master-Slave机制保证实时热备,再通过脚本实现每天定时完全备份。使用了RDS后,主从热备的问题解决了,还有定期自动备份的功能。现在,我们的数据库运维工作几乎没有了,只有一个脚本每天定时从RDS下载数据库备份到办公室。
当然,在使用RDS的过程中,功能也是在不断完善的。一开始我们发现,无法在RDS中创建只读用户。因为出于系统安全性的考虑,开发和运维人员在排查故障时,使用只读用户更加安全。通过与阿里云的反馈与沟通,两周以后,只读用户功能上线。
应用SLB
随着我们把部分测试用户的视频数据逐步转移到阿里云,我们发现新的问题又接踵而来。
首先,单台云服务器的出口带宽有限,常常成为性能瓶颈,而单独为每台云服务器增加带宽又很不合算。我们了解到阿里云已经推出了SLB负载均衡服务,这非常适合解决我们的出口带宽问题,于是我们将SLB作为前端负载均衡使用。
最早的SLB服务只支持HTTP 1.0。因此,我们很快就发现源站在处理大量小文件时性能急剧下降。随后,阿里云添加了SLB的TCP支持,我们采用TCP负载均衡后解决了HTTP 1.1的连接问题。
稍后,我们又启用了SLB来支持HTTP REST API服务,但位于内网的云服务器无法取得用户的公网IP。于是,我们继续反馈给阿里云,希望在负载均衡上添加X-Forwarded-For字段。几天后,我们终于能拿到用户的公网IP了。
经过几个月的磨合和测试,架构在阿里云平台的SaaS服务已经稳定运行了近半年时间,目前我们运行在阿里云的服务架构如图2所示:
图2
迁移至阿里云平台之后,极大的降低了我们的运维成本,目前我们仅有一名运维人员即可完成整个视频云的运维任务。同时,我们可以根据客户的不断增长来随时添加新的云服务器,以满足客户需求和用户访问的压力。从购买1-2台阿里云云服务器,到部署系统上线服务,一般只需要半个小时,对于传统IDC机房来说,这个效率是不可想象的。
虽然整个迁移的过程并不是一帆风顺,阿里云也尚有一些我们需要的服务还未推出,例如类似Amazon的Simple Queue Service(SQS,简单消息服务)、Route 53(DNS服务)和CloudFront(CDN服务)等。但在与阿里云的合作过程中,我们对于阿里云平台的服务质量以及成长还是非常有信心的。我们已经开始陆续把正式用户迁移至阿里云,我们租用的云服务器从最初的10台已经到现在近百台,而OSS的存储空间也从100GB增长到几十TB的规模。最近,我们又开始准备把数据统计分析服务迁移到阿里云的ODPS(开放数据处理服务)上,以便充分利用阿里云提供的海量数据分析与挖掘服务。
2012年2月,Brightcove的成功上市,又一次证明了国际资本市场对视频云服务行业具有很高的期待。随着三网融合、宽带速度的网络瓶颈的解决,云视频的需求在教育、电子商务等各个平台上会得到快速发展。而中国市场的特殊格局也给本土的创业公司提供了难得的机遇。作为创业公司,我们深刻地感受到云平台带来的产业变革。而随着云计算产业的变革与发展,越来越多的公司会将IT基础设施以及SaaS服务等建立在以阿里云代表的云计算平台之上,这从国外成功的创业公司如Instagram、Dropbox等均选择了在Amazon的IaaS上构建自己的SaaS服务,可以看出业界不可阻挡的云计算趋势。视讯天下也将自己的SaaS服务建立在阿里云的IaaS平台上,既充分利用阿里云提供的弹性计算能力,又将精力集中在业务架构和客户服务上,对比传统的存储和IDC成本计算,可能某些时候IaaS的服务成本偏高,但节省的运维和开发成本是隐性但巨大的。视讯天下希望借由此文,分享些许迁移云平台的经验,希望能对大家有所帮助或启发。