案例分析——快手百万在线直播

一、前言

首先分享出原文链接http://www.infoq.com/cn/news/2017/09/streaming-Pipeline-kuaishou。自己平时并未用过快手,但是通过“宇宙中心”——五道口 快手巨大的LOGO以及 老家小伙伴的聊天内容来看,快手还是相当火爆的。虽然,直播这个技术看起来很简单,但是能够同时支撑百万人的实时直播就需要很强的技术功力了。

二、博文整理

  • 挑战:通常情况下主播都是用手机,网速无法保证,如何保证观众观看的流畅度

解决方案:实时监测主播手机网络状态,根据网络状态动态调整视频码率。因为视频的录制、编辑(美颜、水印等)、编码压缩等操作都是在主播手机上发生的,因此直播视频的码率还需要根据主播的手机配置(CPU,摄像头像素等)调整,在保证直播流畅的前提下尽量的提升画质。另一方面,就需要购买足够的带宽、CDN等资源了。

  • 挑战:主播和观众互动的时候,如果解决跨线路、CDN的数据不同步的问题(秒杀顺序问题)

解决方案:主播的直播内容会推送到一个CDN源,然后这个CDN源将编码后的视频流分发到各个CDN厂商的服务器上,观众通过连接CDN厂商的服务器来获取直播内容;在分发视频源的过程中,需要保证各个CDN得到的视频与直播信号的延时以及各个CDN之间传输的延时在一个可接受的范围内(需要与每个CDN厂商协调),这样才能保证不同地区的用户同步(相差不大)看到直播。最好的方法是:自建CDN;

  • 链路运行监控

解决方案:在直播端,统计主播手机的各个参数信息,直播过程中将手机CPU、内存、视频帧率等信息上传到监控中心;视频向CDN源站推送的过程中,监测连接质量以及网络延时。用户播放端,统计DNS解析、网络延时(从发送请求到收到应答包)、缓冲区大小(缓冲区越大,一次请求传输的数据越多,播放效果越流畅)。

从手机端统计到的监控数据会发送到监控中心的服务器,数据处理流程是:kafka作为可靠的消息队列负责接收上报的统计数据,kafka中的数据可以被消费两次,一次是用于实时处理展示(通过Flink从kafka消费数据并进行清洗,然后写入到Elastic Search集群,利用Kibana实时展示Elastic Search中存储的信息,存储量小导致只能保存最近一段时间的数据),另一种是非实时的(Hadoop集群消费Kafka中的数据并进行对应的处理,将处理后的数据写入Hive数据库,实时性差但是存储量大)主要用于存储历史数据供后期复盘分析使用。

  • 监控数据分析、使用

解决方案:利用Elastic Search或者Hive中存储的数据可以从两个维度来进行分析展示:1、用户体验质量(QoE):直播在线人数、直播跳出率等,通过分析这些数据以及相关的直播内容,可以推断出这些指标的变化是直播内容(无聊、违规等)导致的还是技术原因导致的。利用这些监控指标,可以及时的处理一些违规直播内容或者找出产品存在的某些缺陷。2、服务质量(QoS):纯技术参数(如视频帧率变化、直播延迟等问题),很多时候可以结合QoE来精确定位一些问题。

  • 上线流程

解决方案:添加新模块、bug修复等操作完成后,需要通过灰度验证、AB测试的方式进行上线,上线前需要测试回滚流程以保证在灰度的过程中出现BUG可以很快的回滚到之前可用版本。(PS:阿里内部灰度步骤是:5% 10% %30 %50 %100,每个步骤之间通常会间隔4个小时左右,用以确认灰度效果)

  • 开播跳帧优化

解决方案:通常情况下CDN直播服务器都会缓存一小部分内容(延时),一遍用户在任何时候打开都可以立即获取到内容。每个客户端从CDN拉取的数据都会存到接收缓冲区,这个缓冲区只能接收一定长度的数据,而CDN服务器为了使直播尽量流畅,每次都会向用户多发数据,如果超出缓冲区的长度,数据就会被丢弃,如果下次请求接收被丢弃的数据,直播延时就会进一步增大(观众无法参与互动),如果拉取新数据就会出现跳帧等情况,效果非常差。制定统一的发送数据长度与app上的接收缓冲区匹配,协调每个CDN厂商配合修改。另外还可以在客户端播放时,通过提高播放帧数来加速播放,解决与直播相差加大的问题。

  • DNS解析耗时过长

解决方案:通常情况下,用户访问一个互联网资源DNS解析都是必须的,但是由于标准的DNS解析服务器没有负载、延时监测,会造成后端DNS负载不均衡的情况,间接影响到了直播流畅度。采用app内置内部的DNS(改进后的)地址,来加快DNS解析速度,解决负载不均衡问题。

三、个人总结

整个分享的文章中,个人感觉最受益的是:

  1. 全链路监控以及监控数据可视化,这对于一个庞大的分布式系统来讲是相当重要的。
  2. 大数据的运用,分析用户的观看行为可以对直播内容以及资源配置进行有针对性地优化,增加用户粘性的同时降低资产成本。在这个互联网时代,每个人都需要了解一些大数据的东西。
  3. 这一点是我自己想的,运用机器学习等现代方法对海量数据进行挖掘,找出一些有用的信息。
  4. 上线的整个过程需要认真学习,这都是经验之谈。
  5. 要么有钱(自建CDN),要么有人(运用技术解决CDN、DNS等问题)

上学的时候,写过一个简单的聊天工具,无界面、无认证的方式,当时觉得想要做出一款聊天软件只需要加上界面以及登录认证就可以了。工作后,接触的东西多了,才发现同样的一件事,并发100和并发100w有着天壤之别。任何一个小事被放大100w倍之后,都是很大的一件事。写程序时,必须提前做好设计,考虑多种情况,然后严格测试、灰度上线、故障回滚。这些东西都是需要很深的技术、工程积累的。

时间: 2024-10-26 18:00:12

案例分析——快手百万在线直播的相关文章

我的51CTO,我的信息系统项目管理师,我的在线直播课程,我的爱

----薛大龙,51CTO认证讲师 面授十余年,命题阅卷数年,信息系统项目管理师考试,令很多考生又爱又恨,爱的是证书的含金量,恨的是低的通过率.王国维在<人间词话>说:"古今之成大事业.大学问者,必经过三种之境界."我也认为,若要获得证书,提升技术,成就梦想,这三种境界亦然.  一.昨夜西风凋碧树,独上高楼,望尽天涯路 虽然证书不代表能力,但是证书在一定程度上证明能力! 如果你想获得证书,那么,让我们在51CTO启航,先了解这个证书,确定目标. "昨夜西风凋碧树.

个人博客作业Week2(微软必应词典客户端的案例分析)

提要:我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,买火车票的网站,互相联系用的微信微博,等等都是软件,都很值得分析. 你为何成为它们的用户?它们的团队做对了什么,做错了什么?如果你来做,会做得更好么? 通过各种案例分析,评测,辩论,总结,我们就能看到软件工程的原则在实践中的种种体现. 产品:必应词典客户端 (http://bing.msn.cn/dict/) 关于 微软必应词典客户端 的案例分析 (桌面版 version 3.5.0) 第一部分 调研,评测 调研 1)采访对

(版本定制)第5课:基于案例分析Spark Streaming流计算框架的运行源码

本期内容: 1.在线动态计算分类最热门商品案例回顾与演示 2.基于案例分析Spark Streaming的运行源码 第一部分案例: package com.dt.spark.sparkstreaming import com.robinspark.utils.ConnectionPoolimport org.apache.spark.SparkConfimport org.apache.spark.sql.Rowimport org.apache.spark.sql.hive.HiveConte

《大型网站技术架构:核心原理与案例分析》笔记

目录 · 大型网站软件系统的特点 · 大型网站架构演化发展历程 · 初始阶段的网站架构 · 需求/解决问题 · 架构 · 应用服务和数据服务分离 · 需求/解决问题 · 架构 · 使用缓存改善网站性能 · 需求/解决问题 · 架构 · 使用应用服务器集群改善网站的并发处理能力 · 需求/解决问题 · 架构 · 数据库读写分离 · 需求/解决问题 · 架构 · 使用反向代理和CDN加速网站响应 · 需求/解决问题 · 架构 · 使用分布式文件系统和分布式数据库系统 · 需求/解决问题 · 架构 ·

个人作业2————英语学习APP的案例分析

必应词典案例分析 第一部分 调研, 评测 1.下载并使用 第一次使用必应词典,安装完打开便是这样的界面,第一印象还行,界面平平无奇,比较简洁,上面分四个模块,这样一眼看去感觉功能比较单一 使用了下例句,这是没开始搜索前的界面,有一个输入框可以输入,然后,下面一片区域,第一眼以为那些漂浮的句子是可以点击的, 尝试了下发现并不能,真的只是单纯的"一片空白",,感觉这个界面简洁有点过头了,下面四分之三的区域没查询之前都是没用的, 我觉得放一下例子也好啊,比如要是输入一小段句子,会出来什么:又

《税收数据终端泄露防范及案例分析》

由丁源主编的<税收数据终端泄露防范及案例分析>撰写正是根据税务信息安全管理要求,在江苏省无锡地方税务局开发应用“税务数据防泄露安全管控平台”同时进行理论研究,将此作为应对税源专业化管理改革后各级税务机关开展大数据分析应用的重大安全保密举措和重要创新研究成果.该项目在全国税务系统内率先开展税务业务敏感数据安全管理的探索,取得了初步的信息技术应用成果. 作者简介 丁源,江苏省无锡地方税务局党组书记.局长,无锡地方税务局无锡市国际税收研究会会长.长期关注.研究税收征管与税收风险管理等领域,先后在省部

大型网站技术架构--核心原理和案例分析 大型网站架构演化(一)

如果把上世纪90年代CERN正式发布web标准和第一个WEB服务的出现当作互联网的开始,那么互联网站的发展之经历了短短20多年的时间.在20多年的时间里,互联网的世界发生了变化,今天,全球有近一半的人口使用互联网,人们的生活因为互联网而产生了巨大的变化.从信息检索到即使通信,从电子购物到文化娱乐,互联网渗透到生活的每一个 角落,而且这种趋势还在蔓延.因为互联网,我们的世界正变得越来越小. 同时我们也看到,在互联网跨越式发展进程中,在电子商务火热的市场背后却是不堪重负的网站架构.某些B2C网站逢促

java代码实现highchart与数据库数据结合完整案例分析(二)---折线图

作者原创:未经博主允许不许转载 在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客. 现在分析和展示折线图的绘制和案例分析, 先展示效果图: 与饼状图不同的是,折线图展现更多的数据,也会体现出更多的自动性. 先展示一下js代码: <!-- 播放类型统计折线图 --> <script type="text/javascript"> $(function () { var livFlowList=document.getElementById(

个人作业2--APP案例分析

APP学习案例分析 相信每一个认真学习过英语的人都会选择一款适合自己的APP.我也不列外,在读托福的过程中,听力一直是最重要的,国外有许多网站提供了很多英语的短篇文章或是科学文章,但是能把这些音频归纳起来的软件并不多,我今天要介绍的一款软件是一款我常用的APP,但是存在一些些许的bug. 举例产品:缤纷英语 调研和评测 下载并使用,描述最简单直观的个人第一次上手体验. 界面很简洁没有多余的广告,分类也很清楚易懂.可以看的出这个软件分类相当的多,而且考虑相当的周全,有以考试类型来分类的,也有以单词