34.1 uber开源的m3db简介

本节重点介绍 :

  • m3db自己的定位
  • m3db自己的架构
  • m3db自己的组件

两句话简介

  • M3最初是在优步开发的,目的是提供对优步业务运营,微服务和基础架构的可视性
  • 由于M3具有轻松进行水平扩展的能力,因此它为所有监视用例提供了一个集中式存储解决方案。

m3db地址

  • githubhttps://github.com/m3db/m3
  • 官方文档https://m3db.io/

m3db自己的定位

m3db_01.png

m3db_02.png

历史

  • 2014年,经过数年与基于Graphite和WhisperDB的传统指标平台的对抗之后,Uber的Observability团队开始开发一个开源指标平台
  • 该平台将被称为M3。该项目的目标是为团队提供一个高度可用的集中式指标平台,该平台可以轻松地与现有工具集成。

存储发展过程

  • 存储层的第一个迭代以Cassandra和ElasticSearch为特色
  • 但是,随着打车业务进入高速增长阶段,在Graphite和WhisperDB年代曾困扰团队的交火重新浮出水面
  • 然后,团队决定从头开始构建M3DB,这是一个具有嵌入式反向索引的自定义时间序列数据库,这成为了平台的基础
  • 在大约一年半的时间里,M3DB是在Uber上开发和推出的。

查询问题

  • OOM和缓慢的查询已成为常见现象,这使团队无法有效地监视其服务
  • 名为M3Query的新查询引擎利用了M3DB将数据存储在高度压缩的块中的事实,并在延迟应用函数时一次将数据客户端的一个数据点解压缩
  • 这些优化可最大程度地减少网络,计算和内存资源
  • 支持PromQL和传统Graphite语言的新查询引擎为团队提供了一种非常快速和强大的方法来深入了解其指标

采集问题

  • 随着要摄取的指标数量的激增,很明显,在数据存储策略方面,没有一种万能的方法
  • 不同的团队希望将其指标存储在不同的分辨率和保留期限内
  • 例如,基础架构团队需要以非常高的分辨率(但时间不能太长)存储度量
  • 相反,业务团队不需要精细的粒度,但希望将数据保留更长的时间
  • 该解决方案是M3Coordinator和M3Aggregator这两个组件的组合,它们协同工作以获取指标并以高度可定制的方式聚合它们,同时提供高可用性和效率

架构图

m3db_arch01.png

m3db_arch02.png

组件说明

M3 Coordinator

  • M3协调器是一项服务,用于协调上游系统(例如Prometheus)和M3DB之间的读写
  • 它是用户可以部署以访问M3DB好处的桥梁,例如长期存储和与其他监视系统(例如Prometheus)的多DC设置

m3db

  • M3DB是一个分布式时间序列数据库,提供可伸缩的存储和时间序列的反向索引
  • 它被优化为具有成本效益的,可靠的实时和长期保留指标存储和索引

m3query

  • M3 Query是一个分布式查询引擎,用于查询存储在M3DB节点中的实时和历史数据,支持多种查询语言
  • 它旨在支持低延迟的实时查询和执行时间可能更长的查询,这些数据可以聚合用于分析用例的较大数据集
  • 例如,如果您将Prometheus远程写端点与M3 Coordinator一起使用,则可以使用M3 Query代替Prometheus远程读端点
  • 这样,您可以获得M3 Query引擎的所有好处,例如块处理。由于M3 Query提供了与Prometheus兼容的API,因此您可以使用第三方制图和警报解决方案,例如Grafana

m3aggregator

  • M3聚合器是专用的度量标准聚合器,可在将度量标准存储在M3DB节点中之前提供基于状态的基于流的下采样。它使用存储在etcd中的动态规则。
  • 它使用领导者选举和聚集窗口跟踪,利用etcd来管理此状态,以可靠的方式将一次至少一次的聚集可靠地发送给长期存储的降采样指标。这提供了具有成本效益的,可靠的下采样和指标汇总。
  • M3协调器也可以执行此角色,但是M3聚合器可以分片和复制指标,而M3协调器则不是,并且需要谨慎地以高度可用的方式进行部署和运行。
  • 与M3DB相似,M3 Aggregator默认情况下支持集群和复制。这意味着度量标准已正确路由到负责聚合每个度量标准的实例,并且您可以配置多个M3 Aggregator副本,以使聚合没有单点故障。

本节重点总结 :

  • m3db自己的定位
  • m3db自己的架构
  • m3db自己的组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/486152.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket 通信说明与基于 ESP-IDF 的 WebSocket 使用

一、 WebSocket 出现的背景 最开始 客户端(Client) 和 服务器(Server) 通信使用的是 HTTP 协议,HTTP 协议有一个的缺陷为:通信只能由客户端(Client)发起。 在一些场景下&#xff0…

OpenSSL 自建CA 以及颁发证书(网站部署https双向认证)

前言 1、前面写过一篇 阿里云免费ssl证书申请与部署,大家可以去看下 2、建议大家看完本篇博客,可以再去了解 openssel 命令 openssl系列,写的很详细 一、openssl 安装说明 1、这部分就不再说了,我使用centos7.9,是自…

使用javaScript生成随机迷宫

效果预览 我制作了一个 CodePen,以动画形式展示随机迷宫的创建过程,以便更加直观的观察算法的工作原理。(点击即可访问生成新迷宫) 基本思路 使用javaScript生成随机迷宫的核心思想是使用一个“深度优先搜索”(DFS&a…

【ArkTS】列表组件的“下拉刷新”和“上拉加载”

系列文章目录 【ArkTS】关于ForEach的第三个参数键值 【ArkTS】“一篇带你读懂ForEach和LazyForEach” 【小白拓展】 【ArkTS】“一篇带你掌握TaskPool与Worker两种多线程并发方案” 【ArkTS】 一篇带你掌握“语音转文字技术” --内附详细代码 【ArkTS】技能提高–“用户授权”…

Java项目实战II基于微信小程序的消防隐患在线举报系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化进程的加快&…

每日十题八股-2024年12月7日

1.说说hashmap的负载因子 2.Hashmap和Hashtable有什么不一样的?Hashmap一般怎么用? 3.ConcurrentHashMap怎么实现的? 4.分段锁怎么加锁的? 5.分段锁是可重入的吗? 6.已经用了synchronized,为什么还要用CAS呢…

CTF学习24.11.19[音频隐写]

MISC07[音频隐写] 隐写术 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganograp…

掌握谈判技巧,达成双赢协议

在当今竞争激烈且合作频繁的社会环境中,谈判成为了我们解决分歧、谋求共同发展的重要手段。无论是商业合作、职场交流,还是国际事务协商,掌握谈判技巧以达成双赢协议都具有极其关键的意义。它不仅能够让各方在利益分配上找到平衡点&#xff0…

HTTPS的工作过程

1.HTTPS协议原理 1.1HTTPS协议的由来 HTTP在传输网络数据的时候是明文传输的,信息容易被窃听甚至篡改,因此他是一个不安全的协议(但效率高)。在如今的网络环境中,数据安全是很重要的(比如支付密码又或者各…

鸿蒙UI开发——渐变色效果

1、概 述 ArkTs可以通过颜色渐变接口,设置组件的背景颜色渐变效果,实现在两个或多个指定的颜色之间进行平稳的过渡。 目前提供三种渐变类型:线性渐变、角度渐变、径向渐变。 我们在鸿蒙UI布局实战 —— 个人中心页面开发中,默认…

距离与AoA辅助的三维测距算法(适用于四个基站的情况的单点定位),MATLAB代码

本MATLAB 代码实现了一个基于LOS/NLOS混合环境的单点定位系统,主要用于估计目标物体的单点位 文章目录 代码运行结果源代码代码功能概述主要步骤分析初始化部分 绘图与输出 代码运行结果 定位结果如下: 命令行的坐标和误差输出: 部分代码…

Vue指令(一)--v-html、v-show、v-if、v-else、v-else-if、v-on、v-bind、v-for、v-model

目录 (一)初识指令和内容渲染指令v-html 1.v-html 案例: 官网的API文档 (二)条件渲染指令v-show和v-if 1. v-show 2. v-if (三)条件渲染指令v-else和v-else-if 案例 (四…

记一次由docker容器使得服务器cpu占满密码和密钥无法访问bug

Bug场景: 前几天在服务器上部署了一个免费影视网站,这个应用需要四个容器,同时之前的建站软件workpress也是使用docker部署的,也使用了三个容器。在使用workpress之前,我将影视软件的容器全部停止。 再使用workpress…

【JavaEE 进阶(一)】SpringBoot(上)

博主主页: 33的博客 文章专栏分类:JavaEE ??我的代码仓库: 33的代码仓库?? ???关注我带你了解更多进阶知识 目录 1.前言2.Spring3.第一个SpringBoot程序4.Spring MVC 4.1建立连接 4.1.1RequestMapping使用 4.2请求 4.2.1传递单个参数4.2.2传递多个参数4.2.3传递一个对象…

(未更新完)day30-IO-阶段综合案例(带权重的随机每日一记)(笔记完全来源于黑马程序员)

目录 0 目录一、听黑马阿玮的视频记录的笔记1. 制造假数据1.1 如何制造假数据1.2 练习1-生成方式1:爬取姓氏、男生名字、女生名字1.3 练习2-生成方式1:在练习1的基础上,将数据写入本地文件1.4 练习3-生成方式2:利用糊涂包生成假数…

FPGA中所有tile介绍

FPGA中包含的tile类型,以xinlinx 7k为例,可以通过f4pga项目中的原语文件夹查看,主要包含以下这些: 以下是您提到的 Xilinx 7 系列 FPGA 中各种模块的含义及用途: 1. BRAM (Block RAM) BRAM 是 FPGA 中的块存储资源&…

如何解决压测过程中JMeter堆内存溢出问题

如何解决压测过程中JMeter堆内存溢出问题 背景一、为什么会堆内存溢出?二、解决堆内存溢出措施三、堆内存参数应该怎么调整?四、堆内存大小配置建议 背景 Windows环境下使用JMeter压测运行一段时间后,JMeter日志窗口报错“java.lang.OutOfMe…

嵌入式蓝桥杯学习4 lcd移植

cubemx配置 复制前面配置过的文件 打开cubemx,将PB8,PB9配置为GPIO-Output。 点击GENERATE CODE. 文件移植 1.打开比赛提供的文件包,点击Inc文件夹 2.点击Inc文件夹。复制fonts.h和lcd.h,粘贴到我们自己的工程文件夹的bsp中&#xff08…

学习记录,正则表达式, 隐式转换

正则表达式 \\:表示正则表达式 W: 表示一个非字(不是一个字,例如:空格,逗号,句号) W: 多个非字 基本组成部分 1.字符字面量: 普通字符:在正则表达式中,大…

标书里的“废标雷区”:你踩过几个?

在投标领域,标书的质量不仅决定了中标的可能性,更是体现企业专业度的关键。但即便是经验丰富的投标人,也难免会在标书编制过程中踩中“废标雷区”。这些雷区可能隐藏在技术方案的细节中,也可能是投标文件格式的规范问题。以下&…