zoukankan      html  css  js  c++  java
  • 干货|爱奇艺CDN巡检系统技术解析

    小结:

    1、

     中心处理系统

    /1/将定制后的巡检任务拆分,通过配置与任务分发系统、CMDB*( configuration management database)将派发到边缘拨测系统
    /2/处理边缘拨测系统返回的拨测结果,进行分析计算

     2、

    数据处理中心将巡检任务生成系统产生的巡检任务用例拆分,结合分布式消息处理框架celery,支持上百万QPS的巡检用例拆分,秒级将巡检任务发送给配置与任务分发系统。

    https://mp.weixin.qq.com/s/trAUlnQM1BGgxFALrLM_SQ

    干货|爱奇艺CDN巡检系统技术解析

    CDN的全称是Content Delivery Network,即内容分发网络,是一种分布式网络系统。CDN依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。爱奇艺作为中国高品质的视频娱乐服务提供者,致力于让人们平等、便捷地获得更多、更好的视频,CDN的稳定运行是保障用户获得丰富、高清、流畅视频体验与服务的基石,其重要性不言而喻。

    爱奇艺CDN采用混合云架构,包括自建CDN和商业CDN数万台CDN服务器,为月活超过5亿用户提供服务。混合云架构可以提升资源利用率、降低成本,但同时也带来了软件与服务变更管理和CDN服务质量监控的困难。软件与服务变更可以被称之为运维领域的“阿克琉斯之踵”,稍有不慎就像打开了“潘多拉魔盒”,爱奇艺自建CDN和商业CDN都在软件升级与配置变更、机房割接、服务器故障下线再重新上线后出现过配置不统一、文件不完整等问题导致用户报障,这是影响爱奇艺CDN服务稳定性的重要问题。在此同时,商业CDN还出现过劫持率较高、非本省覆盖,定向流量出网的情况。更严峻的是,以上很多异常都是用户报障后才被分析出来,我们很被动,用户体验也不好。所以,为了随时掌握全网数万台CDN服务器的服务情况,同时要保证在CDN服务器在进行软件与服务变更后进行上线之前就发现问题,我们设计和实现了CDN巡检系统。

    系统整体架构

    爱奇艺巡检系统目前支持自建和商业CDN的全量IP功能巡检、定向调度巡检、覆盖率与劫持情况巡检,其中:

    功能巡检:验证相关视频文件是否满足奇艺CDN功能需求,验证其线上配置是否满足标准化。

    定向流量巡检:验证提供服务的CDN服务器是否属于定向地址库,提供的定向流量服务是否正常。

    覆盖率与劫持巡检:验证提供服务的CDN服务器是否由本省服务器提供服务,是否存在劫持情况。

    爱奇艺CDN巡检系统主要包括三个子系统,如图一为系统架构图:

    1. 巡检任务生成系统:负责数万台CDN服务器的巡检用例的定制化生成,支持人工定制或者定时触发巡检。

    2. 中心处理系统:爱奇艺CDN巡检系统核心,负责将定制后的巡检任务拆分,通过配置与任务分发系统、CMDB将巡检任务派发到边缘拨测系统,同时还要处理边缘拨测系统返回的拨测结果,进行分析计算。

    3. 边缘拨测系统:负责自建CDN和商业CDN的拨测,并将拨测结果反馈给巡检任务中心处理系统,覆盖移动、联通、电信、广电、方正宽带等多家运营商,20多个省份,包括800多个探测点。

    巡检任务生成系统

    巡检任务生成系统如图二所示,主要由三部分组成:

     

    图二 巡检任务生成系统

    1. 巡检用例筛选器:巡检用例筛选器从线上筛选覆盖各端访问的所有类型的视频格式文件,对筛选出的文件添加巡检标识符,生成巡检文件列表,作为巡检用例生成器的输入,同时通过智能分发系统将巡检文件分发到CDN存储。

    2. 实时IP库:由各家CDN实时IP接口汇聚而成,作为巡检用例生成器的输入,用于全量IP巡检用例的生成。

    3. 巡检用例生成器:结合巡检文件列表与实时IP库,对文件添加相应鉴权参数与IP替换,将其“加工”成不同的CDN巡检用例,写入redis,供中心处理系统随时调用处理。

    技术挑战

    目前爱奇艺使用了多家CDN资源,服务器高达数万台,带来了两个挑战:

    1. 保证CDN服务IP实时、准确

    实时性:我们的做法是要求每家CDN返回的API接口实时动态更新,粒度为5分钟,添加时间戳进行校验。

    准确性:结合爱奇艺及多个第三方厂商的IP地址库等地址库对每一个IP进行服务区域和运营商识别,将其归类写入MySQL,用于比对校验。对于IP总数小于500的厂商,比对时发现差异超过其IP总数的5%进行报警,对于IP总数大于500的厂商,我们将差异扩大到10%,当报警发生时,及时与商业CDN沟通是否发生了故障和流量调整。

    2. 保证极低的巡检用例生成错误率:每家商业CDN都有不同的访问规范和要求,需要兼容域名和IP等多维度的URL生成逻辑,基础巡检文件个数100+,“定制”化的巡检用例高达数百万,巡检用例生成器需要保证生成用例错误率小于0.001%。

    中心处理系统

    作为巡检系统的“大脑”,中心处理系统需要数据处理中心、CMDB、配置与任务分发系统、智能调度系统的协作与配合,如图三所示,完成复杂的巡检测试任务,其中:

    图三 中心处理系统

    数据处理中心:数据处理中心将巡检任务生成系统产生的巡检任务用例拆分,结合分布式消息处理框架celery,支持上百万QPS的巡检用例拆分,秒级将巡检任务发送给配置与任务分发系统。数据处理中心使用ZeroMQ收集边缘拨测系统的拨测结果,通过相关分析计算,将巡检结果实时投递到业务大屏、生成巡检日报和巡检测试报告,与智能调度系统联动。

    配置与任务分发系统: 由于在CDN 复杂网络环境下进行软件部署、配置同步、应用状态管理是非常复杂的,开源的ansible、puppet等工具已无法满足快速迭代、持续交付的需求,爱奇艺系统网络团队自研的配置与任务分发系统目前支持数万台服务器配置分钟内同步,可重试可重入,结合CMDB,快速将巡检任务分发到边缘拨测系统,保障巡检快速、高效稳定。

    智能调度系统:巡检分析结果可以直接与智能调度系统联动,根据故障类型做出业务决策,如果是IP粒度的小型故障,自建CDN自动上下线,对于商业CDN要求其两个小时内处理完毕,无法修复要求其摘除IP,更新API接口。如果是大型故障,如某省、某运营商故障或某类型文件无法播放,智能调度系统及时调整流量,使用其他CDN进行灾备切换。

    技术难点:对于全量IP拨测,在巡检任务拆分阶段需要结合IP所属运营商、不同运营商IP分布密度,拨测agent实时服务状态,拨测agent与被巡检CDN的网络状态等信息做出决策,保障99%以上的拨测覆盖率。

    边缘拨测系统

    边缘拨测系统是巡检拨测任务的真正执行者,分布在全国各大运营商、多个省份,有着强大的分布式处理能力,并且部署方式简单,只需部署定制化的非侵入拨测脚本,任一服务器都可作为拨测agent。配置与分发系统负责巡检拨测任务触发,监控每一个拨测任务的执行情况。如图四所示,拨测agent支持两种巡检拨测方式:

    图四 边缘拨测系统

    1. IP模式:用于全量IP巡检,通过IP直连方式获取被巡检CDN的拨测结果,主要用于功能测试。

    2. 域名解析模式:线上用户的真实访问是通过域名方式来完成的,由于各家CDN为了保障用户遵循自身的调度策略要进行二次调度,可能出现使用外省资源服务用户,这样会降低用户访问质量甚至出现劫持的情况。同时,定向流量调度对于各家CDN的二次调度要求更为苛刻, 时刻需要保障响应IP符合其提供的地址段。拨测agent通过模拟真实用户,使用域名方式访问CDN,获取各家CDN的本省覆盖率和劫持情况、定向流量调度情况。

    系统应用场景

    CDN巡检系统上线后,自建CDN与商业CDN在进行服务与配置变更时都需要经过巡检系统巡检通过后才能上线服务。另外的,巡检系统对于已经在线上服务的自建CDN与商业CDN还会进行定时巡检,如图五所示。

     

    图五 巡检系统应用场景

    1. 服务变更:在新IDC节点上线、服务器上线和IDC节点割接的上线流程中,调用巡检系统对CDN服务器功能进行检查,通过检查才允许服务器在智能调度系统上线,避免异常服务器上线。

    2. 配置变更:在进行软件升级或者配置变更的过程中,实时调用巡检系统进行CDN服务器功能检查,在发现异常的情况下及时回滚,降低影响范围和时间。

    3. 商业CDN变更:新商业CDN上线对接、新需求上线、故障恢复上线的过程中,调用巡检系统进行CDN服务器进行功能检查,通过检查后才允许上线,降低商业CDN的故障概率。

    4. CDN定时巡检:CDN巡检系统定时创建CDN巡检任务,对CDN服务器的功能性,本省覆盖率、劫持情况、运营商定向流量业务进行检查,及时发现线上异常,并采取相应措施。

    成果与展望

    爱奇艺CDN巡检系统已平稳运行半年,检测出相关功能配置问题100多起,文件MD5不一致问题10起, 定向流量出网5起,推动三家商业CDN整改服务资源,确保其保障100%的本省覆盖率。未来,爱奇艺巡检系统会支持更多的巡检模式,结合人工智能技术,为未来的IOCP业务、奇速播业务保驾护航,保障用户极致的视频娱乐体验。

  • 相关阅读:
    6. Flask请求和响应
    5. Flask模板
    FW:Software Testing
    What is the difference between modified duration, effective duration and duration?
    How to push master to QA branch in GIT
    FTPS Firewall
    Query performance optimization of Vertica
    (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview
    (转)The remote certificate is invalid according to the validation procedure
    Change
  • 原文地址:https://www.cnblogs.com/rsapaper/p/10780011.html
Copyright © 2011-2022 走看看