Druid学习笔记(2)Druid架构剖析

本文深入探讨了Druid大数据实时查询平台的架构,包括数据流(摄入、元数据、查询)和架构设计。Druid通过类LSM-Tree实现高性能写入,采用DataSource和Segment优化存储结构。文章还详细介绍了实时节点、历史节点、查询节点、协调节点和索引服务等组件的工作原理,强调了其在高可用性和查询效率方面的设计。
摘要由CSDN通过智能技术生成

1. 前言

Druid 的目标是提供一个能够在大数据集上做实时数据摄入与查询的平台,然而对于大多数系统而言,提供数据的快速摄入与提供快速查询是难以同时实现的两个指标。例如对于普通的RDBMS,如果想要获取更快的查询速度,就会因为创建索引而牺牲掉写入的速度,如果想要更快的写入速度,则索引的创建就会受到限制。而Druid却可以完美的对两者进行结合,本文将对Druid如何实现这种结合做一个简单的介绍。

2. Druid数据流

下图为Druid的数据流,包括数据摄入,元数据,查询,三方面的流程

这里写图片描述

2.1数据摄入

数据可以通过实时节点以及批处理的方式进入Druid,对于实时节点而言,数据流的数据被实时节点消费后,当满足条件后,实时节点会将收到的数据生成为Segment文件并上传到DeepStorage.批量数据经过Druid消费后,会被直接上传到DeepStorage中。

2.2元数据

当数据文件上传到DeepStorage后,Coordinator节点会通知历史节点将Segment的文件从DeepStorage上下载到本地磁盘。

2.3查询

在数据摄入的同事,Broker节点可以接受查询请求,并将分别从实时节点与历史节点的查询的结果合并后返回

3. 架构设计

前文提到Druid在数据摄入与查询的性能方面,做到了很好结合,本章节将详细分析Druid是如何做到的。

3.1 常见的文件组织方式

除了内存数据库之外的大多数数据库,数据基本都是存在磁盘上,而磁盘的访问操作相对于内存操作而言是非常耗时的操作,提高数据库性能的关键点之一就是减少对磁盘的访问次数。

为了减少访问次数,每个数据库基本都有自己特殊的数据结构来帮助提高查询效率(也可以叫索引),考虑到数据查询一般都是一个范围的数据,所以相关结构一般都不会考虑使用HASH结构,而会使用Tree结构,下面对几种常见的Tree结构进行简单的说明

  • 二叉查找树(Binary Search Tree)

    就是一颗二叉有序树,保证左子树上的所有节点都小于根节点,保证右子树上的所有节点都大于根节点。优点是简单,缺点是出现数据倾斜时,效率会很低

  • 平衡二叉树

    针对二叉查找树的问题,平衡二叉树出现了,该种树结构的缺点是树高为Log2N,树的高度越高,查找效率越低

  • B+树

    在传统的关系数据库中,B+树以及其衍生树是被用来作为索引数据结构最多的书,特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。详细介绍请参考:<高性能MySql进化论(六):常见索引类型的原理及其特点的介绍> http://blog.csdn.net/eric_sunah/article/details/14045991

    B+树的缺点来自于其优点,当存储数据为亿级别时,随着插入操作的不断产生,叶子节点会慢慢的分裂,可能导致原本连续存放的数据,存放在不同的物理磁盘块位置上,做范围查询时,导致较高的磁盘IO,导致性能下降

  • 日志合并树(LSM)
    对于写操作而言,顺序写的效率会远远大于随机写的速度,而上述的B+树就违反了该原则。

    1992年日志结构(Log Structured)的新型索引结构产生了,该种类型的思想主要是将磁盘看成是一个大的日志,每次数据都最佳到末端,从而提高了写的性能。此时的日志结构索引对于随机读取的效率很低。

    1996年,日志结构合并树(Log structured Merge-Tree-LSM)的索引结构被提出。该种结构包含了LS的优点,同时又通过将数据文件预排序来克服随机查性能不足的问题。

    LSM的名声大噪归功于HBASE以及Cassandra,随着这两个Apache顶级项目的发展,LSM技术也在不断的发展

LSM-tree是由两个或两个以上存储数据的结构组成的。最简单的LSM-tree由两个部件构成。一个部件常驻内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值