【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

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

关注

评论

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

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript

算法题学习---两个链表的第一个公共结点

桑榆

算法题 11月月更

面试官:说说React-SSR的原理

beifeng1996

React

通宵整理的react面试题并附上自己的答案

beifeng1996

React

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti,

福大大架构师每日一题

算法 rust 福大大

裁员潮血洗硅谷是坏事还是好事

HoneyMoose

一个程序员眼中的裁员潮

HoneyMoose

前端面试中小型公司都考些什么

loveX001

JavaScript

网络安全之命令执行漏洞复现

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

JS in CSS:一键支持响应式布局

iofod jude

前端 后端 低代码 iofod

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

kubernetes下的jenkins如何设置maven

程序员欣宸

maven jenkins 11月月更

【愚公系列】2022年11月 微信小程序-app.json配置属性之requiredBackgroundModes

愚公搬代码

11月月更

数据指标体系搭建步骤

穿过生命散发芬芳

11月月更 数据指标体系

Docker Compose快速部署多容器服务实战

海风极客

Docker 容器 11月月更

分布式系统设计之常见的负载均衡算法

海风极客

负载均衡 11月月更 分布式系统设计

官宣|Apache Flink 1.16 发布公告

Apache Flink

简单组合逻辑电路

智趣匠

Verilog LED数码管 11月月更

更快更稳更易用: Flink 自适应批处理能力演进

Apache Flink

大数据 flink

自制操作系统日记(6):静态桌面初步

操作系统

React源码分析2-深入理解fiber

goClient1992

React

前端二面react面试题(附答案)

beifeng1996

React

IO原理(二):多路复用

苏格拉格拉

reactor nio epoll IO多路复用 IO模型

React源码分析4-深度理解diff算法

goClient1992

React

拿到大厂前端offer的前端开发是怎么回答面试题的

loveX001

JavaScript

主成分分析PCA与奇异值分解SVD-降维的实现方法

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

教学:制作 GitHub 同步近期博客卡片

小鑫同学

前端 Github' 11月月更

当前API安全产品现状

阿泽🧸

API 11月月更

Go易错集锦、优秀开源包、实战案例合集

Go学堂

Go 内容合集 签约计划第二季 技术专题合集

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

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