好吧,Uber 不使用 Elasticsearch,自己用 Go 造了个轮子
之前推荐了一个 Uber 的开源项目 Kraken,今天推荐它的另一个开源项目,也是 Go 语言实现的。
项目名称:AresDB,地址:https://github.com/uber/aresdb,Star 数:2.5k+。
这是一个由 GPU 驱动的实时分析存储和查询引擎。为什么开发 AresDB?Uber 在官方博客上给出了解答:https://eng.uber.com/aresdb/
官方的说法
在 Uber,实时分析使我们能够获得业务情况和运营效率,使我们能够做出以数据为依据的决策,以改善在 Uber 平台上的体验。例如,我们的运营团队依靠数据来监控市场健康状况并在我们的平台上发现潜在问题;由机器学习模型提供支持的软件利用数据来预测骑手供应和司机需求;数据科学家使用数据来改进机器学习模型,以更好地进行预测。
过去,我们利用许多第三方数据库解决方案进行实时分析,但没有一个能够同时满足我们所有的功能,可伸缩性,性能,成本和运营要求。
AresDB 于 2018 年 11 月发布,是一个开源的实时分析引擎,它利用非常规电源,图形处理单元(GPU)来使我们的分析规模化增长。GPU 技术是实时分析的新兴工具,多年来发展显著,使其非常适合并行进行实时计算和数据处理。
Uber 实时分析解决的最常见问题是如何计算时间序列汇总,这些计算使我们能够洞悉用户体验,从而可以相应地改善服务。通过这些计算,我们可以在任意过滤(或有时加入)的数据范围内,按特定维度(例如,日期,小时,城市 ID 和旅行状态)请求度量。多年来,Uber 部署了多种解决方案以不同方式解决此问题。
我们用于解决此类问题的第三方解决方案包括:Apache Pinot 和 Elasticsearch。
尽管这些技术各有千秋,但它们对于我们的用例却缺乏关键的功能。我们需要一个统一,简化和优化的解决方案,并且要开箱即用(或者更确切地说是在 GPU 内)。
(哈哈哈,是不是再次证明,自己的轮子又大又圆?)
要求
该项目使用了如下技术:
golang 1.11+ C++ compiler that support c++14 cmake 3.12+ nvcc version 9.1
该项目的查询引擎使用 C++ 实现的,而内存存储,磁盘存储和其他查询组件使用 Go 实现的。因此这是一个多语言项目。同时因为涉及到 GPU 等技术,因此搞定这个项目需要一定的实力。
最后放一张架构图:
文末「阅读原文」可直达项目首页。
今天的项目大家觉得怎么样吗?如果你喜欢,请在文章底部留言、点赞或关注转发,你的支持就是我持续更新的最大动力!
推荐阅读