精华内容
下载资源
问答
  • druid 配置文件

    千次阅读 2020-06-28 18:57:30
    配置后使用方法 启动项目访问此路径 即可查看数据库一些参数 http://127.0.0.1:8081/druid/login.html 导入依赖 <!--druid数据源--> <dependency> <groupId>com.alibaba</groupId> ...

    Druid 最好用的数据库连接池

    源码库

    配置后使用方法

    启动项目访问此路径 即可查看数据库一些参数
    http://127.0.0.1:8081/druid/login.html
    打开界面

    导入依赖

    		<!--druid数据源-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.22</version>
            </dependency>
    

    yml配置

    spring:
      datasource:
        #   数据源基本配置
        url: jdbc:mysql://localhost:3306/数据库?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
        username: 账号
        password: 密码
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource # 主数据源,默认的
        druid:
          # 数据源其他配置
          # 下面为连接池的补充设置,应用到上面所有数据源中
          # 初始化大小,最小,最大
          initialSize: 5
          minIdle: 5
          maxActive: 20
          # 配置获取连接等待超时的时间
          maxWait: 60000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          timeBetweenEvictionRunsMillis: 60000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          minEvictableIdleTimeMillis: 300000
          validationQuery: SELECT 1 FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          # 打开PSCache,并且指定每个连接上PSCache的大小
          poolPreparedStatements: true
          #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
          filters: stat,wall,log4j2 # log4j2
          web-stat-filter:
            exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
            enabled: true
            url-pattern: "/*"
          maxPoolPreparedStatementPerConnectionSize: 20
           # 合并多个DruidDataSource的监控数据
          useGlobalDataSourceStat: true
          # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
          connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
          filter:
            stat:
              enabled: true
              db-type: mysql
              log-slow-sql: true
              slow-sql-millis: 2000
          stat-view-servlet:
            enabled: true
            login-username: 账号
            login-password: 密码
            reset-enable: true # 启用HTML页面上的“Reset All”功能
            allow: "" # 设置IP白名单(没有配置或者为空,则允许所有访问)不设置部署到服务器会无法访问
          # deny: "" # 设置ip黑名单
          # 启用
          enable: true
    
    展开全文
  •   本文是Druid配置文件系列博文的第三篇,之前的文章已经介绍了Druid配置文件整体的组织结构以及公共配置文件,接下来将逐个介绍Druid的五大组件,本文是第一个组件Coordinator的介绍。 以下配置都在coordinator/...

    摘要:
      本文是Druid配置文件系列博文的第三篇,之前的文章已经介绍了Druid配置文件整体的组织结构以及公共配置文件,接下来将逐个介绍Druid的五大组件,本文是第一个组件Coordinator的介绍。


    以下配置都在coordinator/runtime.properties文件中。

    Coordinator Process Config
    属性含义备注是否需要修改
    druid.host组件所在的主机默认InetAddress.getLocalHost().getCanonicalHostName()一般不需要修改
    druid.bindOnHost组件的内部jetty服务是否和druid.host绑定默认false一般不需要修改
    druid.plaintextPort实际监听端口默认8081一般不需要修改
    druid.tlsPortTLS端口号默认8281一般不修改
    druid.service用于服务发现的名字默认druid/coordinator一般不修改

    这些配置在其他组件中也都有,含义与这里相同,接下来将不再逐个介绍

    Coordinator Operation
    属性含义备注是否需要修改
    druid.coordinator.periodcoordinator每隔一段时间会运行去查看可用的segment和处于服务中的segment,这个属性表示这个时间间隔默认PT60S按需修改
    druid.coordinator.period.indexingPeriod每隔多久去发送压缩/合并/转换任务默认PT1800S,推荐要大于druid.manager.segments.pollDuration一般不需要
    druid.coordinator.startDelayCoordinator运行时假设自己知道最新的所有状态,但是ZK不允许Coordinator知道它是否已经得到全部最新状态,所以需要一个时间间隔给足够的时间让Coordinator可以假设自己已经得到全部最新状态默认PT300S一般不修改
    druid.coordinator.load.timeout分配一个segment到historical的超时时间默认PT15M一般不修改
    druid.coordinator.kill.pendingSegments.on是否清理元数据中的pendingSegments表的老条目,清理的时间间隔是druid.coordinator.period,killPendingSegmentsSkipList里的数据源不会被清理默认false按需修改
    druid.coordinator.kill.onCoordinator是否提交kill任务去删除元数据和深存储中的无用数据清理的时间间隔是druid.coordinator.kill.period,durationToRetain是保留时间,在这个时间内的segment不会被删除,白名单可以通过killAllDataSources和killDataSourceWhitelist设置默认false按需修改
    druid.coordinator.kill.period发送kill任务的时间间隔默认P1D按需修改
    druid.coordinator.kill.durationToRetain在最近这个时间内的segment不会被删除默认PT-1S默认值无效,如果kill打开必须设置
    druid.coordinator.kill.maxSegments每个kill任务最多删除的segment数量默认0默认值无效,如果kill打开必须设置
    druid.coordinator.balancer.strategysegment平衡策略默认cost,可选值是cachingCost、diskNormalized、random,cachingCost是cost的优化版将取代cost,diskNormalized尽量保证磁盘使用均匀,random随机分配segment按需修改
    druid.coordinator.balancer.cachingCost.awaitInitialization使用cachingCost策略时,是否在创建cachingCost策略之前等待segment视图初始化默认false按需修改
    druid.coordinator.loadqueuepeon.repeatDelay管理segment加载和删除的loadqueue的开始和重复延迟时间默认PT0.050S (50 ms)按需修改
    druid.coordinator.asOverlord.enabled是否Coordinator也充当Overlord的角色,这个用来简化集群,没有部署overlord时使用默认false一般不修改
    druid.coordinator.asOverlord.overlordService如果druid.coordinator.asOverlord.enabled为true,用于服务发现默认null,应该和overlord组件的druid.service属性和middle manager组件的druid.selectors.indexing.serviceName属性相同如果druid.coordinator.asOverlord.enabled为true,需要修改
    Segment Management
    属性含义备注是否需要修改
    druid.serverview.typesegment发现的方法默认batch,可选值http,batch使用zk方式按需修改
    druid.coordinator.loadqueuepeon.type分配segment的方式默认curator,可选值http按需修改
    druid.coordinator.segment.awaitInitializationOnStartCoordinator是否在开始之前等待segment视图完全初始化默认true按需修改

    druid.coordinator.loadqueuepeon.type设置为http时需要配置以下属性

    属性含义备注是否需要修改
    druid.coordinator.loadqueuepeon.http.batchSize在一个http请求里加载或删除的segment数量默认1,需要小于druid.segmentCache.numLoadingThreads按需配置
    Metadata Retrieval
    属性含义备注是否需要修改
    druid.manager.config.pollDurationmanager多久拉一次配置表用于更新默认PT1M按需修改
    druid.manager.rules.pollDurationmanager多久拉一次用于更新活跃segment默认PT1M按需修改
    druid.manager.rules.defaultTier默认tier,默认的规则将从tier中加载默认_default按需修改
    druid.manager.rules.alertThreshold失败的拉多久后会报警默认PT10M按需修改
    Dynamic Configuration

    Coordinator有一个通过HTTP的动态配置方式,具体如下:
    url:POST http://<COORDINATOR_IP>:/druid/coordinator/v1/config

    可选的Header:

    属性含义
    X-Druid-Author改变配置的用户名
    X-Druid-Comment描述配置修改内容的注释

    一个Body的例子:

    {
      "millisToWaitBeforeDeleting": 900000,
      "mergeBytesLimit": 100000000,
      "mergeSegmentsLimit" : 1000,
      "maxSegmentsToMove": 5,
      "replicantLifetime": 15,
      "replicationThrottleLimit": 10,
      "emitBalancingStats": false,
      "killDataSourceWhitelist": ["wikipedia", "testDatasource"],
      "decommissioningNodes": ["localhost:8182", "localhost:8282"],
      "decommissioningMaxPercentOfMaxSegmentsToMove": 70,
      "pauseCoordinator": false
    }
    

    一个GET请求相同的url会得到当前这些配置属性的值

    下面分别介绍这些属性的含义:

    属性含义备注是否需要修改
    millisToWaitBeforeDeletingCoordinator在删除元数据中的segment之前需要活跃多久默认900000(15分钟)按需配置
    mergeBytesLimit合并segment的最大未压缩字节大小默认524288000L按需修改
    mergeSegmentsLimit合并的最大segment数量默认100按需修改
    maxSegmentsToMove最大的能被移动的segment数量默认5按需修改
    replicantLifetime对于要复制的segment,在报警之前Coordiantor运行的最大次数默认15按需修改
    replicationThrottleLimit一次复制的最大segment数量默认10按需修改
    balancerComputeThreads在segment平衡是,计算移动cost的线程池大小默认1按需修改
    emitBalancingStats是否emit平衡相关统计默认false,这是一个昂贵的操作按需修改
    killDataSourceWhitelist发送kill任务的数据源白名单(白名单中的dataSource会被kill)默认none按需使用
    killAllDataSources是否对所有dataSource发送kill任务,与killDataSourceWhitelist只能使用其中一个默认false按需使用
    killPendingSegmentsSkipListkill pending状态segment时跳过的数据源列表默认none按需使用
    maxSegmentsInNodeLoadingQueue最大的segment排毒数量默认0,这个值可以在有慢节点或segment调度不均匀时加速segment加载过程,可以设置为1000然后根据情况调节按需使用
    decommissioningNodes退役historical列表,将不分配新的segment到退役节点上默认none按需使用
    decommissioningMaxPercentOfMaxSegmentsToMove再一次Coordinator运行时,从退役节点上移动到非退役节点上的segment数量默认70按需使用
    Lookups Dynamic Configuration

    Compaction Dynamic Configuration

    通过API来设置Compaction任务

    属性含义备注是否需要修改
    dataSource要Compaction的数据源名字需要设置
    taskPriority任务优先级默认25不需要设置
    inputSegmentSizeBytes最大的总的segment的字节数默认419430400不需要设置
    maxRowsPerSegment每个segment的最大行数不需要设置
    skipOffsetFromLatest搜索要压缩的segment的offset默认P1D不需要设置,对于实时数据源推荐去设置
    tuningConfig里面的参数之后在详细介绍不需要配置
    taskContext环境参数不需要设置
    展开全文
  •   本文是Druid配置文件系列博文的第二篇,在前一篇中介绍了Druid配置文件的组织结构,这一篇开始详细介绍各个配置文件中参数、意义、候选值等相关说明。本文主要介绍公共配置文件common.runtime.properties。 ...

    摘要:
      本文是Druid配置文件系列博文的第二篇,在前一篇中介绍了Druid配置文件的组织结构,这一篇开始详细介绍各个配置文件中参数、意义、候选值等相关说明。本文主要介绍公共配置文件common.runtime.properties。


    common.runtime.properties配置文件参数介绍

      本文会对common.runtime.properties中的参数分组进行介绍。

    1. Extensions部分

    属性含义备注是否需要修改
    druid.extensions.directory用来存放extensions相关文件的根目录,Druid将从这个目录下加载extensions默认值为extensions,这是一个Druid工作目录的相对路径一般不修改
    druid.extensions.hadoopDependenciesDirhadoop依赖的根目录,用户在这个目录下存放hadoop相关依赖文件默认值是hadoop-dependencies一般不修改
    druid.extensions.loadList一个extensions的JSON数组,数组里的每项会被加载默认值是null,如果这个属性没有指定,则value为null,所有extensions将会被加载,如果value设置为[],则没有extensions会被加载修改为自己需要的extensions列表
    druid.extensions.searchCurrentClassloader一个决定Druid是否自动搜索当前extensions的main classloader的布尔值。默认是true。如果设置为false,将不自动添加classpath下的所有modules一般不需要
    druid.extensions.useExtensionClassloaderFirst一个决定Druid extensions是否优先从自己的jar包中加载类的布尔值(而不是Druid绑定jar包)。默认是false。如果设置为true,可能有版本冲突问题一般不修改
    druid.extensions.hadoopContainerDruidClasspath显式地设置hadoop作业的用户类路径默认是null,为null时会自动计算。手动设置为了解决Druid和Hadoop之间的依赖冲突一般不设置
    druid.extensions.addExtensionsToHadoopContainer一个布尔值,设置为true时,druid.extensions.loadList里的extensions会被添加到Hadoop container classpath默认是false。这个属性只有在druid.extensions.hadoopContainerDruidClasspath 设置了的时候才生效,如果没设置,则extensions总是会添加到Hadoop container classpath一般不设置

    2. Modules部分

    属性含义备注是否需要修改
    druid.modules.excludeList一个类名的JSON数组,数组里的项不应该被加载,即使它们在被加载的extensions或要被加载的核心模块中默认是[]不需要修改

    3.Zookeeper部分

    基本设置
    属性含义备注是否需要修改
    druid.zk.paths.basezk基本路径默认是/druid不需要修改
    druid.zk.service.hostzk连接的主机地址默认是none,必须提供必须提供
    druid.zk.service.user认证用用户名默认是none不需要设置
    druid.zk.service.pwd认证用密码默认是none不需要设置
    druid.zk.service.authScheme认证schema只有一个可选值digest不需要设置
    zk性能
    属性含义备注是否需要修改
    druid.zk.service.sessionTimeoutMssession超时时间默认30000,单位ms根据需求设置
    druid.zk.service.connectionTimeoutMs连接超时时间默认15000,单位ms根据需求设置
    druid.zk.service.compress创建znode时是否压缩默认true不需要设置
    druid.zk.service.acl是否启用acl默认false。如果启用,znode创建者有所有权限不需要设置
    路径配置

      推荐只设置基本配置路径,其他路径会根据基本路径生产默认路径。但是其他路径也可以使用决定路径指定。
      需要设置的路径包括properties、announcements、liveSegments、loadQueue、coordinator、servedSegments。这些路径的属性为druid.zk.paths.XXXPath,路径为${druid.zk.paths.base}/XXX(XXX替换为前述的properties等)。
      druid.zk.paths.indexer.XXX为indexing服务使用的zk路径。其配置方式和其他zk路径配置方式相同。
      如果druid.zk.paths.base 和druid.zk.paths.indexer.base都设置了,其他的druid.zk.paths.* 或者druid.zk.paths.indexer.*都没有设置,其他属性的value将根据对应的base路径计算。例如,druid.zk.paths.base设置为/druid1,druid.zk.paths.indexer.base设置为/druid2,则druid.zk.paths.announcementsPath默认为/druid1/announcements,druid.zk.paths.indexer.announcementsPath默认为/druid2/announcements。
      druid.discovery.curator.path不受base路径影响,必须单独指定。其用于服务发现。默认值是/druid/discovery,一般不需要修改。

    3. Exhibitor部分

      Exhibitor是zk的supervisor系统。可以对zk集群动态扩缩容,Druid能不重启的情况下更新zk列表。

    属性含义备注是否需要修改
    druid.exhibitor.service.hostsExhibitor实例的主机名的JSON数据默认为none,如果需要使用Exhibitor则必须设置该属性如果需要使用Exhibitor则必须设置该属性
    druid.exhibitor.service.port连接Exhibitor的REST端口号默认8080如果端口冲突,根据端口占用情况设置
    druid.exhibitor.service.restUriPath得到server集合的REST url默认/exhibitor/v1/cluster/list一般不修改
    druid.exhibitor.service.useSsl是否使用https协议默认false一般不修改
    druid.exhibitor.service.pollingMs多久拉一次列表默认10000,单位ms一般不修改

    druid.zk.service.host也需要设置,当Exhibitor实例不能连接的时候充当备份

    4.TLS部分

      略

    5.认证与授权部分

      略

    6.启动时记录日志部分

    属性含义备注是否需要修改
    druid.startup.logging.logProperties启动时在日志中记录所有属性默认false,属性包括common.runtime.properties, runtime.properties和JVM命令行参数根据情况设置
    druid.startup.logging.maskProperties遮住敏感信息默认[“password”]不需要修改

    7.请求时记录日志部分

    属性含义备注是否需要修改
    druid.request.logging.type记录日志的类型可选值为noop, file, emitter, slf4j, filtered, composing, switching,具体含义接下来介绍必须选择一个
    file类型

    日志记录在磁盘上

    属性含义备注是否需要修改
    druid.request.logging.dir记录日志的目录默认none如果选择该类型一定要指定
    druid.request.logging.filePattern时间格式默认"yyyy-MM-dd’.log’"可以不修改
    Emitter类型

    日志被发射到外部位置

    属性含义备注是否需要修改
    druid.request.logging.feed请求的feed名,与Emitting Metric部分结合学习默认是none需要设置
    SLF4J类型

    每个请求经由SLF4J被记录,将记录在org.apache.druid.server.log.LoggingRequestLogger类下。

    属性含义备注是否需要修改
    druid.request.logging.setMDCMDC实体是否应该被加入到log条目中(MDC包含的内容将在下面介绍)默认false可以修改
    druid.request.logging.setContextMDCcontext中的内容是否被添加到MDC默认false可以修改

    MDC实体包含以下内容:queryId、sqlQueryId、dataSource、queryType、hasFilters、remoteAddr、duration、resultOrdering、descending

    Filtered类型

    只有查询时间得到一个阈值的请求会被发射记录。

    属性含义备注是否需要修改
    druid.request.logging.queryTimeThresholdMsJSON查询的查询时间阈值默认是0,也就是不做filter,单位ms如果使用filter需要设置
    druid.request.logging.sqlQueryTimeThresholdMssql查询的查询时间阈值默认是0,也就是不做filter,单位ms如果使用filter需要设置
    druid.request.logging.mutedQueryTypes一个查询类型的列表,这些类型的查询请求不被记录默认[],样例值为[“scan”, “timeBoundary”]按需设置
    druid.request.logging.delegate.type请求loger的类型默认none如果使用filter需要设置
    composing类型

    发射请求日志到多个logger

    属性含义备注是否需要修改
    druid.request.logging.loggerProviders请求日志的logger列表默认none需要设置,候选值为file, emitter, slf4j, filtered
    Switch类型

    原生查询记录到一个logger,sql查询记录到另一个logger

    属性含义备注是否需要修改
    druid.request.logging.nativeQueryLogger原生查询logger默认none需要设置
    druid.request.logging.sqlQueryLoggersql查询logger默认none需要设置

    8.Metrics部分

    Druid的每个组件每隔一段时间会发射Metric,Metric包含Druid的各种信息,之后会详细介绍。

    属性含义备注是否需要修改
    druid.monitoring.emissionPeriod发射的时间间隔默认是PT1M(1分钟)按需设置
    druid.monitoring.monitorsmonitor列表默认是none(没有监视器)按需添加,monitor之后会详细介绍
    druid.emitterEmitter类型默认noop,可选值有"noop", “logging”, “http”, “parametrized”,“composing”。各候选值含义接下来会介绍。按需设置
    各种monitor
    monitor名字描述
    org.apache.druid.client.cache.CacheMonitor发射关于缓存信息的metric
    org.apache.druid.java.util.metrics.SysMonitor发射系统活动和状态metric
    org.apache.druid.server.metrics.HistoricalMetricsMonitor发射historical组件相关信息
    org.apache.druid.java.util.metrics.JvmMonitorJVM相关信息
    org.apache.druid.java.util.metrics.JvmCpuMonitorJVM的CPU消耗相关信息
    org.apache.druid.java.util.metrics.CpuAcctDeltaMonitor每个cpuacct cgroup的CPU消耗信息
    org.apache.druid.java.util.metrics.JvmThreadsMonitorJVM线程统计信息
    org.apache.druid.segment.realtime.RealtimeMetricsMonitor实时组件的统计信息
    org.apache.druid.server.metrics.EventReceiverFirehoseMonitorEventReceiverFirehose中有多少event在排队信息
    org.apache.druid.server.metrics.QueryCountStatsMonitor查询相关信息
    org.apache.druid.server.emitter.HttpEmittingMonitorhttp发射的统计信息
    Logging类型Emitter属性
    属性含义备注是否需要修改
    druid.emitter.logging.loggerClass用于记录日志的类默认LoggingEmitter,可选值有HttpPostEmitter, LoggingEmitter, NoopServiceEmitter, ServiceEmitter一般不需要修改
    druid.emitter.logging.logLevel日志级别默认info,可选值有debug, info, warn, error按需修改
    Http类型Emitter属性
    属性含义备注是否需要修改
    druid.emitter.http.flushMillis刷新时间间隔默认60000(ms)按需修改
    druid.emitter.http.flushCount刷新之前能容纳多少条信息默认500按需修改
    druid.emitter.http.basicAuthentication认证信息默认不指定,格式为admin:adminpassword一般不设置
    druid.emitter.http.flushTimeOut刷新超时时间默认不超时按需修改,一般不修改
    druid.emitter.http.batchingStrategy格式化策略默认ARRAY,可选值有ARRAY([event1,event2])、NEWLINES(event1\nevent2)、ONLY_EVENTS(event1event2)按需修改
    druid.emitter.http.maxBatchSize每个batch最大的sizeJVM堆大小的5%和5MB中较小的值按需配置,一般不修改
    druid.emitter.http.batchQueueSizeLimit一个队列中最大的batch数量默认2和JVM堆大小除以5MB中的最大值按需配置,一般不修改
    druid.emitter.http.minHttpTimeoutMillis最小http超时时间默认是0,如果设置合理值是10ms到100ms按需配置,一般不修改
    druid.emitter.http.recipientBaseUrlemit的url默认none需要设置

    对于TLS,http emitter可以使用自己的配置重写,参数为druid.emitter.http.ssl.*,这里不详细介绍,有需要可以参考Druid官网

    带参数Http类型Emitter属性

    druid.emitter.parametrized.httpEmitting.*与Http类型Emitter属性含义相同,这里不再介绍。如下为带参数Http类型独有属性的介绍。

    属性含义备注是否需要修改
    druid.emitter.parametrized.recipientBaseUrlPatternURL pattern默认none,一个例子是http://foo.bar/{feed},当feed为metrics时,将发送metric到http://foo.bar/metrics需要设置
    Composing类型Emitter属性

    可以同时使用上述多个类型的emitter

    属性含义备注是否需要修改
    druid.emitter.composing.emittersemitter列表默认[],例子是[“logging”,“http”]需要设置

    9.元数据存储(Metadata storage

    )部分
    只有Coordinaor和Overlord会使用以下属性去连接元数据存储。

    属性含义备注是否需要修改
    druid.metadata.storage.type元数据存储类型默认derby,其他候选值有mysql,postgresql按需修改
    druid.metadata.storage.connector.connectURIJDBC连接数据库使用的URI默认none,格式为jdbc:mysql://ip:port/database_name需要设置
    druid.metadata.storage.connector.user连接数据库的用户名默认none需要提供
    druid.metadata.storage.connector.password连接数据库的密码默认none需要提供
    druid.metadata.storage.connector.createTables如果需要一个表,这个表不存在,是否创建它默认true一般不需要修改
    druid.metadata.storage.tables.*各种用途的表名默认druid_*一般不需要修改

    10.深存储(Deep storage)部分

    属性含义备注是否需要修改
    druid.storage.type深存储类型默认local,可选值local, noop, s3, hdfs, c*按需设置
    local类型
    属性含义备注是否需要修改
    druid.storage.storageDirectory存储的磁盘目录默认/tmp/druid/localStorage按需修改
    noop类型

    不需要配置

    S3类型

    需要druid-s3-extensions
    对S3不太了解,具体配置暂时略

    HDFS类型

    需要druid-hdfs-storage

    属性含义备注是否需要修改
    druid.storage.storageDirectory存储的HDFS目录默认none需要配置
    Cassandra类型

    需要druid-cassandra-storage

    属性含义备注是否需要修改
    druid.storage.hostCassandra host默认none需要配置
    druid.storage.keyspaceCassandra key space默认none

    11.Task日志部分

    如果用remote模式运行indexing service,task日志不能存储在本地,只能存在 S3, Azure Blob Store, Google Cloud Storage 或HDFS。

    属性含义备注是否需要修改
    druid.indexer.logs.typeTask日志类型默认file,可选值noop, s3, azure, google, hdfs, file按需修改
    druid.indexer.logs.kill.enabled是否删除旧的任务日志和元数据里任务相关的条目默认false按需配置
    druid.indexer.logs.kill.durationToRetain保留时间,在最近Xms内的日志不会被kill默认None需要配置
    druid.indexer.logs.kill.initialDelayoverlord开启后到第一次kill任务运行的延迟默认是小于5分钟的随机值可以不配置
    druid.indexer.logs.kill.delay执行kill任务的间隔时间默认21600000(6小时)可以不配置
    file类型

    存储在本地文件系统

    属性含义备注是否需要修改
    druid.indexer.logs.directory本地文件系统目录默认log按需修改
    S3类型

    存储在S3.需要druid-s3-extensions
    具体配置略

    Azure Blob Store类型

    存储在Azure Blob Store,需要druid-azure-extensions,和深存储模块使用相同的账号
    具体配置略

    Google Cloud Storage类型

    存储在Google Cloud Storage,需要druid-google-extensions
    具体配置略

    HDFS类型

    存储在HDFS,需要druid-hdfs-storage

    属性含义备注是否需要修改
    druid.indexer.logs.directoryHDFS上的存储目录默认none需要配置

    12.Overlord服务发现部分

    属性含义备注是否需要修改
    druid.selectors.indexing.serviceNameoverlord配置中的druid.service属性,通过这个配置找到overlord组件默认druid/overlord一般不修改

    13.Coordinator服务发现部分

    属性含义备注是否需要修改
    druid.selectors.coordinator.serviceNamecoordinator配置中的druid.service属性,通过这个配置找到coordinator组件默认druid/coordinator一般不修改
    druid.announcer.segmentsPerNode每个znode节点包含多少个segment的信息默认50一般不修改
    druid.announcer.maxBytesPerNode每个znode节点最大字节数默认524288一般不修改
    druid.announcer.skipDimensionsAndMetrics是否跳过维度和指标列默认false一般不修改
    druid.announcer.skipLoadSpec是否跳过LoadSpec默认false一般不修改

    14.JavaScript部分

    Druid支持通过JavaScript动态运行时扩展

    属性含义备注是否需要修改
    druid.javascript.enabled是否打开JavaScript默认false按需修改

    15.Double Column storage部分

    属性含义备注是否需要修改
    druid.indexing.doubleStoragedouble列使用什么存储格式默认double,可选值float一般不修改

    16.sql兼容null处理部分

    在0.13.0版本之前,’’(空字符串)和null是等价的,数字列不能是null,会被强制变为0。在0.13.0版本之后,Druid支持SQL兼容模式,允许字符串列区分’’(空字符串)和null,数组列也可以为null。

    属性含义备注是否需要修改
    druid.generic.useDefaultValueForNull是否使用默认值去处理null默认true改为false后会有一些存储和查询性能损失

    17.HTTP Client部分

    属性含义备注是否需要修改
    druid.global.http.numConnections连接池大小,请求相同URL的数量超过这个数后会排队默认20按需修改
    druid.global.http.compressionCodec压缩方式默认gzip,可选值有identity按需修改
    druid.global.http.readTimeout数据读超时默认PT15M(15分钟)按需修改
    druid.global.http.unusedConnectionTimeout连接池中无用连接的超时时间默认PT4M,一般设置为readTimeout * 0.9按需修改
    druid.global.http.numMaxThreads最大线程数默认max(10, ((number of cores * 17) / 16 + 2) + 30)按需修改
    展开全文
  • 本文是Druid配置文件系列博文的第四篇,我们将继续逐个介绍Druid的五大组件,前文已经介绍了Coordinator组件的配置文件,本文是第二个组件Overlord的介绍。

    摘要:
      本文是Druid配置文件系列博文的第四篇,我们将继续逐个介绍Druid的五大组件,前文已经介绍了Coordinator组件的配置文件,本文是第二个组件Overlord的介绍。


    以下配置都在overlord/runtime.properties文件中。

    Overlord Process Configs

    这些配置在其他组件中也都有,这里不太详细介绍,如需了解请查看前一篇博文Coordinator配置文件

    Overlord Operations
    属性含义备注是否需要修改
    druid.indexer.runner.type任务是运行在本地还是一个分布式环境中可选值有local(运行在本地)、remote(通过zk运行在分布式环境)、httpRemote(通过Http运行在分布式环境),默认是local一般正式环境下需要修改
    druid.indexer.storage.type任务元信息存储位置可选值有local(本地内存中)、metadata(元数据表中,overlord挂掉后任务可恢复),默认是local一般正式环境需要修改
    druid.indexer.storage.recentlyFinishedThreshold任务结果的保留时间默认PT24H,24小时按需配置
    druid.indexer.tasklock.forceTimeChunkLock是否强制使用time chunk锁默认true一般不修改
    druid.indexer.queue.maxSize活跃任务的最大数量默认Integer.MAX_VALUE一般不修改
    druid.indexer.queue.startDelay打开overlord队列管理器之前等待这么多时间以给集群时间去重新定位自己默认PT1M,一分钟按需修改,一般不需要修改
    druid.indexer.queue.restartDelay在overlord队列管理器遇到异常重启之前等待这么久时间默认PT30S按需修改,一般不需要修改
    druid.indexer.queue.storageSyncRate同步overlord状态的时间默认PT1M按需修改,一般不需要修改

    以下属性只在druid.indexer.runner.type为remote模式下有效。

    属性含义备注是否需要修改
    druid.indexer.runner.taskAssignmentTimeout任务分配超时时间,过了这个时间后,会跑出任务分配错误的异常默认PT5M按需修改,一般不需要修改
    druid.indexer.runner.minWorkerVersion最小的middle manager版本默认0一般不需要修改
    druid.indexer.runner.compressZnodes是否期待middle manager去压缩Znode默认true按需修改,一般不修改
    druid.indexer.runner.maxZnodeBytes最大的Znode字节大小默认524288按需修改,一般不修改
    druid.indexer.runner.taskCleanupTimeoutmiddle manager和zk失联多久后,一个任务超时失败默认PT15M按需修改,一般不修改
    druid.indexer.runner.taskShutdownLinkTimeout给middle manager发送请求多久没响应后超时失败默认PT1M按需修改,一般不修改
    druid.indexer.runner.pendingTasksRunnerNumThreads分配pending任务到worker的线程数量默认1,至少设置为1按需修改
    druid.indexer.runner.maxRetriesBeforeBlacklist最大连续的失败次数,超过这个次数后worker将被加入黑名单默认5,最小设置1按需修改
    druid.indexer.runner.workerBlackListBackoffTime多久之后worker被重新加入到白名单默认PT15M,必须大于workerBlackListCleanupPeriod按需修改
    druid.indexer.runner.workerBlackListCleanupPeriod清理线程过这么久后将去清理黑名单里的worker默认PT5M按需修改
    druid.indexer.runner.maxPercentageBlacklistWorkers加入黑名单的worker的最大百分比默认20按需修改

    此外,有一些用于自动扩容的配置:

    属性含义备注是否需要修改
    druid.indexer.autoscale.strategy自动扩容策略可选值有noop和ec2(amazon的一个自动扩容器,是目前唯一支持的自动扩容器,之后会详细介绍),默认noop如果设置自动扩容需要修改为ec2
    druid.indexer.autoscale.doAutoscale是否自动扩容默认false如果设置自动扩容需要修改为true
    druid.indexer.autoscale.provisionPeriod每隔多久去检查是否应该增加middle manager默认1分钟按需修改,一般不需要
    druid.indexer.autoscale.terminatePeriod每隔多久去检查是否应该移除middle manager默认5分钟按需修改,一般不需要
    druid.indexer.autoscale.originTimeterminate period增加的开始参考时间戳默认2012-01-01T00:55:00.000Z按需修改,一般不需要
    druid.indexer.autoscale.workerIdleTimeout一个worker不运行任务多久后会被终止默认90分钟按需修改,一般不需要
    druid.indexer.autoscale.maxScalingDurationoverlord会等待middle manager多久不响应才会放弃默认15分钟按需修改,一般不需要
    druid.indexer.autoscale.numEventsToTrack要追踪的自动扩容相关event的数量默认10按需修改,一般不需要
    druid.indexer.autoscale.pendingTaskTimeout一个任务处于pending状态多久后overlord会考虑扩容默认30秒按需修改
    druid.indexer.autoscale.workerVersion如果设置,在自动扩容时将仅仅创造设置版本的节点默认null按需修改
    druid.indexer.autoscale.workerPort自动扩容的middle manager的端口号默认8080按需修改
    Supervisors
    属性含义备注是否需要修改
    druid.supervisor.healthinessThreshold对于一个不健康的Supervisor,当它成功运行多少次后将它作为一个健康的默认3按需修改,一般不需要
    druid.supervisor.unhealthinessThreshold对于一个健康的Supervisor,当它失败运行多少次后将它作为一个不健康的默认3按需修改,一般不需要
    druid.supervisor.taskHealthinessThreshold对于一个不健康的Supervisor,当它连续成功运行多少次后将它作为一个健康的默认3按需修改,一般不需要
    druid.supervisor.taskUnhealthinessThreshold对于一个健康的Supervisor,当它连续失败运行多少次后将它作为一个不健康的默认3按需修改,一般不需要
    druid.supervisor.storeStackTrace是否Supervisor异常的全部stack traces应该被保存和被/status返回默认false按需修改
    druid.supervisor.maxStoredExceptionEvents能被/status返回的最大异常事件数量默认max(healthinessThreshold, unhealthinessThreshold)需修改,一般不需要
    Overlord Dynamic Configuration

    Overlord能动态修改配置。
    动态修改配置需要POST发送配置Json到以下url:

    http://<OVERLORD_IP>:/druid/indexer/v1/worker

    也可以通过GET方式请求以上url得到现有的配置。
    header中可以添加两个参数用于审计配置的修改(也可以不指定)。X-Druid-Author指示做这个修改的用户。X-Druid-Comment指示做这个修改的一个备注。
    以下是要发送的json body的一个例子:

    {
      "selectStrategy": {
        "type": "fillCapacity",
        "affinityConfig": {
          "affinity": {
            "datasource1": ["host1:port", "host2:port"],
            "datasource2": ["host3:port"]
          }
        }
      },
      "autoScaler": {
        "type": "ec2",
        "minNumWorkers": 2,
        "maxNumWorkers": 12,
        "envConfig": {
          "availabilityZone": "us-east-1a",
          "nodeData": {
            "amiId": "${AMI}",
            "instanceType": "c3.8xlarge",
            "minInstances": 1,
            "maxInstances": 1,
            "securityGroupIds": ["${IDs}"],
            "keyName": "${KEY_NAME}"
          },
          "userData": {
            "impl": "string",
            "data": "${SCRIPT_COMMAND}",
            "versionReplacementString": ":VERSION:",
            "version": null
          }
        }
      }
    }
    

    下面详细介绍以下这些参数。

    属性含义备注是否需要修改
    selectStrategy如何去分配任务到middle manager可选值有fillCapacity, equalDistribution和javascript,具体含义下面介绍默认equalDistribution
    按需修改
    autoScaler如果设置自动扩容时使用,接下来详细介绍默认null按需修改

    接下来首先介绍selectStrategy的几种类型:

    • equalDistribution:当任务开始运行时,任务会分配到有最多空闲slot的middle manager。如果想平均分布task,可以使用这个策略。
    • equalDistributionWithCategorySpec:是equalDistribution的变种。支持workerCategorySpec而不是affinityConfig(workerCategorySpec、affinityConfig下面将具体介绍)。通过指定workerCategorySpec,能基于任务类型和数据源将任务分配到不同目录的middle manager上。这个策略不能使用自动扩容。
    • fillCapacity:当任务开始运行时,任务会分配到现在运行任务最多的worker。当自动扩容时使用这个是有用的,因为你可以把任务尽量放在一些worker上直到放满,保持其他worker空闲能被终止。注意如果druid.indexer.runner.pendingTasksRunnerNumThreads的值N大于1,则这个策略会同时填充N个middle manager。
    • fillCapacityWithCategorySpec:是fillCapacity的变体。支持workerCategorySpec而不是affinityConfig。同equalDistributionWithCategorySpec。
    • javascript:使用JavaScript函数自定义分配逻辑。

    接下来介绍affinityConfig:
    以下是一个例子,表示datasource1优先分配到host1:port表示的middle manager和host2:port表示的middle manager,datasource2优先分配到host3:port表示的middle manager:

    "affinityConfig": {
          "affinity": {
            "datasource1": ["host1:port", "host2:port"],
            "datasource2": ["host3:port"]
          }
    }
    
    属性含义备注是否需要修改
    affinity一个JSON对象,映射数据源名字到一个middle manager的列表(middle manager用host:port的形式表示)默认{}按需配置
    strong布尔值,表示是否强制分配指定middle manager,即使指定middle manager不能运行全部pending任务默认false按需配置,一般不修改

    接下来介绍WorkerCategorySpec:
    以下是一个例子,表示对于index_kafka类型的任务,如果数据源是ds1,则分配到c2目录里的middle manager,如果数据源不是ds1,则按照默认目录分配到c1目录:

    "workerCategorySpec": {
          "strong": false,
          "categoryMap": {
            "index_kafka": {
               "defaultCategory": "c1",
               "categoryAffinity": {
                  "ds1": "c2"
               }
            }
          }
     }
    
    属性含义备注是否需要修改
    categoryMap映射任务类型到CategoryConfig对象(CategoryConfig下面详细介绍),你能为不同的类型指定CategoryConfig默认{}按需配置
    strong是否强制按照CategoryConfig分配middle manager默认false按需配置,一般不修改

    CategoryConfig介绍:

    属性含义备注是否需要修改
    defaultCategory默认目录,如果一个数据源没有指定目录就会运行在默认目录默认null需要设置
    categoryAffinityJSON对象,映射数据源到middle manager的目录默认null按需设置

    Autoscaler介绍:

    属性含义备注是否需要修改
    minNumWorkers集群中某一时间最小的worker数量默认0按需修改
    maxNumWorkers集群中某一时间最大的worker数量默认0按需修改
    availabilityZone要在哪个可用区中运行默认none按需设置
    nodeData一个描述如何启动新节点的JSON对象默认none按需设置
    userData一个描述如何配置新节点的JSON对象。 如果设置了druid.indexer.autoscale.workerVersion,则必须具有versionReplacementString默认none按需设置
    展开全文
  •   本文是Druid配置文件系列博文的第五篇,我们将继续逐个介绍Druid的五大组件,本文将开始介绍Data Server中的middle manager和peon组件。 以下配置都在middleManager/runtime.properties文件中。 MiddleManager ...
  • 本文和接下来的几篇博文旨在介绍OLAP分析引擎Druid的配置文件,帮助使用的Druid的新手对Druid集群进行配置以满足基本需求,当然本系列博文也会对已经使用了Druid一段...本文的主要内容是Druid配置文件推荐组织形式。
  • Druid配置文件properties的详细配置

    万次阅读 2019-08-02 10:58:36
    #驱动加载 driverClassName=...url=jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8 ...username=root ...password=password #属性类型的字符串,通过别名的方式配置扩展插件, 监控统计用的st...
  • SSM整合Druid配置文件

    千次阅读 2018-05-15 13:49:03
    --4、创建sqlSessionFactory,加载mybatis的配置文件,注入数据源--> < bean id ="sqlSessionFactory" class ="org.mybatis.spring.SqlSessionFactoryBean" > < property name ="dataSource" ref =...
  • 1.针对从数据库中获取信息出现...druid配置文件{dataSource-1} init error问题 这个使搂着苦恼很长时间,一开始一直报错导致程序不能运行,因为楼主的MySQL和JDBC是自学的 我找了一个之前没有报错的笔记: 报错的dr...
  • druid配置文件中的数据库密码的加密,之前的资源积分太高,我重新上传一份
  • druid源码配置文件和jar包.rar,用于简化Java对MySQL的操作,druid-1.0.9.jar
  • maven 配置 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version...
  • druid基本配置文件

    2019-12-06 13:02:38
    driverClassName=...url=jdbc:mysql://192.168.197.128:3306/taoduanc?useSSL=false&serverTimezone=Asia/Shanghai username=root password=root1234 initialSize=5 maxActive=10 maxWait...
  • yam文件Druid配置

    2020-04-17 08:59:35
    name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&...
  • druid配置

    千次阅读 2016-10-17 10:20:44
    数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐印入了大家的眼帘。接下来本教程就说一下druid的简单使用。  首先从...
  • 最新版的druid和旧版在filter配置方面有些不同,以下是旧版druid配置filter: spring: ##数据库连接信息 datasource: url: jdbc:mysql://localhost:3306/young username: root password: root driver-class...
  • Druid配置

    千次阅读 2017-07-08 02:43:04
    Druid 有两种配置方法:一种是基于spring的配置,另一种是手动创建链接。 下面简述这两种方法。 一、Spring配置 把数据源改为以下配置: [html] view plain copy  print? span...
  • Druid配置

    2020-09-14 14:43:47
    Druid配置类 @Configuration public class DruidConfig { /** * 将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建 * 绑定全局配置文件中的 druid 数据源属性到 ...
  • SpringBoot在yml配置文件中配置druid

    万次阅读 2018-05-29 00:58:03
    最新版的druid和旧版在filter配置方面有些不同,以下是旧版druid配置filter:取自(https://www.cnblogs.com/yang-young-young/p/8137759.html)spring: ##数据库连接信息 datasource: url: jdbc:mysql://...
  • DRUID配置详解

    千次阅读 2017-05-31 11:01:13
    DRUID配置详解
  • spring.datasource.druid.one.url=jdbc:mysql://localhost:3306/masterDB?characterEncoding=utf8&amp;useSSL=true spring.datasource.druid.one.username=root spring.datasource.druid.one.password=root ...
  • Druid_jar包及配置文件
  • Druid是阿里巴巴开源平台上的一个数据库连接池。网上很多资料都是关于Druid数据源的配置与使用,却一直找不到一篇文章教人解密。本文教你如何解密Druid配置文件中加密后的密码。
  • 有数据库连接池druid-1.1.21.jar、druid-1.1.21.jar和配置文件druid.properties写好了 自己修改下密码
  • Mysql Druid配置

    千次阅读 2019-11-04 11:28:22
    文章目录第一步:通过start.spring.io新建一个spring boot项目第二步:配置pom.xml文件第三步:配置application.properties第四步:访问http://localhost:8080/druid/login.html显示源码地址 第一步:通过start.spring.io...
  • SpringBoot2集成Druid配置

    万次阅读 多人点赞 2018-05-13 23:21:28
    Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒杀一切。而且Druid已经在阿里巴巴部署了...
  • Druid 配置详解

    万次阅读 2016-03-05 18:03:12
    最近在看了看阿里巴巴的 druid 数据连接,觉得还是很牛逼的,毕竟人家阿里家业在哪里摆的啦,不废话了,见到列举下druid配置信息: 1 配置 和dbcp类似,druid的常用配置项如下 配置 ...
  • 在使用Druid连接池连接mysql数据库时,由于版本的不同,在我们运行程序是会出现各种莫名其妙的错误,但很多时候都是配置文件的问题。 在mysql5.7(我下载的是mysql 8.0.21 仍然适用)以上的版本中,放在模块src目录...
  • public class JDBCDruid { private static Properties properties; private static JDBCDruid druid; ... //静态代码块加载配置文件 static { properties=new Properties(); try { proper

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,732
精华内容 24,692
关键字:

druid配置文件