实时分析性数据库 Druid 架构解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Druid 是一个实时分析型的数据库,用于大规模实时数据导入、快速查询分析的场景,包括网站访问点击流分析、网络性能监控分析、应用性能指标存储与分析、供应链分析、广告分析等。 ![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/34834/1600427846485-f227ea8b-07c5-47

Druid 是一个实时分析型的数据库,用于大规模实时数据导入、快速查询分析的场景,包括网站访问点击流分析、网络性能监控分析、应用性能指标存储与分析、供应链分析、广告分析等。

image.png

Druid 的核心集成了数据仓库、时序数据库、日志搜索系统的设计,主要包含如下特性:

  1. 列式存储:Druid 使用列存方式组织数据,访问时可按需加载访问到的列,支持快速的扫描和聚合计算能力;同时数据按列式存储,能极大的提升数据的压缩率。
  2. 分布式可扩展:Druid 集群可扩展至上百台服务器,可以高并发出力读写请求,提供每秒百万级的数据导入,以及亚秒级的查询延时。
  3. 支持实时及批量导入:Druid 支持实时或批量方式导入数据,非常方便点支持从 Kafka、Hadoop 等数据源导入数据。
  4. 高可用&负载均衡:Druid 集群支持在线的增加、移除服务节点,集群会进行自动的负载均衡,当有节点故障时,Druid 通过也可通过多副本高可用的方式自动 Failover。
  5. 云原生架构:Druid 将数据存储在外部 Deep Storage(例如 云存储、HDFS 等),即使 Druid 服务节点故障,也不影响数据的可靠性。
  6. 索引加速:Druid 通过位图方式自动对数据建索引,支持快速的索引过滤。
  7. 时间分区:Druid 会先将数据按时间分区,也可根据其他方式进一步分区,基于时间范围的查询只会访问对应时间范围内地数据。
  8. 预聚合:Druid 支持在导入数据时对数据进行提前的聚合分析,例如sum、count、min、max等,作为数据的元数据存储,当实际访问时,可直接访问预聚合好的数据。
  9. SQL 支持:Druid 同时支持 SQL、HTTP 方式访问,表达能力强,灵活方便。

Druid 数据模型

架构解析

核心组件

  • Coordinator 负责集群的协调及数据高可用
  • Overlord 控制集群数据导入任务的分配
  • Broker 处理客户端查询请求
  • Router 是可选的路由组件
  • Historical 负责可查询数据的存储
  • MiddleMangager 负责数据的导入

部署方式

Druid 的各个组件可以随意部署,但根据组件的职能,会分成三类,每一类组件建议在服务器上混部。

  • Master Servers:运行集群的 Coordinator 与 Overlord 控制类的组件。
  • Query Servers:运行集群查询类组件,包括 Broker、Router
  • Data Servers:运行集群数据导入、存储相关组件,包括 Middle Managers、Histricals

外部依赖

Druid 本身不存储数据,数据的存储依赖于外部的组件,数据的存储(Deep Storage)依赖外部的存储,例如 AWS S3、阿里云 OSS、HDFS 等分布式存储,云数据存储依赖 MySQL、PostgreSQL 等数据库;依赖 Zookeeper 实现服务发现、Leader 选举等功能。

Deep Storage

Druid 本身不存储数据,而将数据存储到外部的 Deep Storage,由 Deep Storage 保证数据的可靠存储,例如 AWS S3、阿里云 OSS、HDFS 等分布式存储。

Druid 的数据会按数据顺序组织,并按时间维度对数据进行分区存储,一段时间范围的数据会存储到一起,组成一个 Segment。数据在 Segment 里会按列存方式进行压缩存储,并对 Dimension 数据建立索引。
image.png

Segment 结构

Druid 的所有数据都包含时间戳列,还包含多个 Dimensions 以及 Metrics 列,其中 Dimension 列可支持快速过滤、聚合,Druid 在存储 Dimension 列时,会进行压缩存储,并通过位图方式建索引,每一列的数据包含

  1. Dictionary:存储列值到 整型 ID 的映射
  2. Column Data:根据 1产生的一系列的整型 ID,进行压缩存储
  3. Inverted Index(Bitmaps):针对 Column 里每个不同的 value,会建一个位图倒排索引

image.png
比如 Page 列的存储,包含 "Justin Bieber", "Ke$ha" 两个取值,该列对应的存储类似如下三个部分

1: Dictionary that encodes column values
  {
    "Justin Bieber": 0,
    "Ke$ha":         1
  }

2: Column data
  [0,
   0,
   1,
   1]

3: Bitmaps - one for each unique value of the column
  value="Justin Bieber": [1,1,0,0]
  value="Ke$ha":         [0,0,1,1]
 

当某一段时间范围内地数据量很大时,在将数据存储为 Segments 时,可以采用 sharding 策略,比如按文件大小切分 Segments、或根据指定的 Dimension 进行 Hash 分到多个 Segments,在检索的时候,能进一步减少需要查询的数据。

读写流程

数据导入

Druid 支持从 Kafka、Hadoop 里导入数据,数据导入以 Task 方式进行,Overlord 负责导入任务的分配,Middle Manager 负责实际的数据导入,数据会先写到 Middle Manager 的内存,积累到一定大小或时间窗口后,数据会组织为 Segment 写到 Deep Storage,并将 Segment 的元数据写入到 Metadata Storage。

Coordinator 会周期性的检测 Metadata Storage,当发现新的 Segment 产生时,会将 Segment 根据负载情况分给其中的部分 Historical(根据副本数) 节点管理,Historical 节点接管 Segment 的管理,这部分 Segment 即可用于查询。
image.png

数据查询

Broker 接收数据的查询请求,根据 Metadata 的信息,计算出查询关联的 Middle Managers、Historicals 节点,并将请求发送到对应的节点, Middle Managers、Historicals 根据查询的时间范围,找出所有可能包含查询数据的 Segments,并从中过滤出满足条件的数据,Broker 负责将查询结果进行汇总返回给客户端。
image.png

总结

  1. Druid 与传统数据库通过读写 API 写入数据的方式不同,通过 Pull 方式拉取数据,对接常用的 Kafka、HDFS等大数据生态数据源。
  2. 借助外部可靠的 Deep Storage 和 Meatadata store 来实现数据、元数据的存储,将 Druid 从数据存储的高可靠管理中解放,让各个组件的实现都非常轻量;
  3. Druid 的实现高度模块化,每个模块有独立的职能,但因为组件非常多,在部署管理上稍微有些复杂。
  4. 通过列式存储以及位图索引,极大的降低存储成本,并支持高效的数据过滤查询。
  5. 通过时间分区策略,对事件型、时序类型场景非常友好,能快速根据查询时间范围降低扫描的数据量。
相关文章
|
1天前
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
113 70
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
2天前
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
31 18
|
1月前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
418 36
微服务架构解析:跨越传统架构的技术革命
|
14天前
|
测试技术 双11 开发者
一文分析架构思维之建模思维
软件里的要素不是凭空出现的,都是源于实际的业务。本文从软件设计本源到建模案例系统的介绍了作者对于建模的思维和思考。
|
15天前
|
关系型数据库 分布式数据库 数据库
瑶池数据库大讲堂|PolarDB HTAP:为在线业务插上实时分析的翅膀
瑶池数据库大讲堂介绍PolarDB HTAP,为在线业务提供实时分析能力。内容涵盖MySQL在线业务的分析需求与现有解决方案、PolarDB HTAP架构优化、针对分析型负载的优化(如向量化执行、多核并行处理)及近期性能改进和用户体验提升。通过这些优化,PolarDB HTAP实现了高效的数据处理和查询加速,帮助用户更好地应对复杂业务场景。
|
1月前
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
|
16天前
|
人工智能 供应链 搜索推荐
中国CRM市场深度分析:主流供应商排名与特点解析
随着中国企业数字化转型的深入,CRM(客户关系管理)软件市场迅速发展,形成了多个优秀解决方案提供商。销售易、纷享销客、明源云客、金蝶云之家、简道云、红圈营销和爱客CRM等供应商各具特色。销售易在大型企业市场表现突出,提供全链路营销销售一体化及强大的AI能力;纷享销客以易用性和高性价比著称,适合中小企业;明源云客专注房地产行业,提供全流程解决方案;金蝶云之家与ERP系统深度整合,适合传统制造业;简道云是低代码平台,灵活性高;红圈营销专注零售业,支持全渠道营销;爱客CRM则主打智能营销功能。企业在选择CRM时需综合考虑实施难度、价格定位、技术支持等因素,并结合自身需求进行试用和调研,确保选择最适合
|
1月前
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
|
2月前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
2月前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
117 8

热门文章

最新文章

推荐镜像

更多