写点什么

Criteo 使用 Cassandra 存储后端实现 Graphite 的规模化

  • 2018-03-20
  • 本文字数:1240 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Criteo 公司 SRE 团队的一位成员在上个月召开的 FOSDEM 大会上做了一个演讲,介绍了他们如何使用Cassandra 作为存储后端实现Graphite 产品的规模化安装。为实现容错和弹性扩展,Criteo 工程团队编写了一个称为“ BigGraphite ”的 Graphite 用户化插件,替代了 Cassandra 默认使用的 WhisperDB。

Criteo 需要解决容错和弹性扩展问题,这是已被分布式数据库解决的问题。Criteo 团队决定使用 Graphite 的插件架构,编写支持使用 Cassandra 为存储后端的定制插件。该插件作为“ BigGraphite ”项目开源。项目在设计中考虑了支持多种后端,但是目前只提供对 Cassandra 的支持。

Whisper 是 Graphite 推出的默认数据库,它采用固定大小的文件存储数据。文件的大小固定,因为 Graphite 在存储数据时指定了一个预先配置的保留期限,通常更旧的数据以更低的采集频率存储。Criteo 的度量采集横跨具有超过两万台服务器的六个数据中心,每秒写入80 万个数据点。团队维护了两千多个仪表盘,以及一千多种报警,每隔五分钟做一次度量评估。Graphite 的默认配置(包括存储后端)并不能满足这样配置的需求。据报告介绍,除了“每种度量对应一个文件”模型存在大量浪费的问题之外,Graphite 的集群并非十分稳健,也不是“真正可弹性扩展的”。此外,Whisper 中操作数据模型所用的命令行工具运行速度慢,性能脆弱。

图片来源:演讲中使用的幻灯片

在BigGraphite 架构中,有一个Carbon 中继,它将来自于数据中心的事件发送给写入Cassandra 的Carbon 缓存过程。Carbon 中继也实现复制功能,并通过将数据推送给多个Carbon 缓存过程实现分片功能,度量数据由Carbon 缓存过程写入到磁盘。转移到BigGraphite 架构还包括改为使用Graphite Web UI。

演讲中还介绍了Cassandra 的时序模式,但是并未详细介绍如何存储或查询给定度量的标签。 Cassandra 表中的每行数据都包括度量名称和开始时间戳,并以此作为主键,列键使用与开始时间戳的偏移量。Graphite 根据数据所处的保留阶段存储度量数据,例如,为期七天并且每分钟采集一次的数据、为期六个月并且每天采集一次的数据,诸如此类。更早期的度量数据使用聚合函数计算,这反映在 Criteo 团队对 Cassandra 表的设计中。对于一个给定的度量,实现有多个表,其中每个表用于一个给定的保留阶段,即对于一个给定的时期,应存储何种采集频率的数据点。

除了 Cassandra 之外,团队还测评了多种时序数据存储,包括 OpenTSDB Cyanite KairosDB InfluxDB 。Criteo 团队并未采用 OpenTSDB,因为 OpenTSDB 采用 HBase 为后端,但是团队已经为其它用途使用了 HBase 集群,难以在该集群之外再建立一个 HBase 集群。其它选项在完成测评时尚未具备部分所需的特性,因此同样未得到采用。

当前 Criteo 的 Cassandra 集群运行有 20 个节点。团队正致力于引入 Prometheus ,并构建各个系统间的联系纽带

查看英文原文: Scaling Graphite at Criteo Using a Cassandra Backend

2018-03-20 19:001398
用户头像

发布了 391 篇内容, 共 140.5 次阅读, 收获喜欢 257 次。

关注

评论

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

云图说|云数据库MySQL内核小版本升级全攻略

华为云开发者联盟

MySQL 云数据库 内核 华为云数据库 小版本升级

夏季不塞网胶浆、夏季不堵网胶浆

C13713145387

夏季不塞网胶浆

弹力抗刮硅油布胶浆

C13713145387

弹力抗刮硅油布胶浆

架构实战营模块三作业

日照时间长

架构实战营

【案例】新基建下星环科技城轨智能视频分析系统建设

星环科技

高并发系列:架构优化之从BAT实际案例看消息中间件的妙用

Coder的技术之路

高并发 高并发系统设计 消息队列 消息中间件

高并发之存储篇:关注下索引原理和优化吧!躲得过实践,躲不过面试官!

Coder的技术之路

数据库 高并发 索引结构 索引优化

高并发系列:存储优化之也许可能是史上最详尽的分库分表文章之一

Coder的技术之路

高并发 分库分表 高并发系统设计

Java面试:BIO,NIO,AIO 的区别,别再傻傻分不清楚

Java大蜗牛

Java 程序员 面试 编程语言 后端

不反粘水性台板胶Waterborne table glue

C13713145387

不反粘水性台板胶

水性硅胶防滑透明浆

C13713145387

水性硅胶防滑透明浆

聊聊我的编程时如何入门的

C语言与CPP编程

c++ 编程 程序人生 C语言 数据结构与算法

回顾 Alex Smola 讲述的“自动化机器学习(AutoML)”,本文带你了解 AutoGluon!

亚马逊云科技 (Amazon Web Services)

流媒体:依托于声网的连麦解决方案

小岛上的黑桃六

架构 音视频 架构师 流媒体 声网

大四实习生”都四面成功拿到字节跳动Offer了,你还有什么理由去摸鱼?

学Java关注我

Java 编程 架构 面试 计算机

一文抽丝剥茧带你掌握复杂Gremlin查询的调试方法

华为云开发者联盟

调试 图数据库 Gremlin 遍历源 图遍历

百分点大数据技术团队:政务数据安全管理实践

百分点大数据团队

GitHub Actions:真正的 DevOps CI

大龄程序员老羊

架构 DevOps 持续集成 Github Actions NoOps

立体水性石头拉浆

C13713145387

华云大咖说 | 安超DCM给数据中心“做主”

华云数据

Flink on Zeppelin 系列之:Yarn Application 模式支持

Apache Flink

flink

LiteOS内核源码分析:静态内存Static Memory

华为云开发者联盟

内存管理 LiteOS 静态内存 Static Memory Membox

INNOVATE 2021 圆满落幕,一起盘点那些 AI 前沿实例!

亚马逊云科技 (Amazon Web Services)

用机器学习操控无人驾驶小车,竟然和训练狗狗的原理一样!?

亚马逊云科技 (Amazon Web Services)

GitHub开源的最全中文诗歌古典文集数据库

不脱发的程序猿

GitHub 开源 程序人生 中华古典文集数据库

从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶

比伯

Java 编程 架构 面试 计算机

Android中绘制圆角的三种方式

teoking

android

负载均衡续:万亿流量场景下的负载均衡实践

Coder的技术之路

负载均衡 架构 高并发 负载均衡架构

【LeetCode】解码异或后的数组Java题解

Albert

算法 LeetCode 5月日更

万丈高楼平地起,爆肝21000字Java基础知识总结,收藏起来总有用得着的时候

北游学Java

Java 集合 线程池 IO流

专家解惑 | 关于华为云盘古大模型,你想问的都在这里~

华为云开发者联盟

计算机视觉 nlp 华为云 盘古大模型 预训练

Criteo使用Cassandra存储后端实现Graphite的规模化_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章