[Druid] 2 系统架构

1、系统架构

Druid集群是由不同类型的节点组成的,每个类型的节点被设计用来执行一组特定的任务。不同的节点类型操作香相对独立,并且不同的节点类型之间仅有极少的交互。因此,集群内通讯故障对数据可用性的影响微乎其微。为解决复杂的数据分析问题,不同的节点类型组合在一起形成一个完成的工作体系。

参考震哥的技术分享pdf:
数据摄入时的架构图:

image.png

数据查询时的架构图:

image.png

2、节点类型

数据摄入部分:
Overload:监视MiddleManager进程,并且是数据摄入Druid的控制器。它们负责将提取任务分配给MiddleManagers并且协调Segment发布。

MiddleManager将新数据摄取到集群中,负责从外部数据源读取数据并且发布到新的Druid Segments。

2.1 实时节点:

主要负责即时摄入实时数据,以及生成Segment数据文件。

Segment数据文件从制造到传播经历的流程:
(1)实时节点生产出Segment数据文件,并将其上传到DeepStorage中。
(2)Segment数据文件的相关元数据信息被存放到MetaStore(即MySQL)里。
(3)Master节点(即Coordinator节点)从MetaStore里得知Segment数据文件的相关信息后,将其按照规则的设置分配给符合条件的历史节点。
(4)历史节点(即Historical节点)得到指令后会主动从DeepStorage中拉取指定的Segment数据文件,并通过Zookeeper向集群声明其负责提供该Segment数据文件的查询服务。
(5)实时节点丢弃该Segment文件,并向集群声明其不再提供该Segment数据文件的查询服务。

2.2 历史节点:

负责加载已经生成好的数据文件以提供数据查询。由于Druid的数据文件有不可更改性,因此历史节点的工作就是专注于提供数据查询。
如何加载数据文件呢??

image.png

答案:首先会检查自己的本地缓存(Local Cache)中已存在的Segment数据文件,然后从DeepStorage中下载属于自己但是目前不在自己本地磁盘上的Segment数据文件。无论是哪种查询,历史节点都会首先将相关Segment数据文件从磁盘加载到内存,然后再提供查询服务。

注意:历史节点的查询效率受内存空间富余程度的影响很大:内存空间富余,查询时需要从磁盘加载的次数就少,查询速度就会快;反之,查询时需要从磁盘加载数据的次数就多,查询速度就相对较慢。因此,原则上历史节点的查询速度与内存空间大小和所负责的Segment数据文件大小之比成正比关系。

======》 引出热数据,温数据,冷数据的概念。

历史节点的高可用性与可扩展性:(Zookeeper的重要性
新的Historical历史节点被添加后,会通过Zookeeper被协调节点(Coordinator)发现,然后协调节点(Coordinator)将会自动分配相关的Segment给它;原有的历史节点被移除集群后,同样会被协调节点(Coordinator)发现,协调节点会将原本分配给它的Segment重新分配给其余处于工作状态的历史节点。

2.3 查询节点:

查询节点(Broker Node)对外提供数据查询的服务,并且同时从实时节点与历史节点查询数据(即MiddleManager和Historical),合并后返回调用方即客户端。
<1> 缓存的使用(Cache机制)
Druid也使用了Cache机制来提高自己的查询效率,并且提供了两类介质作为Cache以供选择。
外部Cache,比如Redis,Memcached。
本地Cache,比如查询节点或者历史节点的内存作为Cache。
注意:在使用查询节点的内存作为Cache,查询的时候会首先访问Cache,只有当不命中的时候才会去访问历史节点与实时节点以查询数据。

<2> 高可用性
一般Druid集群只需要有一个查询节点即可,但是为了防止出现单个节点失败导致无查询节点可用的情况,通常会多加一个查询节点到集群中。
在集群中有多个查询节点的时候,无论访问哪个查询节点都能得到同样的查询结果。在实践中,也会加一层Nginx。

2.4 协调节点:

Coordinator Node 负责历史节点的数据负载均衡,以及通过规则管理数据的生命周期。


image.png

<1>
对于整个Druid集群而言,并不存在真正意义上的Master节点,因为实时节点和查询节点能自行管理并不听命于任何其他节点;
但是对于历史节点而言,协调节点就是它们的Master节点,因为协调节点将会给历史节点分配数据,完成数据分布在历史节点间的负载均衡。当协调节点不可访问时,历史节点虽然还能向外提供查询服务,但已经不再接收新的Segment数据了。
<2>利用规则管理数据生命周期
利用针对每个DataSource设置的规则(Rule)来加载(Load)或者丢弃(Drop)具体的数据文件,以管理生命周期。可以对一个DataSource按顺序添加多条规则,对于一个Segment数据文件来说,协调节点会逐条检查规则,当碰到当前Segment数据文件符合某条规则的情况时,协调节点会立即命令历史节点对该Segment文件执行这条规则——加载或者丢弃,并停止检查余下的规则,否则会继续检查下一条设置好的规则。
<3>副本实现Segment的高可用性:

Segment高可用性

2.5 索引服务

除了通过实时节点生产出Segment数据文件外,Druid还提供了一组名为索引服务(Indexing Service)的组件同样能够制造出Segment数据文件。
相比实时节点生产Segment数据文件的方式,索引服务的优点:
除了对数据能够使用pull的方式外,还支持push的方式;不同于手工编写数据消费配置文件的方式,可以通过API的编程方式来灵活定义任务配置;可以完成Segment副本数量的控制;能够灵活完成跟Segment数据文件相关的所有操作,如合并、删除Segment数据文件等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 我们知道Druid能够同时提供对大数据集的实时摄入和高效复杂查询的性能,主要原因就是它独到的架构设计和基于Data...
    allin8116阅读 480评论 0 2
  • 我们知道Druid能够同时提供对大数据集的实时摄入和高效复杂查询的性能,主要原因就是它独到的架构设计和基于Data...
    零度沸腾_yjz阅读 21,519评论 3 17
  • #refer1:http://www.cnblogs.com/xd502djj/p/6408979.html#re...
    liuzx32阅读 1,912评论 0 1
  • Druid.io(以下简称Druid)是面向海量数据的、用于实时查询与分析的OLAP存储系统。Druid的四大关键...
    大诗兄_zl阅读 6,461评论 0 9
  • Druid io总体设计 1.Druid模块架构 1.1 Druid简介 最新版本的Druid采用了位图索引、字典...
    小武大讲堂阅读 1,832评论 0 2