作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9608812.html 转载请注明出处

Druid架构

Druid原本就设计为一个容易操作的面向云的多进程分布式的架构.druid的每个不同的进程类型都能够独立的扩展和配置,这会给你的集群带来最大化的自由度.这种设计也会提供加强版的容错机制:一个组件的挂掉不会立即影响其他组件的运行.

Druid的节点进程类型包含以下这些:

  • Historical 节点作为主力来负责处理历史数据的存储和查询(包含那些已经在系统中存活了很久的实时数据需要提交到历史节点),历史节点从Deep Storage下载Segment,然后响应Broker对于Segment的查询将查询结果返回给Broker节点.历史节点不接受直接的写入
  • MiddleManager 节点负责摄取新的数据到集群里面.这些节点负责从外部数据源读取数据然后发布到本地segments中去.
  • Broker节点接收外部客户端的查询,并且将查询路由到historical节点和middle manger节点。当Broker收到返回的结果的时候,它将结果merge起来然后返回给调用者.终端用户通过Broker来查询而不是直接通过查询historical和middle manager节点.
  • Coordinator节点一般用来检测一组historical节点进程.这些节点负责分配和加载segments到一些servers上,它们能够保证这些segments在historicals节点上是分布均匀的.
  • Overlord节点用来监控middle manager进程,控制数据的摄取到druid集群.他们负责分配摄取任务给相应的middle manager以及协调segment的发布.
  • Router节点是可选的进程,它能够给broker,overlord,coordinator提供一个统一的网关api来进行访问.这个节点是可选的,因为你可以直接访问broker,overlord以及coordinator.

Druid这些进程都能够单独的部署(可以部署在物理机,虚拟机,或者其他容器上),也可以托管在共享服务器上.一个常见的托管计划包含以下3种类型:

  1. 数据节点负责运行historical以及middle manager这些进程
  2. 查询节点负责运行broker和router进程(可选)
  3. master节点负责运行coordinator和overlord进程.当然他们上面还可以跑zookeeper.

在这些进程之外,druid还提供另外3个外部依赖.这些依赖会影响现有集群的基础建设.

  • Deep storage对druid服务器之间提供文件共享的访问功能.当然这些都是分布式的文件存储系统比如像S3,HDFS以及一些网络文件系统.Druid利用这种文件系统来存储那些已经被摄取到系统的数据.
  • Metadata store负责元数据的存储.一般用传统的RDBMS比如postgreSQL或者MySql来存储.
  • Zookeeper用来协调druid不同组件的内部的服务发现以及leader选举.

这种架构的本意是为了在生产坏境中大规模使用Druid集群更加简单化.比如,deep storage和metadata store存储分离意味着druid集群有极强的容错能力:即使单个druid服务节点跪了,仍然能够通过deep storage和metadata store来快速启动和恢复.

下面这个图展示了查询和数据流如何通过这个架构来实现的

参考文档:http://druid.io/docs/latest/design/index.html#architecture

Druid学习之路 (二)Druid架构的更多相关文章

  1. 『NiFi 学习之路』把握 —— 架构及主要部件

    一.概述 通过前面几篇文章的学习,相信你对 NiFi 有了一个基础性的了解. 数据处理和分发系统 是什么概念? NiFi 系统中数据的传递方式是怎样的? NiFi 的重要 Processor 有哪些? ...

  2. Druid学习之路 (三)Druid的数据源和段

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9703204.html 转载请注明出处 Druid的数据源和分段 Druid的数据存储在"Da ...

  3. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

  4. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  5. Druid学习之路 (一)Druid初识

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9588079.html 转载请注明出处 最近在学习和使用Druid.觉得一些章节有必要按照自己的理解翻译 ...

  6. Druid学习之路 (五)Druid的数据摄取任务类型

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9885534.html 转载请注明出处 Druid的数据摄取任务类型 Druid支持很多种类型的数据摄取 ...

  7. Druid学习之路 (四)Druid的数据采集格式

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9715735.html 转载请注明出处 Druid的数据采集格式 Druid可以采集非标准化的数据诸如J ...

  8. zigbee学习之路(二)点亮LED

    一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...

  9. C# Hadoop学习笔记(二)—架构原理

    一,架构   二.名词解释 (一)NameNode(简称NN),Hadoop的主节点,负责侦听节点是否活跃,对外开放接口等.在未来的大数据处理过程中,由于访问量和节点数量的不断增多,需要该节点的处理能 ...

随机推荐

  1. 复习及总结--.Net线程篇(3)

    不幸的发现,原来多线程的东西还有好多. 不只是一个Thread就能把事情做完的,好吧,孤陋寡闻了 这里总结下  复习及总结--.Net线程篇(2)里的两个概念AppDomain和ThreadPool ...

  2. ionic ui 框架

    直接看着这写就行了 http://ionicframework.com/docs/components/

  3. Erstudio8.0怎么用?Erstudio8.0汉化版详细使用教程

    Erstudio8.0使用教程 打开ERstudio,点击新建出现如图对话框: 选择第一个,表示创建一个新的关系型 数据库模型 这里提一点数据库模型分为relational(关系)和dimension ...

  4. eq与gt的妙用

    应用到jq中: 一.jquery  :gt选择器: 定义:   :gt 选择器选取 index 值高于指定数的元素. 语法:$(":gt(index)") ex:$("l ...

  5. Java Swing 日历 控件

    这是我改写的网上的DateChooser代码后的作品,使用效果如图所示.用法参考备注,以及Main函数中用法. /** * * Copyright: Ares. * All Rights Reserv ...

  6. Spring---Bean的继承与依赖

    Spring 允许继承 bean 的配置(通过Bean的parent属性来指定,例如parent=”teacher“), 被继承的 bean 称为父 bean.   继承这个父 Bean 的 Bean ...

  7. NSUserDefault 保存自定义对象

    由于NSUserDefaults 不支持保存自定类,保存的对象需要实现NSCoding协议,不过自定的类型就算实现了NSCoding也不可以保存,可以通过以下方法实现: //h文件 #import & ...

  8. golang函数学习笔记

    golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值   例子1 func add(a, b ...

  9. 如何让thrift0.9.2 在macos上面编译通过?

    为将来跨语言通信预研,选择了thrift来试试.结果在mac os上面安装遇到种种困难,不知道是我选择方法错误还是咋的,不管怎样,总算是编译过去了. 首先,我们来参考官网的安装步骤:https://t ...

  10. 【我的Android进阶之旅】Android 7.0报异常:java.lang.SecurityException: COLUMN_LOCAL_FILENAME is deprecated;

    之前开发的一个和第三方合作的apk,在之前公司的 Android 5.1 系统的手表上运行正常,今天在公司新开发的 Android 7.1系统的手表上运行的时候,使用 DownloadManager ...