Pinterest自建时间序列数据库Goku:性能提升与挑战解决
44 浏览量
更新于2024-08-27
收藏 804KB PDF 举报
Pinterest作为全球知名的图片分享社交媒体平台,在其业务增长过程中,面临着如何高效处理和分析海量时间序列数据的挑战。起初,Pinterest依赖于OpenTSDB,一个专为大规模时间序列数据设计的分布式时序数据库。然而,随着Pinterest服务器数量的急剧增加和数据量的爆炸式增长,OpenTSDB的性能逐渐成为瓶颈,表现为垃圾回收问题严重以及HBase的频繁崩溃,这些都直接影响到了Pinterest的运营效率和成本。
为了应对这一挑战,Pinterest自主研发了一款名为Goku的内部时间序列数据库系统。Goku的设计初衷是为了提升数据提取和复杂查询的效率,同时保持对OpenTSDB的兼容性。Goku采用两级分片策略,优化了数据存储结构,引入了C++编写的OpenTSDB兼容API,从而能够更好地处理数百万的数据点。
在Goku中,时间序列数据模型基于OpenTSDB,每个时间序列由一个唯一的键(由度量名和标记键值对组成,如“tc.proc.stat.cpu.total.infra-goku-a-prod{host=infra-goku-a-prod-001, cell_id=aws-us-east-1}``) 和一系列按时间排序的数据点组成,每个数据点包含时间戳和相应的值。查询操作非常灵活,支持度量名称、过滤器(如完全匹配、通配符匹配等)、聚合器(如Sum、Max/Min、Avg等)、降采样和速率计算。
Goku的关键改进包括:
1. **倒排索引引擎**:与OpenTSDB的低效扫描相比,Goku引入了更高效的倒排索引,减少了不必要的数据扫描,提高了查询速度。
2. **数据大小优化**:Goku通过优化数据结构,解决了OpenTSDB中数据点过大导致的问题,使得存储更为高效。
3. **性能增强**:Goku针对Pinterest的特定需求进行了优化,比如减少数据扫描次数、提高聚合和降采样的效率,从而显著改善了整体性能。
4. **内存管理**:由于Pinterest面临的是高并发和大数据量的场景,Goku可能还改进了内存管理和垃圾回收机制,降低了内存消耗和GC问题。
通过Goku的实施,Pinterest得以克服了OpenTSDB在扩展性和性能上的局限,实现了数据处理的高效和成本的有效控制,为其持续的业务增长提供了强大的技术支持。
2021-11-30 上传
2019-07-19 上传
点击了解资源详情
2021-02-10 上传
2019-07-30 上传
2023-07-18 上传
2023-07-30 上传
2022-11-14 上传
2013-02-02 上传
weixin_38581777
- 粉丝: 4
- 资源: 917
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器