写点什么

Pinterest 从 OpenTSDB 切换到他们自己的时间序列数据库

  • 2018-09-20
  • 本文字数:1025 字

    阅读完需:约 3 分钟

从 2014 年开始,Pinterest 工程团队就一直使用 OpenTSDB 存储和查询指标。由于指标数据量的增长导致了各种性能问题,所以他们使用 C++ 开发了自己的时间序列数据库 Goku ,并且兼容 OpenTSDB API。

Pinterest 开发团队使用一个名为 Statsboard 的系统——这是一个仪表板,使用 YAML 中的声明式配置集成了来自 Graphite Ganglia 和 OpenTSDB 的指标。早在 2012 年,Pinterest 的监控使用了 Ganglia,它只收集系统指标而不收集任何应用程序指标。那年年底,他们部署了Graphite 以及statsd,用于收集应用程序指标,然后部署了一个Graphite 集群。2014 年,他们部署了OpenTSDB 以及一个自定义指标代理,把数据推送到Kafka 集群,然后从那里通过一个处理管道推送到 OpenTSDB 和 Graphite 。几年前,他们在 OpenTSDB 中已经达到了每秒 150 万点的吞吐量。Pinterest 的团队面临着 Java 垃圾收集问题以及 HBase 频繁崩溃,OpenTSDB 把它作为后端存储。这里有一点需要注意,Pinterest 有一个规模很大的HBase 部署,供他们的许多服务使用。

他们自主开发的时间序列数据库引擎Goku 试图改进OpenTSDB 中的某些具体方面,其中包括使用一个反向索引代替HBase 扫描、更好的数据点压缩、集群聚合查询以及更快的序列化格式。Goku 使用 Facebook Gorilla 内存存储引擎存储最新数据,持久存储在 NFS 上。Pinterest托管在EC2 上,但是,文中并没有清楚说明,他们是否使用了 AWS EFS 或自托管解决方案。作者提到,Goku 会在重新启动时把数据从磁盘读回到内存中。

Goku 的查询模型和 OpenTSDB 的完全一样。其团队编写了自己的查询聚合层,向分片扇出查询或聚合分片查询。Goku 使用了一种两层分片策略——基于指标名称,然后是标签键 - 值对。这些查询由 Goku 代理处理,它会把查询发送给单个的 Goku 分片。这些分片使用反向索引取得请求的时间序列的 ID,并获取数据,运行单个的聚合器(下采样、求和等),然后发回代理。该代理会在第二轮聚合之后把它发给客户端。Goku 的另一项改进是使用 Apache Thrift 的二进制数据类型代替了OpenTSDB 的JSON 格式。

Pinterest 使用 Goku 降低了延迟、资源需求以及数据集规模。Goku 是用 C++ 编写的,兼容 OpenTSDB API 。Goku 和 Pinterest 另外一个名为 Yuvi 的项目非常类似,那个项目是用 Java 编写的。其他工程团队也编写或定制了他们自己的时间序列指标集和查询系统,包括 Vivint Uber Improbable Criteo

查看英文原文: Pinterest Switches From OpenTSDB to Their Own Time Series Database

2018-09-20 04:181008
用户头像

发布了 1008 篇内容, 共 378.8 次阅读, 收获喜欢 342 次。

关注

评论

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

Centos8 stream系统编译安装Tomcat教程。

百度搜索:蓝易云

云计算 tomcat Linux centos 运维

Centos8 stream系统编译安装Docker教程。

百度搜索:蓝易云

Docker 云计算 Linux centos 运维

性能测试|JMeter逻辑控制器(三)

霍格沃兹测试开发学社

MongoDB源码学习:创建记录和索引(insertDocuments)

云里有只猫

mongodb 源码解读

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

EOSdreamer111

VSCode同时编译多个C文件

codists

Visual Studio Code

性能测试|JMeter逻辑控制器(八)

霍格沃兹测试开发学社

本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源

阿里巴巴云原生

阿里云 Serverless 云原生

IDE暗黑主题推荐-Dracula

越长大越悲伤

ide 前端 后端 插件 主题

Centos8 stream系统编译安装Redis教程。

百度搜索:蓝易云

redis 云计算 Linux centos 运维

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

鳄鱼视界

性能测试|JMeter逻辑控制器(九)

霍格沃兹测试开发学社

异步编程框架:Workflow的计算调度算法

1412

c++ 开源 异步编程 workflow 调度算法

如何通过网关降低大模型的调用费用,并提升合规性

阿里巴巴云原生

阿里云 云原生 网关

Centos8 stream系统编译安装Memcached教程。

百度搜索:蓝易云

memcached 云计算 Linux centos 运维

JavaScript程序设计模式小技巧——策略模式,快看快用!!!

Immerse

JavaScript 程序设计 设计模式 策略模式 设计规则

性能测试|JMeter逻辑控制器(四)

霍格沃兹测试开发学社

一个逻辑完备的线程池

1412

c++ 开源 线程池 异步编程 workflow

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

股市老人

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

西柚子

性能测试|JMeter逻辑控制器(六)

霍格沃兹测试开发学社

性能测试|JMeter逻辑控制器(十)

霍格沃兹测试开发学社

C语言实现哈希搜索算法

芯动大师

解开心锁,放飞自我

少油少糖八分饱

认识自己 读后感 阅读笔记 被讨厌的勇气

Linux系统命令大全。

百度搜索:蓝易云

云计算 Linux 运维 服务器 命令

文本生成图像DALL·E 2背后的原理——Diffusion Model | 社区征文

秃头小苏

年中技术盘点

调整自我,安然入眠

少油少糖八分饱

读书笔记 读书感悟 #读书 睡眠 我们为什么要睡觉

PoseiSwap 即将开启 POSE 单币质押,治理体系将全面运行

威廉META

性能测试|JMeter逻辑控制器(二)

霍格沃兹测试开发学社

性能测试|JMeter逻辑控制器(五)

霍格沃兹测试开发学社

性能测试|JMeter逻辑控制器(七)

霍格沃兹测试开发学社

Pinterest从OpenTSDB切换到他们自己的时间序列数据库_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章