免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

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

关注

评论

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

性能提升20%,字节跳动HTTPDNS从中心下沉到边缘

火山引擎边缘云

边缘计算 HTTP DNS #DNS 边缘计算平台

AWS 弹性伸缩特性介绍

AutoMQ

云计算 kafka 云原生 AWS

InPlant SCADA笔记 报警管理功能

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 背景模版

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 查看工程的数据库与历史趋势的信息

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 调度任务功能

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 二次确认

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 工程管理的工程属性与全局设置

万里无云万里天

工厂运维 InPlant SCADA

待办事项软件选择指南:挑选你的效率助手

爱吃小舅的鱼

待办事项

一站式解决方案:如何挑选合适的项目工单系统

爱吃小舅的鱼

项目工单管理 项目工单

InPlant SCADA笔记 工程属性中的经典模式

万里无云万里天

工厂运维 InPlant SCADA

蓝易云 - 基本的Linux命令以及Linux目录结构

百度搜索:蓝易云

云计算 Linux 运维 服务器 云服务器

【YashanDB知识库】账号被锁,如何分析具体原因

YashanDB

yashandb 崖山数据库 崖山DB

探索最佳工作内容管理工具:2024年7大精选

爱吃小舅的鱼

任务管理 任务管理软件 任务管理工具 工作内容管理工具

如数据血缘探究数据管理的“自治理”

Aloudata

Data 数据管理 数据血缘 Data Fabric

天工一刻 | 一文看懂3D大模型

新消费日报

InPlant SCADA笔记 查看工程的网络架构

万里无云万里天

工厂运维 InPlant SCADA

螺旋文字滚动特效源码解析

南城FE

CSS 前端 动画

一枚与时间赛跑的中国芯片

脑极体

AI

精选顶级工时管理平台:你的最佳选择

爱吃小舅的鱼

工时管理 工时管理系统

如何找到最适合你的项目工时跟踪工具

爱吃小舅的鱼

工时管理 工时管理系统

攻坚克难岁月长,自主腾飞世界强——回顾近代中国数据库的发展与飞跃

Geek_b7ce72

蓝易云 - tomcat部署、tomcat虚拟主机及tomcat多实例

百度搜索:蓝易云

云计算 tomcat Web 服务器 云服务器

(代购系统神器)深入解析1688平台API:商品图片与详情描述的获取之道

代码忍者

API 文档 API 测试 API 设计

InPlant SCADA笔记 io 查看数据库管理与IO驱动

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 工程管理界面的五种风格

万里无云万里天

工厂运维 InPlant SCADA

蓝易云 - Rest和Http什么关系?

百度搜索:蓝易云

云计算 运维 服务器 Rest 云服务器

用Python来DIY一个AI面部情绪识别API的简单方案

幂简集成

API

从0到100:旅拍小程序开发笔记(上)

CC同学

蓝易云 - 跨境电商SEO网站被黑了,如何做好安全防御?

百度搜索:蓝易云

运维 云服务器 跨境电商 独立站 高防服务器

在 Go 中如何使用反射实现简易版 encoding/json

江湖十年

Go json 后端

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