高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

Netflix 如何使用 Mantis 进行运维数据流及批量处理

  • 2016-05-03
  • 本文字数:1693 字

    阅读完需:约 6 分钟

今年三月,Netflix 在博客中推出了一系列文章,介绍了该公司设计的一个运维指标处理平台,名为 Mantis 。在这个平台上可进行细粒度、设备级别的事件推送,并捕获运维相关的指标。它使得 Netflix 能够构建具备极细粒度、实时的数据观察应用,通过这些应用能够深刻地了解Netflix 终端用户的设备与AWS 服务之间的互操作,这些功能包括运维方面的仪表板,以及通过 SPS 的分析实现的单个节目级别的警告功能。

Netflix 现有的服务级别监控系统并不适用于理解与诊断在具体某个特定用户、设备和娱乐节目的环境中,与设备级别行为相关的问题。这些用户、设备与节目的组合形成了一种资产,而数据的捕获、转换、报表生成以及警告就是基于这些资产进行的。由 Mantis 所驱动的异常检测功能让工程人员能够跟踪每种资产的各种事件,使他们能够快速地对生产环境中的问题进行响应,并得知受到影响的用户群体。而这些能力是作用在一个高处理量、高基数的实时流处理以及批量数据处理的环境中实现的。

Mantis 与 Netflix 现有的基础设施实现了良好的集成,允许开发者及其应用提交用于生成事件、处理事件和查询事件的各种作业。这些事件来自于约20 种不同的数据源,包括 Zuul 和 API 等服务、个性化和点播服务、以及设备日志数据等等。事件生成者与调用者之间的解耦实现了这两者之间的隔离,为生产环境中的异常检测和修复提供了更大的灵活性。

该系统的架构基于Apache Mesos 设计,它提供了一种处于应用开发者与 EC2 服务器集群之间的抽象层,作为流处理作业计算资源的共享池。应用开发者可通过一系列 API 或某个图形用户界面对作业进行配置,并可在之后对作业的配置进行编辑,以及查询当前各项指标。应用开发者可以基于这些数据构建自己的应用程序,同时又与Mantis 的内部实现细节保持了解耦。

Mantis 作业具备不同的消息保证级别,遵循 Kafka语义,例如“最多一次”可保证传递,以及“至少一次”可保证传递。曾有人向Mantis 的工程师 Neeraj Joshi 询问 Mantis 为何不使用其他架构方案,包括 Spark Streaming 。Joshi 指出,

基于 Kafka 的实现对于资源的调度具备更多的控制能力,因此我们可以选择更智能的分配方式,例如 binpack 算法等等(同时也让我们能够对作业的处理进行扩展)。

Mantis 的设计中包括一个 master/agent 的集群模型,并使用了 Frenzo 。Frenzo 是一个资源管理器,它最近刚刚成为一个开源项目,作为一个 Java 的调度器库,它可以通过在 Mesos 工作集群中新增与删除实例的方式实现自动伸缩。伸缩的标准取决于资源使用率指标、作业的调度时间,以及通过资源使用率仪表板对作业进行的人工操作等等。Fenzo 可基于作业调度时间以及当前的资源使用情况动态地分配EC2 实例。作业管理器可提供元数据保留、SLA、部署位置、作业拓扑结构以及生命周期等信息。

Mantis 能够执行的任务包括流处理、具有背压感知性的非阻塞性作业、数据转换以及异步结果存储。对于基本的转换 / 聚合等用例,作业可以定义为一个单独的阶段。而对于高处理量、高基数的事件流,也可以将作业定义为多个阶段进行分片与处理等操作。

Netflix 的工程师 Nick Mahilani 提到了 Mantis 的作业定制化、用户自定义的作业以及内部的实现细节:

系统提供了一些可重用的作业,用户在提交这些作业时能够传递不同的参数集。举例来说,某些作业通过不同参数可连接至不同的来源、根据不同的 key 进行分组、或基于阀值参数进行异常检测。某些作业还能够接受被动态编译为模板作业的参数……

用户可自行开发以作业方式进行提交的新应用,他们可专注于作业本身的编写,而无需考虑扩展或资源设置方面的问题。在实现 Mantis 作业时需要引入 Mantis 运行时库,并实现某个 Java 接口。该作业将被传递一个 RxJava Observable对象,作业的开发者可通过 Rx 操作符对其进行转换。作业的执行结果可传输至管道的下一个阶段,也可让其他作业使用经过转换的流。在部署作业时,用户需要将作业打包为一个.zip 文件,随后通过 Mantis 集群进行分发。

据报告显示,在处理运维用例时,Mantis 能够充分利用服务器上的网卡,同时保持很少的 CPU 占用。

查看英文原文 Operational Data Stream and Batch Processing at Netflix with Mantis

2016-05-03 19:002071
用户头像

发布了 428 篇内容, 共 162.7 次阅读, 收获喜欢 33 次。

关注

评论

发布
暂无评论
发现更多内容

dm-V1.0.5使用汇总

TiDB 社区干货传送门

管理与运维

TiSpark 2.4.1(Spark 2.4.5)到TiSpark 2.5.0(Spark 3.0.X/3.1.X)迁移实践

TiDB 社区干货传送门

实践案例

【备考指南】新版 PingCAP PCTP 认证考试

TiDB 社区干货传送门

传统行业数据架构发展变化

TiDB 社区干货传送门

数据库架构选型

【白皮书】TiDelta,一款简单易用的 TiDB 性能对比 Web 工具。

TiDB 社区干货传送门

TiDB统计信息原理简介与实践

TiDB 社区干货传送门

管理与运维

温故知新 | mydumper & dumpling 知识点汇总

TiDB 社区干货传送门

Raft/Paxos类协议与分布式事务

TiDB 社区干货传送门

数据库架构设计

TiDB 5.4 单机快速安装初体验

TiDB 社区干货传送门

管理与运维 版本测评

【专栏平台上线】来自社区的一份感谢信,致谢 137 位 TiDB 社区技术布道师

TiDB 社区干货传送门

TiDB Binlog 支持 Oracle 目标库功能用户手册

TiDB 社区干货传送门

迁移

大事务的处理方式对比

TiDB 社区干货传送门

实践案例

数据库调优之硬件

TiDB 社区干货传送门

性能调优

TiDB源码系列之沉浸式编译TiDB

TiDB 社区干货传送门

TiDB 源码解读

在CentOS7上进行TiDB/PD/TIKV编译分享

TiDB 社区干货传送门

实践案例 安装 & 部署

TIKV、PD添加TLS总结

TiDB 社区干货传送门

实践案例

TiEM初体验

TiDB 社区干货传送门

集群管理 管理与运维 6.x 实践

TPC-H 下 TiFlash 的扩展性测试报告 - v5.1.0

TiDB 社区干货传送门

版本测评 性能测评

TiDB 5.4 发版丨新功能解读

TiDB 社区干货传送门

Tidb为什么能做到国产第一

TiDB 社区干货传送门

性能测评 数据库架构设计 应用适配

DM 同步 modify column 语句到 TiDB 5.3 踩坑一:数据乱码

TiDB 社区干货传送门

实践案例 故障排查/诊断

TiDB与众不同的优化器

TiDB 社区干货传送门

性能测评 应用适配

一言难尽的Prometheus监控实践

TiDB 社区干货传送门

实践案例

TiDB 悲观事务模式和Mysql的表象区别

TiDB 社区干货传送门

DR Auto-Sync 搭建和计划内切换操作手册

TiDB 社区干货传送门

悲观锁模式下 TiDB 与其他数据库在 RC 及 RR 隔离级别的行为对比

TiDB 社区干货传送门

【考试指南】TiDB 5.0认证指南之PCTA PCTP

TiDB 社区干货传送门

TiDB 底层架构

ticdc没报错,tso却不变的奇怪现象

TiDB 社区干货传送门

用 Gravity 实现 MongoDB 到 TiDB 的数据复制

TiDB 社区干货传送门

DM 同步 modify column 语句到 TiDB 5.3 踩坑二:DDL 语句重放

TiDB 社区干货传送门

实践案例 故障排查/诊断

混沌工程在建信金科的应用实践

TiDB 社区干货传送门

实践案例 故障排查/诊断 TUG 话题探讨

Netflix如何使用Mantis进行运维数据流及批量处理_DevOps_Dylan Raithel_InfoQ精选文章