How alibaba/druid works
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: DruidDataSource.java Druid DataSource · DruidStatService.java Statistics Service · SQLUtils.java SQL Utilities · FilterChainImpl.java Filter Chain
Components 20
JDBC Pool
- Druid DataSource
core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java - Pooled JDBC
core/src/main/java/com/alibaba/druid/pool - High Availability
core/src/main/java/com/alibaba/druid/pool/ha
SQL Processing
- SQL Utilities
core/src/main/java/com/alibaba/druid/sql/SQLUtils.java - SQL AST
core/src/main/java/com/alibaba/druid/sql/ast - AST Visitors
core/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java - Dialect Support
core/src/main/java/com/alibaba/druid/sql/dialect
Filters And Security
- Filter Chain
core/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java - SQL Statistics
core/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java - SQL Firewall
core/src/main/java/com/alibaba/druid/filter
Monitoring
- Statistics Service
core/src/main/java/com/alibaba/druid/stat/DruidStatService.java - Data Source Stats
core/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java - Web App Stats
core/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java - Spring Stats
core/src/main/java/com/alibaba/druid/support/spring/stat/SpringStatManager.java - Admin Monitor
druid-admin/src/main/java/com/alibaba/druid/admin/service/MonitorStatService.java - Kubernetes Discovery
druid-admin/src/main/java/com/alibaba/druid/admin/service/K8sDiscoveryClient.java
Integrations
- Spring Boot Starter
druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java
Other components
- Java Application
- Database
- Service Registry
Connections 20
- Java Application → Druid DataSource: configures and uses
- Druid DataSource → Pooled JDBC: provides connections
core/src/main/java/com/alibaba/druid/pool/DruidDataSource.java - Pooled JDBC → Database: executes JDBC
- Druid DataSource → Filter Chain: supports filters
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
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
core/src/main/java/com/alibaba/druid/stat/DruidStatService.java - Statistics Service → Web App Stats: reads web stats
core/src/main/java/com/alibaba/druid/stat/DruidStatService.java - Statistics Service → Spring Stats: reads Spring stats
core/src/main/java/com/alibaba/druid/stat/DruidStatService.java - Service Registry → Kubernetes Discovery: provides instances
- Kubernetes Discovery → Admin Monitor: discovers nodes
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