# alibaba/druid architecture

> Architecture diagram of the GitHub repository alibaba/druid, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alibaba/druid
- Repository: https://github.com/alibaba/druid

## Overview

Druid combines a JDBC connection pool with SQL parsing, security filters, statistics and monitoring, plus Spring Boot and high-availability integrations. The primary application workflow configures a data source, obtains pooled JDBC connections, and executes SQL through the filter chain; SQL parsing and monitoring are adjacent capabilities. Relationships based on README statements are cited to the README; sampled source also supports the statistics and admin-service links. Unsampled subsystems are represented only at paths supported by the tree or SOURCE INDEX.

Main entry points: [`core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java`](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java) (Druid DataSource), [`core/src/main/java/com/alibaba/druid/stat/DruidStatService.java`](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/stat/DruidStatService.java) (Statistics Service), [`core/src/main/java/com/alibaba/druid/sql/SQLUtils.java`](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/sql/SQLUtils.java) (SQL Utilities), [`core/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java`](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java) (Filter Chain)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pool["JDBC Pool"]
  node_datasource["Druid DataSource"]
  node_pooledjdbc["Pooled JDBC"]
  node_ha["High Availability"]
end

subgraph group_sql["SQL Processing"]
  node_sqlutils["SQL Utilities<br/>[SQLUtils.java]"]
  node_sqlast["SQL AST"]
  node_sqlvisitor["AST Visitors<br/>[SQLASTVisitor.java]"]
  node_dialects["Dialect Support"]
end

subgraph group_filters["Filters And Security"]
  node_filterchain["Filter Chain"]
  node_statfilter["SQL Statistics<br/>[StatFilter.java]"]
  node_wallfilter["SQL Firewall"]
end

subgraph group_monitor["Monitoring"]
  node_statservice["Statistics Service"]
  node_dsstats["Data Source Stats"]
  node_webstats["Web App Stats"]
  node_springstats["Spring Stats"]
  node_admin["Admin Monitor"]
  node_discovery["Kubernetes Discovery"]
end

subgraph group_integrations["Integrations"]
  node_starter["Spring Boot Starter"]
end

node_application(("Java Application"))
node_database[("Database")]
node_cluster(("Service Registry"))

node_application -->|"configures and uses"| node_datasource
node_datasource -->|"provides connections"| node_pooledjdbc
node_pooledjdbc -->|"executes JDBC"| node_database
node_datasource -->|"supports filters"| node_filterchain
node_filterchain -->|"collects statistics"| node_statfilter
node_filterchain -->|"checks SQL safety"| node_wallfilter
node_application -->|"parses and formats"| node_sqlutils
node_sqlutils -->|"produces AST"| node_sqlast
node_sqlast -->|"accepts traversal"| node_sqlvisitor
node_sqlutils -->|"selects dialect"| node_dialects
node_datasource -->|"supports failover"| node_ha
node_statfilter -.->|"exposes statistics"| node_statservice
node_statservice -->|"reads pool stats"| node_dsstats
node_statservice -->|"reads web stats"| node_webstats
node_statservice -->|"reads Spring stats"| node_springstats
node_cluster -.->|"provides instances"| node_discovery
node_discovery -->|"discovers nodes"| node_admin
node_admin -.->|"requests monitor data"| node_statservice
node_application -->|"configures through"| node_starter
node_starter -->|"builds data source"| node_datasource

click node_datasource "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java"
click node_pooledjdbc "https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/pool"
click node_ha "https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/pool/ha"
click node_sqlutils "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/sql/SQLUtils.java"
click node_sqlast "https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/sql/ast"
click node_sqlvisitor "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java"
click node_dialects "https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/sql/dialect"
click node_filterchain "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java"
click node_statfilter "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java"
click node_wallfilter "https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/filter"
click node_statservice "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/stat/DruidStatService.java"
click node_dsstats "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java"
click node_webstats "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java"
click node_springstats "https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/support/spring/stat/SpringStatManager.java"
click node_admin "https://github.com/alibaba/druid/blob/master/druid-admin/src/main/java/com/alibaba/druid/admin/service/MonitorStatService.java"
click node_discovery "https://github.com/alibaba/druid/blob/master/druid-admin/src/main/java/com/alibaba/druid/admin/service/K8sDiscoveryClient.java"
click node_starter "https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_datasource,node_pooledjdbc,node_ha toneBlue
class node_sqlutils,node_sqlast,node_sqlvisitor,node_dialects,node_database toneAmber
class node_filterchain,node_statfilter,node_wallfilter toneMint
class node_statservice,node_dsstats,node_webstats,node_springstats,node_admin,node_discovery toneRose
class node_starter,node_application,node_cluster toneIndigo
```

## Components

### JDBC Pool

- [Druid DataSource](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java): `core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java`
- [Pooled JDBC](https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/pool): `core/src/main/java/com/alibaba/druid/pool`
- [High Availability](https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/pool/ha): `core/src/main/java/com/alibaba/druid/pool/ha`

### SQL Processing

- [SQL Utilities](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/sql/SQLUtils.java): `core/src/main/java/com/alibaba/druid/sql/SQLUtils.java`
- [SQL AST](https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/sql/ast): `core/src/main/java/com/alibaba/druid/sql/ast`
- [AST Visitors](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java): `core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java`
- [Dialect Support](https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/sql/dialect): `core/src/main/java/com/alibaba/druid/sql/dialect`

### Filters And Security

- [Filter Chain](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java): `core/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java`
- [SQL Statistics](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java): `core/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java`
- [SQL Firewall](https://github.com/alibaba/druid/tree/master/core/src/main/java/com/alibaba/druid/filter): `core/src/main/java/com/alibaba/druid/filter`

### Monitoring

- [Statistics Service](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/stat/DruidStatService.java): `core/src/main/java/com/alibaba/druid/stat/DruidStatService.java`
- [Data Source Stats](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java): `core/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java`
- [Web App Stats](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java): `core/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java`
- [Spring Stats](https://github.com/alibaba/druid/blob/master/core/src/main/java/com/alibaba/druid/support/spring/stat/SpringStatManager.java): `core/src/main/java/com/alibaba/druid/support/spring/stat/SpringStatManager.java`
- [Admin Monitor](https://github.com/alibaba/druid/blob/master/druid-admin/src/main/java/com/alibaba/druid/admin/service/MonitorStatService.java): `druid-admin/src/main/java/com/alibaba/druid/admin/service/MonitorStatService.java`
- [Kubernetes Discovery](https://github.com/alibaba/druid/blob/master/druid-admin/src/main/java/com/alibaba/druid/admin/service/K8sDiscoveryClient.java): `druid-admin/src/main/java/com/alibaba/druid/admin/service/K8sDiscoveryClient.java`

### Integrations

- [Spring Boot Starter](https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java): `druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java`

### Other components

- **Java Application**
- **Database**
- **Service Registry**

## Connections

- Java Application → Druid DataSource: configures and uses
- Druid DataSource → Pooled JDBC: provides connections (evidence: `core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java`)
- Pooled JDBC → Database: executes JDBC
- Druid DataSource → Filter Chain: supports filters (evidence: `core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java`)
- Filter Chain → SQL Statistics: collects statistics
- Filter Chain → SQL Firewall: checks SQL safety
- Java Application → SQL Utilities: parses and formats
- SQL Utilities → SQL AST: produces AST
- SQL AST → AST Visitors: accepts traversal (evidence: `core/src/main/java/com/alibaba/druid/sql/ast/statement/SQLShowQueryTaskStatement.java`)
- SQL Utilities → Dialect Support: selects dialect
- Druid DataSource → High Availability: supports failover
- SQL Statistics → Statistics Service: exposes statistics
- Statistics Service → Data Source Stats: reads pool stats (evidence: `core/src/main/java/com/alibaba/druid/stat/DruidStatService.java`)
- Statistics Service → Web App Stats: reads web stats (evidence: `core/src/main/java/com/alibaba/druid/stat/DruidStatService.java`)
- Statistics Service → Spring Stats: reads Spring stats (evidence: `core/src/main/java/com/alibaba/druid/stat/DruidStatService.java`)
- Service Registry → Kubernetes Discovery: provides instances
- Kubernetes Discovery → Admin Monitor: discovers nodes (evidence: `druid-admin/src/main/java/com/alibaba/druid/admin/service/K8sDiscoveryClient.java`)
- Admin Monitor → Statistics Service: requests monitor data
- Java Application → Spring Boot Starter: configures through
- Spring Boot Starter → Druid DataSource: builds data source
