logoOLAP 数据存储系统 Druid-IO

Druid 是一个开源的专为事件数据的 OLAP 查询设计的数据存储系统。Druid 用于大数据实时查询和分析的高容错、高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析。

Druid 具有以下主要特征:

  • 为分析而设计——Druid 是为 OLAP 工作流的探索性分析而构建,它支持各种过滤、聚合和查询等类;

  • 快速的交互式查询——Druid 的低延迟数据摄取架构允许事件在它们创建后毫秒内可被查询到;

  • 高可用性——Druid 的数据在系统更新时依然可用,规模的扩大和缩小都不会造成数据丢失;

  • 可扩展——Druid 已实现每天能够处理数十亿事件和 TB 级数据。

当业务中出现以下情况时,Druid 是一个很好的技术方案选择:

  • 需要交互式聚合和快速探究大量数据时;

  • 需要实时查询分析时;

  • 具有大量数据时,如每天数亿事件的新增、每天数 10T 数据的增加;

  • 对数据尤其是大数据进行实时分析时;

  • 需要一个高可用、高容错、高性能数据库时。

查询操作中数据流和各个节点的关系如下图所示:

如下图是 Druid 集群的管理层架构,该图展示了相关节点和集群管理所依赖的其他组件(如负责服务发现的ZooKeeper集群)的关系:

可以使用Druid数据源和Spring Boot的多数据源支持来实现动态切换MySQL数据源。具体步骤如下: 1. 添加Druid和Spring Boot多数据源依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置Druid数据源 在application.properties文件中添加以下配置: ```properties # 数据源1 spring.datasource.druid.datasource-1.url=jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false spring.datasource.druid.datasource-1.username=root spring.datasource.druid.datasource-1.password=123456 spring.datasource.druid.datasource-1.driver-class-name=com.mysql.cj.jdbc.Driver # 数据源2 spring.datasource.druid.datasource-2.url=jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false spring.datasource.druid.datasource-2.username=root spring.datasource.druid.datasource-2.password=123456 spring.datasource.druid.datasource-2.driver-class-name=com.mysql.cj.jdbc.Driver ``` 3. 配置多数据源 在application.properties文件中添加以下配置: ```properties # 数据源1对应的JPA配置 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.datasource.druid.datasource-1.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.datasource-1.initial-size=5 spring.datasource.druid.datasource-1.min-idle=5 spring.datasource.druid.datasource-1.max-active=20 spring.datasource.druid.datasource-1.filters=stat,log4j # 数据源2对应的JPA配置 datasource2.jpa.hibernate.ddl-auto=update datasource2.jpa.show-sql=true datasource2.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.datasource.druid.datasource-2.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.datasource-2.initial-size=5 spring.datasource.druid.datasource-2.min-idle=5 spring.datasource.druid.datasource-2.max-active=20 spring.datasource.druid.datasource-2.filters=stat,log4j # 多数据源配置 spring.datasource.dynamic.primary=datasource-1 spring.datasource.dynamic.datasource-1=druid.datasource-1 spring.datasource.dynamic.datasource-2=druid.datasource-2 ``` 4. 编写动态数据源切换代码 在需要使用多数据源的地方,通过以下代码来动态切换数据源: ```java // 获取数据源 DynamicDataSourceContextHolder.setDataSourceKey("datasource-1"); DataSource dataSource = DynamicDataSource.getInstance().getDataSource(); // 使用数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); List<Map<String, Object>> result = jdbcTemplate.queryForList("select * from user"); // 切换数据源 DynamicDataSourceContextHolder.setDataSourceKey("datasource-2"); dataSource = DynamicDataSource.getInstance().getDataSource(); jdbcTemplate = new JdbcTemplate(dataSource); result = jdbcTemplate.queryForList("select * from user"); ``` 以上就是使用Druid和Spring Boot多数据源支持来实现动态切换MySQL数据源的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值