写点什么

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:001317
用户头像

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

关注

评论

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

一次好的聊天可以超过自己努力啃几周的书籍

良知犹存

程序人生

“云”上教与学,让教育不止步于课堂

Geek_116789

一款基于 Python 语言的 Linux 资源监视器!

JackTian

Python GitHub Linux bashtop bpytop

程序员陪娃系列——小小免费按摩师

孙苏勇

程序员 陪伴 随笔杂谈

使用 supervisor 配置 ngrok 内网穿透为守护进程

jerry.mei

Linux 操作系统 ngrok 守护进程 内网穿透

构造、析构期间被调虚函数发生的惨案,长教训!

华为云开发者联盟

代码 组合模式 封装、继承、多态 bug 回调函数

移卡荣登2020「AI 最佳成长榜」,AI+金融科技赋能商业服务

DT极客

低代码平台会让程序员失业?测评了5个工具,谁能让效率提高N倍?

代码制造者

编程 编程语言 低代码 零代码 测评

计算机网络基础(十六)---传输层-可靠传输的基本原理

书旅

计算机网络 网络 协议族 网络层

Android 原生 SQLite 数据库的一次封装实践

vivo互联网技术

sqlite android 数据库

内存总是不够?HBase&GeoMesa配置优化了解一下

华为云开发者联盟

内存模型 内存 HBase 大集群 GeoMesa

【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研

华为云开发者联盟

反馈 API 华为云 API Explorer平台 用户调研

BIGO技术:实时计算平台建设

InfoQ_3597a20b53cc

互联网 BIGO

程序员陪娃系列——和孩子聊生死

孙苏勇

程序员 陪伴 随笔杂谈

程序员陪娃系列——见你的第一面

孙苏勇

程序员 陪伴 随笔杂谈

多角度分析,通讯时序数据的预测与异常检测挑战

华为云开发者联盟

时序数据库 即时通讯 异常检测 网络智能体 时序预测

学生党学编程,有这个开源项目就够了!

JackTian

GitHub 学习 编程 程序员 学生党

Linkerd 2.8 - 實現超級簡單又安全的多叢集(multicluster) Kubernetes 架構

Rammus

Kubernetes DevOps 运维 云原生 Service Mesh

入职两周,怀疑自己进了假百度!跟传说中完全不一样!难道真有两家百度公司?

程序员生活志

百度 程序员

《Java并发编程的艺术》读书笔记1:说说并发编程

Jason

多线程 并发

趣文:那天我被拉入 C++ 亲友群

程序员生活志

c c++ 程序员

程序员陪娃系列——育儿路上二三事续

孙苏勇

程序员 陪伴 随笔杂谈

数据库外键

will

数据库 性能 外键

太赞了!程序员应该访问的最佳网站都在这里了!

JackTian

GitHub 学习 编程 程序员 网站平台

程序员陪娃系列——小娃的到来

孙苏勇

程序员 陪伴 随笔杂谈

程序员陪娃系列——育儿路上二三事

孙苏勇

程序员 陪伴 随笔杂谈

十多位全球技术专家,为你献上近十个小时的.Net微服务介绍

newbe36524

容器 微服务 .net core netcore

学了那么多技术,为何依然成不了架构师

菜根老谭

架构设计原则

边云协同!EM-BOX视频分析盒加速安全生产场景落地AI应用

百度大脑

人工智能 人脸识别 图像识别 百度大脑 人体识别

品质网络的迭变之路,以及运营商的未来之匙

脑极体

云图说 | 3分钟创建一个游戏类工作负载

华为云开发者联盟

Docker 容器 华为云 工作负载 2048游戏

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