线上服务的有效监控和数据收集,一直是后端服务离不开的话题。直播作为一种经典的分布式系统,监控以及数据收集更是必不可少的工作。如何对海量的服务集群有效的监控和保活,又如何抓取集群中的碎片数据中来优化服务?网易云信音视频研发工程师将和大家共同探讨。

推荐阅读

视频私有云实战:基于Docker构建点播私有云平台

高清音质背后:网易云信音乐教学方案技术解密

机器站在巨人的肩膀上用着轮子

作为分布式集群,物理层上的最小单位自然是机器。对于一台机器而言,常规性能指标自然就是CPU、内存、网卡的使用情况。这些性能有很多方式去获取,而视频云采用的是网易的哨兵系统。哨兵系统是网易的监控系统,提供了非常详细和即时的性能指标。

借由哨兵这个强大的轮子,我们能非常方便的在机器级别上,做出有效的监控。例如当网卡流量或者cpu异常的时候,可以快速的报警采取处理。当然,不光光可以监控机器是否能正常运行,也可以监控是否被恶意攻击,这个暂且不谈。

性能指标与业务融合

当然,只有机器级的数据,是远远不够的。俗话说,不与业务贴合的数据,不是好数据。作为直播CDN服务,最常规的参数,自然是音视频码率和延迟。

细心的看官们可能发现了几个比较特殊的统计。

为什么统计了总码率也统计了音视频单独的码率?

这是因为在真实的场景中,总码率并不一定能还原出我们需要的场景,有很多情况会需要单独的分析音视频码率,例如用户主动关闭了视频输出或者机器采样性能不足导致的视频卡顿,这个时候只需要配合帧率的统计,就可以快速还原场景。当然,视频码率本身也不是一个固定的数值。视频云也针对弱网提供QoS(即可变码率)的功能。

推送延迟push_delay是什么?

推送延迟,是一个衡量C/S之间网络情况的参数。当这个参数发生波动的时候,则说明C端的包到达S的时间比预计要长。能够反映出网络的抖动情况。如果计算这个数值呢?简单来说,是使用了RTMP包头部的时间戳。如果非要用一个公式解释一下,我觉得应该是:

Delay=abs( (当前RTMP包的到达时间-上个RTMP包的到达时间) – (当前RTMP包的时间戳–上个RTMP包的时间戳) )

计算每个包到达服务器所消耗时间的差异值,用于代表网络的抖动。当然,还需要做其他很多事情,例如加权和jitter算法来减少误差和避免。

为什么还有send_kbps?

其实这也挺好理解,因为CDN本身是分布式系统,在节点和节点间需要做路径选择,然后从节点到节点传输,从而实现加速。Send_kbps其实就是前一个节点向后一个节点的发送码率。那么这就涉及到了一个问题,如果去trace某一条流的数据呢?对于每一条流,我们会给予一个唯一的标记,在节点间传递的时候,我们会给流添加一个自增的标记Hops。

通过这个标记,可以精准的找到这条流在节点件的走向,从而把各个节点的数据聚合在一起

其他,我们还会抓取一些类似源IP,用户设备等客户端的信息。这些信息能帮忙我们走进大数据时代。

整体数据服务的架构

分布式系统中,每一个节点都会产生大量的统计和性能数据。所以在视频云,有一个完整的统计架构来作出支持。从最前端的数据采集、传输,到汇总,然后到计算集群,最后输出。每一个服务都各司其职。让我们来看看整体架构。

对于每一个区域,会有一个数据汇聚的服务器,负责从流媒体服务器收集数据。最初的元数据,经过数据汇聚服务器汇总、过滤和压缩以后。统一上报到中心集群中的统计服务器。统计服务器会将所有的统计数据,逐一落库,储存在数据仓库中。其余的数据计算集群,会从数据仓库中定时进行读取计算。具体的计算间隔,会根据业务类型不同而不同。例如运维平台会主要读取一些机器级别的数据,进行分析和报警。大数据计算集群则会对数据进行计算,得出优化方向,此处我们稍后再聊。业务数据展示平台则是会实时的输出数据(例如码率和延迟),用于提供给用户和技术支持查询。当然,还有其他各种各样的数据处理服务,这里就不再一一介绍。

数据能做的一些事情

最后,我们聊一聊数据。在这个大数据时代,有了数据却不做事情,等同于浪费。那么,有了这些数据以后,我们做了什么事情呢?当然,最显而易见的,就是调整调度策略,增设布点。例如,上图的大数据的运算结果,南京电信的网络权重比较差,这就说明南京电信地区需要进行排查。而南京移动的用户量较大,也说明南京地区应该增设服务点。

此外,数据和性能指标的上报,也会被用于均衡负载调度。例如某一个节点压力较大的时候,或者性能不稳定的时候,这个节点的调度优先级就会被降低(即不太会被优先分配给用户)。

以上就是我对于直播CDN服务监控的一些看法,但是直播CDN服务监控和数据收集是一个值得无止境讨论和优化的事情,欢迎大家留言与我探讨。

想要获取更多产品干货、技术干货,欢迎关注网易云信博客

网易云信(NeteaseYunXin)是集网易18年IM以及音视频技术打造的PaaS服务产品,来自网易核心技术架构的通信与视频云服务,稳定易用且功能全面,致力于提供全球领先的技术能力和场景化解决方案。开发者通过集成客户端SDK和云端OPEN API,即可快速实现包含IM、音视频通话、直播、点播、互动白板、短信等功能。

直播技术:从性能参数到业务大数据,浅谈直播CDN服务监控的更多相关文章

  1. 大数据、AI“武装”企业服务:风控、检索、安全

    大数据.AI“武装”企业服务:风控.检索.安全 小饭桌创业课堂2017-05-06 15:26:42阅读(127)评论(0) + - 文|吴杨可月 - - 小饭桌创业研究院出品 - 两件秘闻,将美国大 ...

  2. 奇点云数据中台技术汇(一) | DataSimba——企业级一站式大数据智能服务平台

    在这个“数据即资产”的时代,大数据技术和体量都有了前所未有的进步,若企业能有效使用数据,让数据赚钱,这必将成为企业数字化转型升级的有力武器. 奇点云自研的一站式大数据智能服务平台——DataSimba ...

  3. 2016中国大数据技术大会( BDTC ) 共商大数据时代发展之计

    中国大数据技术大会(BDTC)的前身是Hadoop中国云计算大会(HadoopinChina,HiC).从2008年仅60余人参加的技术沙龙发展到当下数千人的技术盛宴,目前已成为国内最具影响力.规模最 ...

  4. AI时代,还不了解大数据?

    如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI + Big Data + Cloud,也就是人工智能.大数据和云计算. 这几年,随着互联网大潮走向低谷,同时传统企业纷纷进行数字化转 ...

  5. 从无到有开发连麦直播技术<转>

    转贴地址:http://blog.csdn.net/heisedelangzi/article/details/52400333 从无到有开发连麦直播技术点整理-AnyRTC 直播关键字 采集.前处理 ...

  6. 大数据架构师NoSQL建模技术

    从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...

  7. 参加2013中国大数据技术大会(BDTC2013)

    2013年12月5日-6日参加了为期两天的2013中国大数据技术大会(Big Data Technology Conference, BDTC2013),本期会议主题是:“应用驱动的架构与技术 ”.大 ...

  8. 大数据架构师必读的NoSQL建模技术

    大数据架构师必读的NoSQL建模技术 从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企 ...

  9. TOP100summit:【分享实录-WalmartLabs】利用开源大数据技术构建WMX广告效益分析平台

    本篇文章内容来自2016年TOP100summitWalmartLabs实验室广告平台首席工程师.架构师粟迪夫的案例分享. 编辑:Cynthia 粟迪夫:WalmartLabs实验室广告平台首席工程师 ...

随机推荐

  1. QT环境安装VS2013(系统环境里设置QTDIR,并添加VS2013的BIN目录)

    QT环境安装VS2013 文件名 1.qt5.5.1 qt-opensource-windows-x86-msvc2013-5.5.1.exe 2.qt vs插件 3.qt-vs-addin-1.2. ...

  2. 各个 C# 版本的主要特性、发布日期和发布方式(C# 1.0 - 7.3)

    原文 各个 C# 版本的主要特性.发布日期和发布方式(C# 1.0 - 7.3) 本文收集各个 C# 版本的主要特性.发布日期和发布方式. C# 8.0 尚在预览版本 C# 7.3 2018 年 5 ...

  3. easyui的datebox最简单的方法来格式化

    看了网上有很多解决方案,我也写了一个比较简单的方法. 实现easyui的datebox格式化. 效果例如以下.用"++"隔开,看你喜欢用什么都能够. 1.html <span ...

  4. 查看静态库.a文件包含的内容

    查看静态库.a文件包含的内容用下面的命令解压: ar x libgdal.a 然后就可以查看文件了: ls adler32.o           cpl_recode.o               ...

  5. Matlab随笔之三维图形绘制

    1.三维曲线 用到了plot3函数.plot3(x,y,z)用来绘制3维曲线图,而不能绘制曲面图!就是把所有的(x,y,z)点连接在一起. t=linspace(,*pi,); x=sin(t); y ...

  6. Bootstrap按钮组 按钮工具栏 嵌套

    @{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport&q ...

  7. 在WPF中,如何得到任何Object对象的XAML代码?

    原文:在WPF中,如何得到任何Object对象的XAML代码? 在WPF中,可以使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象 ...

  8. 数据绑定(二)把控件作为Binding源

    原文:数据绑定(二)把控件作为Binding源 下面的代码把一个TextBox的Text属性关联在了Slider的Value属性上 <Window x:Class="WpfApplic ...

  9. wpf的webbrowser与javascript交互

    JS调用C#代码 HTML代码: <button onclick="window.external.Test('called from script code')"> ...

  10. VS2013环境里安装QT插件-“X86”与目标计算机类型“x64”冲突

    在VS2013环境里搭载QT老是出现模块计算机类型“X86”与目标计算机类型“x64”冲突 2.解决方案2.1 项目右键,属性>配置管理选择>x64,没有的话新建:2.2  项目右键,属性 ...