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

栏目: 服务器 · 发布时间: 7年前

从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、 UberImprobableCriteo

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


以上所述就是小编给大家介绍的《Pinterest从OpenTSDB切换到他们自己的时间序列数据库》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

安全之美

安全之美

Andy Oram、John Viega / 徐 波、沈晓斌 / 机械工业出版社华章公司 / 2011-4-28 / 65.00元

“这本深思熟虑的论文集(《安全之美》)帮助读者摆脱安全领域闪烁着欺骗光芒的心理恐惧,转而欣赏安全的微妙美感。本书描述了安全的阴和阳,以及引人注目的破坏性和闪亮光辉的建设者之间剑拔弩张的气氛。” ——Gary McGraw,Cigital公司CTO,《Software Security》及其他9本书的作者 大多数人不会太关注安全问题,直到他们的个人或商业系统受到攻击。这种发人深省的现象证......一起来看看 《安全之美》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具