[推荐 ]druid 架构理解

springboot集成druid 这里写目录标题介绍代码pom.xml启动类加入@MapperScan扫描mapper包配置文件DruidConfig 配置类展示遇到的问题1.数据源为空原因 :解决办法: 介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。 代码 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http 阅读详情

 在druid进行配置时,首先需要搞清楚druid的整体架构、节点等概念,这对于后续各节点配置有更好的作用,druid整体架构如下:

 (1)broker Nodes:对于Historical Nodes和Real-time Nodes来说作用是查询路由,所有的客户端请求都会发送到Broker Nodes中,该节点知道在zookeeper之上的segments信息,哪些segments是可查询的和这些segments存储在什么位置,最后该节点会merge来自Historical Nodes 和Real-time Nodes的查询结果,反馈给客户端,此外该节点还提供缓存的功能,它会缓存查询结构,如果后续查询hit 缓存,则只会去Historical 和Real-time Nodes去查询。

(2)Real-time Nodes:实时节点,实时ingest摄取数据,并可提供立即查询,该节点只关注较小时间范围内的数据,它会周期性的将接受到的stream 流数据落盘(hand off ),通过zookeeper与其他节点进行协调,它内部为将要摄取的Stream 流数据提供了一个基于内存的Buffer,为了避免内存溢出,会周期性或者达到最大数据量时将数据落盘。

(3)Historical Nodes:历史查询节点,只负责从Deep Storage中加载数据,删除数据,并对加载到内存中数据提供查询功能,通过zookeeper上报状态,并且接受来自zookeeper的指令,包括加载(load)和删除(drop)segments,并保存着Deep Storage中segments中的存储信息,知道如何解压缩和处理segments.

 (4)Coordinate Nodes:主要负责分布在Historical Nodes节点之上数据的管理,它通过zookeeper告知Historical Nodes 去Load 新的segments 和drop 过期的segments,并保持真个cluster 的运行的balance。

(5) MySQL: 主要存储druid 的元数据,主要包括segments元数据信息、rule table 信息,ingest task任务信息等。

                                 

(6)zookeeper: 负责与各个节点进行协调和状态同步,并接受来自coordinate的指令(drop 、load),并存储druid 从Deep Storage中加载到内存中的segments信息,只有加载到内存,数据才是可查询的。

    对于druid 在搭建的时候需要配置各个节点,主要包括,

      

      其中middelManager和overlord均属于Real-time Node节点范围,overlord负责接受来自客户端的supervisor的请求,创建supervisor,而middelManager负责根据supervisor创建实际的task任务,task任务负责从外部message bus中实时获取数据,每个节点都包括jvm.properites和runtime.properties配置。

  (1) common configuration

      minial 配置如下,主要包括zookeeper配置,deep storage配置,mysql配置以及比较重要的druid.indexer.logs.directory配置,该属性便于后续查看task的日志信息。

druid.extensions.loadList主要配置extensions的依赖,如果实时从kafka读取数据,需要“druid-kafka-indexing-service”,如果需要hdfs 存储,则需要“druid-hdfs-storage”,需要根据实际情况去配置。

# Extensions
#

# This is not the full list of Druid extensions, but common ones that people often use. You may need to change this list
# based on your particular setup.
druid.extensions.loadList=["mysql-metadata-storage", "druid-hdfs-storage","druid-kafka-indexing-service","kafka-emitter","druid-datasketches"]

# If you have a different version of Hadoop, place your Hadoop client jar files in your hadoop-dependencies directory
# and uncomment the line below to point to your directory.
#druid.extensions.hadoopDependenciesDir=/my/dir/hadoop-dependencies

#
# Logging
#

# Log all runtime properties on startup. Disable to avoid logging properties on startup:
druid.startup.logging.logProperties=true

#
# Zookeeper
#

druid.zk.service.host=10.1.1.84:2181,10.1.1.77:2181,10.1.1.182:2181
druid.zk.paths.base=/druid

#
# Metadata storage
#

# For MySQL:
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://xxxxxxxxxxxxxxxxxx:3306/druid
druid.metadata.storage.connector.user=xxxx
druid.metadata.storage.connector.password=xxxxx
#
# Deep storage
#

# For local disk (only viable in a cluster if this is a network mount):
druid.storage.type=local
druid.storage.storageDirectory=/var/druid/segments

# For HDFS (make sure to include the HDFS extension and that your Hadoop config files in the cp):
#druid.storage.type=hdfs
#druid.storage.storageDirectory=/druid/segments

#
# Indexing service logs
#

# For local disk (only viable in a cluster if this is a network mount):
druid.indexer.logs.type=file
druid.indexer.logs.directory=/var/druid/indexing-logs

# For HDFS (make sure to include the HDFS extension and that your Hadoop config files in the cp):
#druid.indexer.logs.type=hdfs
#druid.indexer.logs.directory=/druid/indexing-logs
#
# Service discovery
#

druid.selectors.indexing.serviceName=druid/overlord
druid.selectors.coordinator.serviceName=druid/coordinator

#
# Monitoring
#

druid.monitoring.monitors=["com.metamx.metrics.JvmMonitor"]
druid.emitter=composing
druid.emitter.logging.logLevel=info
  (2)Broker节点

    jvm.properties:

    

  runtime.propertis

其中druid.processing.buffer.sizeBytes * (druid.processing.numThreads + 3)要小于此目录下jvm.config文件中MaxDirectMemorySize的值,否则启动不起来。

(2)coordinate

   jvm.properties :

runtime.properties:

(3)historical configuration

  jvm.properties;

runtime.properties:

druid.processing.buffer.sizeBytes * (druid.processing.numThreads + 3)要小于此目录下jvm.config文件中MaxDirectMemorySize的值,否则启动不起来。

并可配置segments Cache的,以提高查询效率。

(4)overload configuration

 jvm.properties:

runtime.properties

(5)middle manager

jvm.properties;  

该节点的堆大小可设置较少,其主要创建task ,由task进行创建peon进行数据的实时ingest.

runtime.propertis:

其中,druid.worker.capacity主要配置可运行的task数量,task launch parameters主要用配置每个taskd的运行参数,并且

druid.processing.buffer.sizeBytes * (druid.processing.numThreads + 3)要小每个任务线程所使用的内存 –Xmx

启动druid

1、进入到druid-0.10.0目录下,使用bin/overlord.sh start,bin/coordinator.sh start 等命令启动对应的overlord、coordinator等节点。整个集群中,为确保HA,需要启动两个overlord、两个middleManager、两个coordinator、两个broker、三个historical节点。每台服务器上执行相应的启动节点命令。
2、验证:进入druid-0.10.0目录

①执行解压命令:

gzip -c -d quickstart/wikiticker-2015-09-12-sampled.json.gz > "quickstart/wikiticker-2015-09-12-sampled.json"
②导入数据:
 curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/wikiticker-index.json overlordip:host/druid/indexer/v1/task
       //overlordip替换为overlord节点所在服务器ip
   出现{"task":"index_hadoop_wikiticker_2018-02-07T02:23:25.718Z"}说明导入成功
③查询
curl -L -H'Content-Type: application/json' -XPOST --data-binary @quickstart/wikiticker-top-pages.json http://brokerip:host/druid/v2/?pretty

//brokerip替换为broker节点所在服务器ip

返回查询结果说明集群无问题
 

https://blog.youkuaiyun.com/xiaobai51509660/article/details/80741647

SpringBoot——》Druid数据源配置和监控配置 版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。 https://blog.csdn.net/weixin_43453386/article/details/ Druid数据源配置和监控配置一、Druid1、Druid是什么2、Druid的Maven1)Maven2)pom3、Druid的github源码地址二、Druid配置及详解1、applica... 阅读详情

相关推荐

十年架构师告诉你:学习JDBC需要掌握些什么?

不知道大家在工作中还有没有写过JDBC,我在大三去过一家小公司实习,里边用的就是JDBC,只不过它封装了几个工具类。写代码的时候还是能感受到「这是真真实实的JDBC代码」 现在开发一般都是Mybatis,也有公司用的Hibernate或者Spring Data JPA。很多时候,不同的项目由不同的程序员开发,在公司层面可能没有将技术完全统一起来,一个项目用Mybatis,一个项目用Hibernate都是很有可能的。 不管用的是什么ORM框架,都是在JDBC上封装了一层嘛,所以JDBC还是需要好.

AI乔治 1437

druidConfig配置方法

本文转载自:https://blog.csdn.net/wojiao228925661/article/details/82740724 Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目。Druid支持所有JDBC兼容的数据库,包括Oracle、MySQL、Derby、PostgreSQL、SQL Server、H2等。Druid在监控、可扩展性、稳定性和性能方面具有明显的优势。通过...

渔人 1万+

Spark与Druid集成:实时OLAP分析系统构建实战

在当今数据驱动决策的时代,企业对实时数据分析的需求日益迫切。Apache Spark作为强大的分布式计算框架,与Druid这一高性能实时分析数据库的集成,为构建实时OLAP系统提供了理想解决方案。本文将深入探讨Spark与Druid的集成原理,提供完整的系统构建指南,从环境搭建到项目实战,再到性能优化,全方位解析如何构建一个高效、可扩展的实时OLAP分析系统。无论您是数据工程师、架构师还是数据分析人员,本文都将为您提供宝贵的实践经验和技术洞见。

AI云原生与云计算技术学院 1007

druid Configuration配置和启动

         在druid进行配置时,首先需要搞清楚druid的整体架构、节点等概念,这对于后续各节点配置有更好的作用,druid整体架构如下: (1)broker Nodes:对于Historical Nodes和Real-time Nodes来说作用是查询路由,所有的客户端请求都会发送到Broker Nodes中,该节点知道在zookeeper之上的segments信息,哪些segment...

Mr__XiaoBai的专栏 4876

Spring Boot数据库密码加密实战:Jasypt与Druid方案详解

在Java企业级应用开发中,配置安全管理是保障系统安全的重要环节。其核心原理在于对敏感信息进行加密处理,防止明文泄露。通过加密技术,可以实现配置与代码的分离,提升系统的安全水位。这一实践在数据库连接配置等场景中尤为重要。Jasypt作为一个成熟的Java加密库,提供了便捷的配置属性加密能力,而Druid作为高性能连接池,其密码回调机制则为运行时解密提供了灵活性。本文将结合这两种技术,深入探讨在Spring Boot项目中实现数据库密码加密的两种主流方案:基于Jasypt的配置加载时解密,以及利用Druid

weixin_33754065的博客 334

Druid原理与代码实例讲解

关键词:Druid, 数据库连接池, SQL, Java 1. 背景介绍 1.1 问题的由来 在数据库应用开发中,数据库连接是一种昂贵的资源。为了提高系统性能,开发人员通常采用数据库连接池来管理和复用数据库连接。Druid是阿里巴巴开源的一个数据库连接池实现,它内置了强大的监控和扩展功能,被

AI架构师小马 951

Druid架构讲解

druid内部节点介绍: Historical: 历史节点的职责主要是对历史的数据进行存储和查询,历史节点从Deep Storage下载Segment,然后响应Broker对于Segment的查询将查询结果返回给Broker节点,它们通过Zookeeper来声明自己存储的节点,同时也通过zookeeper来监听加载或删除Segment的信号。 Coordinator:协调节点监测一组历史节点来...

liyanling的博客 6624

config下的DruidConfiguration文件

这是springboot-druid的config下的配置文件,使用直接下载即可。

druid -mysql_druid 的基础架构与应用

本文介绍了druid的基础架构以及工作过程,通过一个应用案例加深了解。durid简介druid是一种高性能、列式存储、分布式数据存储的时序数据分析引擎。能支持“PB”级数据的秒级查询。类似的产品有kylin/clickhouse。druid典型的应用就是OLAP场景下的cube组合查询分析。如数据钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(P...

weixin_26861329的博客 291

NX二次开发(python)-坯料尺寸(一)

一般在产品制造过程中,往往要判断一个模型在出模方向上的最小包容盒尺寸,在NX中可以用坯料尺寸命令实现,当然也有相应的代码实现,这或许可以帮助我们实现一些产品的坯料尺寸批量输出,节省人力。

dasfanfan的博客 816

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

张天枭の博客 5万+

druid 的基础架构与应用

本文介绍了druid的基础架构以及工作过程,通过一个应用案例加深了解。 durid简介 druid是一种高性能、列式存储、分布式数据存储的时序数据分析引擎。能支持“PB”级数据的秒级查询。类似的产品有kylin/clickhouse。druid典型的应用就是OLAP场景下的cube组合查询分析。如数据钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及...

跨过山和大海的博客 1180

基于STM32L4XX、HAL库的RTL8211FSI-CG以太网收发器(PHY)驱动程序设计

一、简介:RTL8211FSI-CG是Realtek公司生产的一款高性能、低功耗的单端口10/100M以太网收发器(PHY)。它通过RMII(Reduced Media Independent Interface)或MII接口与MAC控制器连接。

zhusl6688的博客 531

Druid.io系列(二):基本概念与架构

在介绍Druid架构之前,我们先结合有关OLAP的基本原理来理解Druid中的一些基本概念。 1 数据 以图3.1为例,结合我们在第一章中介绍的OLAP基本概念,按列的类型上述数据可以分成以下三类: 时间序列(Timestamp),Druid既是内存数据库,又是时间序列数据库,Druid中所有查询以及索引过程都和时间维度息息相关。Druid底层使用绝对毫秒数保存时间戳,默认使用ISO-86...

千淘万漉 329

修改legged_gym地形后仍然是平地,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1563

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(一)校园网核心交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 3795

Druid 数据库连接池 详解

1.数据库连接池是个容器,负责分配、管理数据库连接(Connection); 2.它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个; 3.释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏;优点 1.资源重用 2.提升系统响应速度 3.避免数据库连接遗漏连接池是在一开始就创建好了一些连接(Connection)对象存储起来。用户需要连接数据库时,不需要自己创建连接,而只需要从连接池中获取一个连接进行使用,使用完毕后再将连接对象归还...

斯文~ 1万+

Python 爬虫 + 数据分析:社会调查数据抓取与结果可视化分析

在当今数字化时代,数据已成为推动社会发展的关键资源之一。无论是市场调研、学术研究还是政策制定,社会调查数据都扮演着至关重要的角色。通过 Python 爬虫技术,我们可以高效地获取这些数据,并结合数据分析与可视化工具,深入挖掘数据背后的价值。本文将通过一个完整的实战项目,带你掌握如何使用 Python 爬虫抓取社会调查数据,并进行可视化分析。

yansideyucsdn的博客 126

druid 推荐配置

#配置初始化大小、最小、最大 initialSize = 1 minIdle = 5 maxActive = 20 #配置从连接池获取连接等待超时的时间 maxWait = 1000 #配置间隔多久启动一次DestroyThread,对连接池内的连接才进行一次检测,单位是毫秒 timeBetweenEvictionRunsMillis = 600000 #配置一个连接在池中最大空闲时间,单位是毫秒...

Ypc_victor的专栏 2670

智能制造之物料详解

制造业业务系统中的物料流转贯穿需求、采购、生产到交付全流程,各系统协同实现精准追踪。需求阶段由CRM/ERP/PLM生成物料计划;采购入库阶段SCM/WMS/QMS完成采购质检;生产阶段MES/APS协调领料加工;成品交付阶段WMS/SCM处理出库物流。整个流程以BOM为蓝图,ERP为调度中心,通过数据联动实现物料状态、位置和数量的全链路可追溯。

cdfunlove的博客 654

树莓派 Raspberry Pi 使用 YOLOv8 YOLOv10 YOLOv11进行目标检测及推理加速,Run YOLOv8 YOLOv10 YOLOv11 on Raspberry Pi

libcamera 是 linux 新增加用于访问 camera 的 API。树莓派参与了 libcamera 的开发,并且在新的摄像头软件中开始从依赖于固件的摄像头图像处理管道(Image processing pipeline, ISP)迁移到更加开放的 libcamera。当然这块用USB 摄像头应该也是可以的。

shiter编写程序的艺术 5567

数据库连接池Druid配置调优

数据库连接池Druid配置调优 1 maxWait: 从连接池获取连接的超时等待时间,单位毫秒,需要注意这个参数只管理获取连接的超时。 获取连接等待的直接原因: 池子里没有可用连接,具体包括:连接池未初始化,连接长久未使用已被释放,连接使用中需要新建连接, 或连接池已耗尽需等待连接用完后归还。这里有一个很关键的点是 maxWait 未配置或者配置为 0 时, ...

java821643的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Druid文档学习笔记

做这个工作的原因是因为书籍和论文给的相关架构已经过时,最明显的就是移除了Real-Time Node. (一)What is Druid ? Druid是一个高性能的OLAP时序分析数据库,最常用于GUI分析应用或者是需要快速聚合的高并发API后端.Druid常用领域包含: 1. 网站点击流量分析 2. 网络流量分析 3.服务器指标存储 ...

qq_38835878的博客 1145

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SpringBoot集成Druid连接池:从配置到监控的完整实践指南

数据库连接池是Java后端应用中的核心组件,它通过管理数据库连接的创建、复用和销毁,有效解决了频繁建立和关闭连接带来的性能开销问题。其工作原理是预先建立一定数量的连接放入池中,当应用需要访问数据库时,从池中获取一个空闲连接,使用完毕后归还,而非直接关闭,从而显著提升系统响应速度和并发处理能力。这一技术对于保障应用稳定性、优化资源利用具有重要价值,尤其在高并发、大数据量访问的Web服务、微服务等场景中不可或缺。本文将深入探讨如何为SpringBoot项目集成功能强大的Druid连接池,并详细解析其丰富的**监

weixin_34319817的博客 463

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

druid定义 java使用_[数据库druid连接池实现]--Java版本

前言之前有介绍一篇关于自定义的数据库链接池实现,但是质量并不高。而且遭到博友的一脸嫌弃!确实,拿出来的东西就应该保证是正确的,或者质量高,否则很容易就误导了他人,显得TMD也不道德,所以今天专门重写之前的想法,当然,还有许多文章需要更新,后期我都会一一完善,希望对各位有一定的帮助。目前针对Java web应用使用的数据库链接池比较多也很杂,但稳定且好用的还是推荐阿里巴巴的druid(德鲁伊连接池)...

weixin_42469000的博客 557
上一篇: 【Druid总结】
下一篇: druid 和 CDH关于hadoop版本不兼容问题
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值