2015 年 5 月 30日,广受开发者们欢迎的又拍云 Open Talk 技术沙龙再次登陆帝都北京——以《 移动应用技术架构的解读 》为主题的第八期活动,邀请到三位资深技术专家为我们解读移动应用技术架构背后的秘密:初页 CTO 丁乐;风云直播 技术总监 杜川;汽车之家技术架构师莫松,先后登场为开发者们解答技术架构难题。风云直播技术总监杜川在活动上作了题为《风云直播后端技术架构演化》的分享,以下是演讲实录:
业务系统/业务架构演进
特点:高并发、高同时在线/服务峰谷比高/服务成本高
峰谷比是峰值和平时的压力,这个比其实练的是一个招式。在比较极端的情况下峰值和平时有两个差点,平时是平的,上视频节目的时候就会上升之后再降下来。对一个创业公司,在选点的时候要选择稳定性要求高的。
技术要求:稳定性要求高/快速迭代
风雨直播选型直接选的JAVA,SrpringMVC,支持快速迭代,性能非常高,数据量非常大,自研业务框架。弊端:事物支持非常差,在技术上耗很多的精力。
系统架构设计原则:分层/去除单点/自动扩展/被动异步更新
风云直播服务端的整体架构,在这一层做到任何机器宕机不会影响它的服务。对于一些关键的服务,风雨直播将其放在RPC业务层上。它的横向扩展能力非常强大,IDC协议,减一个节点,它协议容忍在线的减,第一次失败可以再试一次。在IDC之上可以由各种各样的HttpService,每一个HttpService都是支持行业扩展。
往前分为两层,上面一层是LoadBalance-LVS,下面这一层是业务逻辑的网关,风云直播现在用的是NginxProxy,实际上就是做分流,并且非常灵活,也可以做横向扩展还有自动伸缩。比如:一个工作量比较大的话题,就会放在一个系统或者以运营为主去做。把流量从任何一个机房切走到其他机房,可以分层。
所有业务都部署在这个LVS后面,RPC变成一个业务的标志符,是数据包传的一个字段。
数据系统:数据监控/运营数据
数据监控:用户需求有时候千奇百怪,想都想不到。所以要做一个数据分析。
首先问你的日志是什么格式,怎么打出来的,是www这种格式,还是自己手敲的格式还是其他的。
然后问你的数据源在哪,怎么获取。如果你的数据源在磁盘上去拉就行了。有可能这个数据是在你客户端生成,是产品的数据,是不是发生卡顿,IP所对应的运营商整体的情况是怎样的,这个东西可能就会变成推的模式。变成网端,自动推出来了。
我又会问,这个统计逻辑是什么样的,你需要满足什么样的数据,最后你怎么展示。我作这个推广,你今天不给我算出来,我的绩效怎么办。
站在技术人员的立场上,建安办法就是我今天下班花半个小时来一个脚本,脚本,再脚本,然后数据计算。最后单曲循环。
对大部分创业公司来说都是这样,你的技术人员大多数是做业务开发,谁了解谁业务需求,就是业务开发。
运营数据:抽象数据源的收集方式
日志源:有日志队列,这个日志队列有可能就是一个脚本,然后去分析逻辑,然后DB,然后查询,最后前端展示。
当你真的做了一年这个工作之后,你就会知道其实你的数据源不会有那么多。然后ETL抽象数据清洗转储的过程,这个东西有可能是你做成平台之后这个几率最多的工作。然后是抽象归纳计算法,你算的多的时候,可能这种需求你可以归纳出来,无外乎就那么几种。然后就是抽象展示模板,这个也是跟需求相关。
经验上看, 可以按照分析实施性来区分
实时:
1.线上人数, 监控, 算法反馈等;
2.需求:数据实时性要求高, 业务明确较固定, 计数,四则;
3.计算结果为中间数据, 辅以算子配置;
离线 :
1.运营数据, 产品反馈数据;
2.需求:数据量大, 业务一般为人提出,需求复杂, 过滤,去重, join等;
3.维护数据schema很重要, 计算上各类支持SQL的分布式计算平台都能满足需求。
基础播放系统
一、需求
高同时在线,高可用,异构的视频源整合与编码格式统一,完整的上传、转储、分发链路 ,成本可控。
风云直播现在的情况:
主播然后是视频上传网关,有视频转码、转储、分发的服务。然后上传之后马上给你存储,后面做点播。这里有一个服务状态、视频状态,以便于客户去访问。第一频道到底现在在不在播,第二频道的健康状况怎么样,也可以支持对一个重要频道往往会有多余的源在支撑,如果不好的话,在状态服务里就可以做在线切换。之后的视频流会通过CDN系统分发出来。CDN的分发系统,现在一个是第三方,一个是我们自己做CDN。然后是P2P网络,用户通过分组网络加入自己的Tracker。任何一个P2P都是把C成本转移给运营商。比如说联通,你可以研究他的财报,他大部分的收入是来自于智能用户,家里的宽带,一年交一千块钱,这是他的主要的收入。
P2P需求将更加强烈:
现在北京联通的宽带有500兆,当然海耶其他小运营商早就说有500兆,其实没有那么多。但是联通标多少就是多少,你有100兆宽带,你肯定想看1080P,想看4K,需求会成倍的增长。会带来什么问题?我们做视频压力会变大。我相信在一个长时间,运营商向我们收IDC的费用会下降,UPYUN最近也是在大幅降价,这种降价趋势一定赶不上终端调整。终端调整真的翻倍,今天10兆,明天就是20兆,或许还会50兆、100兆。P2P是我们起家的技术,一定需求后会更加的强烈,我也相信我们的优势会更大。
P2P优化:
1.区分线路应对奇葩网络——概率
2.大片小片配合——CDN大片, P2P小片
3.CDN链接优化——多连接和长连接
4.P2P比例和播放延迟的tradeoff
5.卡顿应对策略
二、自建CDN的好处就是便宜
成本是主要考量因素/注重性能 /严密监控/Failover逻辑/客户端判断/服务端主动降级
特点:全内存存储/无二次研发/服务自动降级
自建CDN和第三方CDN的取舍,对大部分的非视频行业来说,这不是需要考虑的问题,你就用第三方就可以,花不了多少钱。视频不是这样,视频到了一定规模,你就得考虑。主要因素就是成本,我们用一部分自建CDN做一个基础,然后再用第三方的CDN顶上。
用户分三个层次,首先是接入层,去处理链接,我们可能会做长链接优化。然后可能前端是一个LVS,往其他机器分发。然后Tengine这里没有什么业务逻辑,就会将所有请求做一些分发机分发出去。然后是存储层。用户的请求从这上来之后会被分到所有层上面,这个是一致性Hash给我们带来的好处。
云服务:
我们目的是为了帮助刚开始是坚定自己信心,不再买机器,现在云服务已经足够成熟。
云的优势:
1.基础运维(硬件, idc, 沟通)少;
2.IT成本底;
3.应对突发快;
4.解放研发,专注业务。
云的趋势:
1.让专业的人做专业的事儿;
2.技术的进步;云是一个技术进步,它依托虚拟化,得到更高的平均负载,你的资源利用率升高,我说它一是个技术进步;
3.公有云和私有云的取舍如果让百度迁移到任意一个云上,那个云就挂了,他承不住。这有一个时间点的问题,从蒸汽时代到电气时代这种时代变更是有革命性的,跨时代之后不管这个服务是给你提供,跨了时代,生产率就是上来,成本就是低了,性价比提高了。