金山视频云大数据平台架构建设实践
先说大数据平台。基于以上数据需求,金山视频云大数据平台在实践中,通过不断演进,最终形成了目前以Hadoop和Spark生态产品为基础的架构。平台的数据传输采用的是Kafka,作为现今最主流的传输中间件,它出色的吞吐能力为第一层数据缓冲提供了保障。数据计算全部采用Spark,技术栈的精简能够保证开发效率和平台稳定性,而且Spark可提供足够丰富的数据挖掘和机器学习库保证数据的后处理。
在数据的前处理上,金山云采用的是实时流+离线流修补的经典架构,实时流在一定精度的前提下,保证了数据的及时性,离线流保证了数据的最终完整性。此外,平台还引入了边缘计算,作用是在充分利用CDN节点分布式天然优势的同时,可大大降低中心数据平台的压力,提升了平台的整体稳定性。
金山视频云大数据平台架构
对于一个数据平台来说,最复杂的是数据存储,不同的数据查询和获取需求决定了最终的存储选型:对于查询灵活性要求极大,数据量适中的数据,金山云使用ElasticSearch + Kibana提供灵活的数据存储与查询服务。对于查询模式相对固定、数据写入量巨大的数据,Druid是一个不错的选择。
CDN的全量原始日志,则会经过ETL后以列存储的方式存储在HDFS上,可以通过SQL、代码片段等多种方式对数据进行查询分析。此外,整个数据平台使用金山云自研的大数据产品KMR,它对金山云其他IaaS服务的天然支持提供了很多便利,如分布式对象存储KS3,可以作为平台存储空间的扩充,重要的数据以及长期不用的冷数据,都会定期自动备份到KS3中持久存储。
金山视频云大数据平台采用多种技术
大数据平台的运维实践
基于这个大数据平台,金山云开发了多套系统提升运维效率。第一个是报警系统,大数据平台承载了CDN所有业务报警数据的清洗、计算和决策生成,Spark对流式计算的支持保证了数据产生到报警整个过程能够在1分钟内完成,保证及时发现问题,系统本身良好的水平扩展能力,也能够满足视频云运维不断变化的业务需求。
CDN业务报警的特点是种类多、维度多、报警阈值因地区运营商而异。报警规则和报警阈值的管理工作很复杂,为此,金山云的报警平台中有一套专门用于阈值评估的离线分析系统,针对所有指标的历史数据、人为配置以及运维对报警的反馈信息,综合评估出不同区域运营商的合理阈值,极大地降低了报警管理的难度。
第二个系统是CDN服务质量的“观象台”——鹰眼平台,它提供了50+业务指标、5+维度的服务质量数据的查询能力,可满足日常运维和调优工作中80%以上的数据获取需求,并可场景化呈现故障处理、网络链路质量、大客户服务质量维护等多种常见运维工作。
鹰眼的数据需求繁杂,既提供全局服务质量信息,也需要满足不同域名、区域运营商、链路以及缓存状态的细粒度查询,甚至需要对这些维度进行任意组合。为了满足这样的查询需求,鹰眼的服务质量数据使用ElasticSearch作为底层存储,在中等规模数据的写入和聚合查询方面的速度都很理想,文档化的存储方式也能满足数据快速迭代更新的需求。同时,鹰眼数据的部分聚合被下放到节点上进行,这样可以降低平台的计算负载。
基于大数据平台和产生的数据,金山云CDN已能在包括调度、故障处理、质量调优在内的很多场景中实现自动化。除了大数据,接下来金山云还会在机器学习和人工智能领域进行运维智能化的探索。