Druid学习笔记(4)数据摄入总结

1. 概述

Druid的数据摄入主要包括两大类:
1. 实时输入摄入:包括Pull,Push两种
- Pull:需要启动一个RealtimeNode节点,通过不同的Firehose摄取不同种类的数据源。
- Push:需要启动Tranquility或是Kafka索引服务。通过HTTP调用的方式进行数据摄入
2. 离线数据摄入:可以通过Realtime节点摄入,也可以通过索引节点启动任务摄入

本文演示环节主要基于上一章部署的集群来进行

2. 实时数据摄入

2.1 Pull

由于Realtime Node 没有提供高可用,可伸缩等特性,对于比较重要的场景推荐使用 Tranquility Server or 或是Tranquility Kafka索引服务

2.2 Push

Indexing service在前文已经介绍过了,Tranquility 是一个Scala库,它通过索引服务实现数据实时的摄入。它之所以存在,是因为Indexing service API属于低层面的。Tranquility是对索引服务进行抽象封装, 对使用者屏蔽了 创建任务,处理分区、复制、服务发现和shema rollover等环节。

通过Tranquility 的数据摄入,可以分为两种方式

  • Tranquility Server:发送方可以通过Tranquility Server 提供的HTTP接口,向Druid发送数据。
  • Tranquility Kafka:发送发可以先将数据发送到Kafka,Tranquility Kafka会根据配置从Kafka获取数据,并写到Druid中。

2.2.1 Tranquility Server配置

配置流程如下
1. 开启Tranquility Server,在数据节点上编辑conf/supervise/data-with-query.conf 文件,将Tranquility Server注释放开

# Uncomment to use Tranquility Server                                                                                                                                                          
!p95 tranquility-server bin/tranquility server -configFile conf/tranquility/server.json 
  1. 拷贝quick里面的server.json
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# cp conf-quickstart/tranquility/server.json conf/tranquility/
  1. 启动服务
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# bin/supervise -c conf/supervise/data-with-query.conf 

启动信息如下:

[Fri Dec  8 15:41:39 2017] Running command[tranquility-server], logging to[/root/imply-2.3.8/var/sv/tranquility-server.log]: bin/tranquility server -configFile conf/tranquility/server.json
  1. 发送数据
bin/generate-example-metrics | curl -XPOST -H'Content-Type: application/json' --data-binary @- http://localhost:8200/v1/post/tutorial-tranquility-server

如果成功会打印出,表名产生了25条数据到druid里

{"result":{"received":25,"sent":25}}
  1. 查询数据
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8/bin#./plyql -h localhost -p 8082 -q "SELECT server, SUM("count") AS "events", COUNT(*) AS "rows" FROM "tutorial-tranquility-server" GROUP BY server;"

┌──────────────────┬────────┬──────┐
│ server           │ events │ rows │
├──────────────────┼────────┼──────┤
│ www1.example.com │ 1      │ 1    │
│ www2.example.com │ 5      │ 4    │
│ www3.example.com │
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Druid配置多数据源来实现在一个应用程序中连接多个数据库。以下是一种常见的配置方式: 1. 在application.properties(或application.yml)文件中添加以下配置: ```yaml # 第一个数据源 spring.datasource.url=jdbc:mysql://localhost:3306/db1 spring.datasource.username=db1_user spring.datasource.password=db1_password spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 第二个数据源 spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2 spring.datasource.secondary.username=db2_user spring.datasource.secondary.password=db2_password spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver ``` 2. 创建两个数据源的配置类,分别对应第一个和第二个数据源: ```java @Configuration @ConfigurationProperties(prefix = "spring.datasource") public class DataSourceConfig { private String url; private String username; private String password; private String driverClassName; // Getter and Setter methods } @Configuration @ConfigurationProperties(prefix = "spring.datasource.secondary") public class SecondaryDataSourceConfig { private String url; private String username; private String password; private String driverClassName; // Getter and Setter methods } ``` 3. 创建Druid数据源的配置类: ```java @Configuration public class DruidConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource(DataSourceConfig dataSourceConfig) { DruidDataSource druidDataSource = new DruidDataSource(); // 设置数据源属性 druidDataSource.setUrl(dataSourceConfig.getUrl()); druidDataSource.setUsername(dataSourceConfig.getUsername()); druidDataSource.setPassword(dataSourceConfig.getPassword()); druidDataSource.setDriverClassName(dataSourceConfig.getDriverClassName()); // 其他配置... return druidDataSource; } @Bean @ConfigurationProperties(prefix = "spring.datasource.secondary") public DataSource secondaryDataSource(SecondaryDataSourceConfig secondaryDataSourceConfig) { DruidDataSource druidDataSource = new DruidDataSource(); // 设置数据源属性 druidDataSource.setUrl(secondaryDataSourceConfig.getUrl()); druidDataSource.setUsername(secondaryDataSourceConfig.getUsername()); druidDataSource.setPassword(secondaryDataSourceConfig.getPassword()); druidDataSource.setDriverClassName(secondaryDataSourceConfig.getDriverClassName()); // 其他配置... return druidDataSource; } } ``` 4. 在需要使用不同数据源的地方,使用`@Qualifier`注解指定要使用的数据源: ```java @Service public class MyService { @Autowired @Qualifier("dataSource") private DataSource dataSource; @Autowired @Qualifier("secondaryDataSource") private DataSource secondaryDataSource; // 使用数据源进行操作... } ``` 这样就可以在应用程序中使用多个数据源了。请根据您的具体需求进行配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值