泰捷视频的上云之路

泰捷创立于2010年,是一家提供家庭视频推送服务的网站视频资源聚合公司。泰捷2011年推出了一个比较重要的产品,就是泰捷的视频软件,内置在泰捷的盒子里给用户提供包括点播、直播在内的视频服务。

ZD至顶网软件频道消息:泰捷创立于2010年,是一家提供家庭视频推送服务的网站视频资源聚合公司。泰捷2011年推出了一个比较重要的产品,就是泰捷的视频软件,内置在泰捷的盒子里给用户提供包括点播、直播在内的视频服务。

下文是泰捷后台工程师李龙在QingCloud IoT沙龙现场演讲速记整理。

今天在这里主要跟大家分享一下泰捷软件开发的整个开发流程、后端的服务器架构设计、如何自动化构建与部署服务器,最后给大家分享两个我们开发中遇到的实际案例。

泰捷目前的规模相对较小,所以我们软件的开发流程实际上也比较简单,整个开发基本流程如下:

•第一,开发人员在本地环境里面做项目开发;

•第二,开发完成之后,由项目主管或者项目负责人进行代码评审。如果你的代码通过审核,会提交到代码仓库同时同步到线上环境。代码仓库是公司内部的代码托管服务器。

•第三,代码同步到线上之后,就要做线上环境的部署工作,也就是对服务器环境做一些部署,比如说一些基本软件工具的安装和用户的添加、登录配置等等。

•第四,在线上环境部署完以后,就可以进行代码部署,这里也是运用我们内部的一个代码部署工具。如果你需要做自定义的部署,也可以加入到部署工具里,可以根据线上服务器类型来提供不同的代码部署服务。

泰捷的后台服务器架构可以分为三个方面:

首先是服务器的宏观架构。

宏观架构包括一个控制管理中心,还有一些在线运营服务器。在线运营服务器分为公网服务和集群服务,集群服务就是由多台服务器集体提供服务;公网服务器是挂一个简单的公网服务,目前所有的服务器使用的都是青云QingCloud。所有控制中心的脚本都是自动化的,用脚本可以直接创建服务器和集群,以及把辅助服务器上的资源添加到单机公网服务和集群服务上面。这就是我们服务器的宏观架构。

服务器间的数据同步。

我们在全国有多个物理服务器数据中心节点,例如北京、广东、香港以及其他省市。这些数据中心里面有的是单机服务器,有的是集群服务器。这些服务器之间通过DNS轮循的方式把视频内容提供给用户,也就是说哪怕一个数据中心挂了,我们的服务也不受影响。数据中心之间也会根据业务需求做数据同步,把不同集群里面的数据通过隧道或者VPN搭建私网的方式进行同步。

服务器的微观架构。

对于单个服务器来说,我们会在上面做一些管理和监控部署。配置管理服务,在管理中心有一个登录管理组件,里面记录了所有服务器的登录IP、登录端口、登录用户ID以及相应的证书;监控告警服务,可以了解单个服务器上面的运行状况,如果出现问题会发出报警;代码和数据服务,程序员开发完之后提交到真实服务器上的代码和文件。对于单个服务器来说,我们目前是通过青云QingCloud的API直接创建和删除。

自动化构建服务器

下面说一下服务器的自动化构建。对于单个服务器来说,自动化构建可以通过青云QingCloud的API来操作。生成的机器主要有两种类型:对外服务器、对内服务器。我们会专门设置一台服务器作为内部集群健康状态的监控服务器,当检测到出现问题会及时发出警报。

通过QingCloud创建完机器之后,就会有一个内部自动化初始的脚本,直接在服务器上运行。初始化之后,会通过脚本自动注册一些服务,包括登录、用户配置和基本软件的安装,以及将WEB端的一些登录信息、IP端口通过对外接口传递到数据中心在插板机上注册。 

接下来是应用的部署,上面说过泰捷有专用的代码仓库服务器,代码仓库里面放着运营程序的代码。程序员在自己的机器上做好应用之后,编写相应的脚本,把脚本上传到代码仓库里,在需要部署应用时,即可通过代码仓库迅速部署需要的应用。在应用部署完毕之后,需要程序员去检验服务是否正常运行。如果这个服务不需要了,就直接在QingCloud上进行销毁。在我们的使用过程中,QingCloud带给我们的好处,除了在线运行和部署灵活之外,无论单机还是集群都可以做成脚本快速生成和销毁,将工程师从一些基础服务部署中解放出来。

我们目前用的是Ubuntu系统,下一步我们主要做容器开发,是基于Docker来做的。这样部署的时候就不需要编写应用本身环境依赖的代码。在QingCloud上使用虚机可以很轻松的进行部署和自动伸缩,但是由于容器的应用质量状况不能依据它的负载均衡器来评估,所以还可能需要收集客户端的数据,然后在自动化配置管理中心对容器做伸缩管理。

下面分享我们做过的一个案例。这是我当时的一个后台数据中心服务架构(如上图所示)。其实就是一个Mongo的分片,包括下面的三部分:Node.js、Mongos、Shard。Mongos根据数据的种类分发到不同的shard里面,不同的shard存储自身的数据。整个架构里面,Loadbalancer和Node.js、Mongos和shard都可以不断的进行扩容,增强规模。

第二个案例是泰捷视频后台API服务的整体架构(如上图)。我们通过正向爬虫和反向爬虫,将爱奇艺、搜狐和各大网站的数据搜到爬虫库里。爬虫库里面有一个任务就是做合并,把新爬到的数据和原有数据做一个合并,当然这个合并的过程比较复杂,我们运营人员也会做一些人工合并的操作。然后讲这些合并后的数据写入到节目信息数据库里。这个节目信息数据库里面有一个定时任务,会在节目库有更新的时候触发,把这个数据全部更新到数据中心,然后通过数据中心把这些数据提供给用户。 

因为我们要支持几百万用户的并发访问,只能通过Node.js来做,同时要求所有的Mongo数据库放在同一个数据中心内,以降低访问延迟,所以第二套扩展起来要比第一套更为简单。

 

【预告】7 月 28 日,QingCloud Insight 2016 将邀请 50 多位行业专家分享云计算、大数据、机器学习、容器、DevOps、安全等领域的前沿话题,打造一场业界交流、开发者学习、创业创新项目展示的顶级云计算盛会。报名戳这里:http://insight.qingcloud.com/?bag_track=zdnet

来源:业界供稿

0赞

好文章,需要你的鼓励

2016

07/20

12:57

分享

点赞

邮件订阅
白皮书