AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

Uber 开源其大规模指标平台 M3

  • 2018-08-25
  • 本文字数:1515 字

    阅读完需:约 5 分钟

Uber 的工程团队发布了其开源指标平台 M3,该平台已经在 Uber 内部使用多年。构建这个平台是为了取代基于 Graphite 的系统,M3 提供了集群管理、聚合、收集、存储管理、分布式时序数据库(TSDB)以及带有其查询语言 M3QL 的查询引擎。

Uber 之前的指标和监控系统是基于 Graphite 的,由一个共享的 Carbon 集群作为支撑,Nagios 负责告警,Grafana 负责提供仪表盘功能。这种方式的问题在于弹性和集群能力比较差、扩展 Carbon 集群的运维成本比较高以及缺少副本的功能,使得每个节点都面临单点故障的风险。新的 M3 指标系统就是为了应对这些问题而产生的。除了扩展性、全局性、跨数据中心的响应式查询之外,新系统的目标还包括标记指标、维持以 StatsD 和 Graphite 格式发送指标的服务的兼容性。 Rob Skillington 是 Uber 的软件工程师,在最近的文章中描述了M3 的架构。M3 目前存储了66 亿条时序数据,每秒收集5 亿个指标并且每秒存储2000 万个指标。

初始版本的M3 包含了一些开源的组件,包括用于聚合的 statsite 、用于存储的 Cassandra 以及用于索引的 Elasticsearch 。但是这些组件逐渐被内部实现替代了,这主要是因为不断增加的运维成本以及对新特性的需求。在 Uber,因为很多团队在广泛使用 Prometheus,M3 在构建的时候,集成 Prometheus 作为远程的存储后端。

Prometheus 的集成是通过一个 sidecar 组件实现的,该组件会向本地区域(regional)的 M3DB 实例写入数据,并将查询扩展至“区域间协调器(inter-regional coordinator),它会从本地区域的 M3DB (存储引擎)实例协调读取”。这种模型的运行方式类似于 Thanos ,Thanos 是 Prometheus 的一个扩展,提供了跨集群联合、无限制存储以及跨集群全局查询的功能。但是,Uber 团队基于各种原因并没有选择Thanos ,主要原因在于非本地存储的指标所带来的高延迟。Thanos 从AWS S3 中拉取并缓存指标数据,因此会带来相关的延迟和用于缓存的额外空间使用,鉴于Uber 在延迟方面的需求以及庞大的数据量,这种方式是不可行的。

M3 的查询引擎提供了所有指标数据的全局视图,无需跨区域的副本。指标写入到本地区域的 M3DB 实例中,副本对区域来讲是本地化的。查询既可以访问本地区域实例,也可以访问存储指标的远程区域中的协调器。结果是在本地聚合的,未来的工作计划是所有的查询都会在远程协调器中进行。

M3 允许用户指定每个指标存储的保存期限和粒度,就像 Carbon 一样。M3 的存储引擎会将每个指标在区域内生成三个副本。为了减少磁盘的使用,会采用自定义的压缩算法对数据进行压缩。大多数的时序数据库都具有压缩整理(compaction)的特性,较小的数据块会重写到较大的数据块中,并重新组织结构以便于提升查询性能。M3DB 尽可能地避免这种压缩整理,从而最大限度地利用主机资源进行更多的并发写入操作并实现稳定的写入和读取延迟。

Skillington 在文章中说到,“M3DB 只有在绝对必要的时候,才会将基于时间的数据压缩整理到一起,比如回填(backfilling)数据,或者将时间窗口索引文件联合在一起具有一定意义的时候”。指标使用一个流模型进行缩小采样(downsample),当指标进入的时候,缩小采样的流程就会执行。

因为PromQL 缺少了一些特性,所以 Uber 内部使用了M3 自己的查询语言 M3QL。在能够处理的指标基数方面会有一些限制,这主要指的是查询而并非存储。M3 通过采用 Bloom 过滤器内存映射文件的索引,优化了对时间数据的访问。Bloom 过滤器用来确定集合中是否存在某些内容,在M3 中,它用来确定要查询的序列是否需要从硬盘中检索。团队目前正在致力于添加在 Kubernetes 上运行 M3 的功能

M3 是使用 Go 语言编写的,可以通过 Github 获取。

查看英文原文: Uber Open Sources Its Large Scale Metrics Platform M3

2018-08-25 16:553987

评论

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

电脑上微信聊天记录的默认保存路径是在哪里?

InfoQ IT百科

浅识鸿蒙的Java技术栈

Bob

百万奖金,首届船海数据智能应用创新大赛正式开赛

科技热闻

如何使用hardhat进行合约uups模式升级

BSN研习社

区块链

在 Amazon QuickSight 中使用 Athena 数据连接器可视化 DynamoDB 数据

亚马逊云科技 (Amazon Web Services)

DevOps 亚马逊云科技 career tutorial

如何用Excel画图?

InfoQ IT百科

png、jpg这两种图片格式有什么不同?

InfoQ IT百科

自助洗车机加盟项目要怎么加盟

共享电单车厂家

自助洗车加盟 自助洗车机项目

怎么转换视频的格式?

InfoQ IT百科

下载软件哪个好?

InfoQ IT百科

post接口请求测试,通俗易懂!

Liam

测试 Postman swagger 测试工具 jmetere

如何给电脑文件夹设置密码?

InfoQ IT百科

TASKCTL 调度平台服务节点管理

敏捷调度TASKCTL

DevOps 分布式 自动化部署 Kafka ETL TASKCTL

如何将PDF转换成Word?

InfoQ IT百科

Excel表格中怎么防止重复录入数据?

InfoQ IT百科

常见的杀毒软件有哪些?

InfoQ IT百科

淘宝小程序体验优化:数据分析和优化实践

阿里巴巴终端技术

小程序 数据分析 体验优化 性能模型

TASKCTL 应用工程与作业类型的定义

敏捷调度TASKCTL

DevOps 敏捷开发 批量任务 ETL系统 自动化运维

常见的中文电脑输入法软件有哪些?

InfoQ IT百科

24小时自助洗车加盟怎么收费?

共享电单车厂家

自助洗车加盟 24小时自助洗车

怎么添加或删除电脑上的应用软件呢?

InfoQ IT百科

24小时自助洗车设备厂家哪家好?

共享电单车厂家

自助洗车机厂家 24小时自助洗车 自助洗车机设备

如何认证成为亚马逊云科技 DevOps 专家?

亚马逊云科技 (Amazon Web Services)

DevOps 亚马逊云科技 tutorial caree

加盟自助洗车需要符合什么条件

共享电单车厂家

加盟自助洗车 自助洗车加盟条件

如何发起 MQTT 亿级连接和千万消息吞吐性能测试

阿里巴巴云原生

截图快捷键是什么?

InfoQ IT百科

深入浅出 Zookeeper 中的 ZAB 协议

悟空聊架构

zookeeper ZAB 4月日更 悟空聊架构 4月月更

如何共享电脑上的文件?

InfoQ IT百科

如何批量导出PPT里的图片?

InfoQ IT百科

限时好礼 | MongoDB又有新书籍出炉啦!

MongoDB中文社区

mongodb

怎么建立无法删除的文件夹?

InfoQ IT百科

Uber开源其大规模指标平台M3_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章