您的位置:首页 > 其它

InfluxDB Batch功能 定时定量发送请求

2018-04-01 15:12 399 查看
InfluxDB 批量发送消息有两种模式:定时定量(这个词等会具体解释)和BatchPoints。

BatchPoints是把多条数据同时设置进去,一次性发送请求。这个我现在做的项目没用到,过两天再单独介绍。

对于InfluxDB的使用,肯定是大量的,请求密集,对性能要求很高。所以这个时候就要求数据的保存尽量使用异步完成。

同样InfluxDB也提供了这种功能,先看代码:

应用类:

@Autowired
private InfluxDB influxDB;

@Override
public void run(String... args) throws Exception{
for (int i = 0; i< 10000; i++){
Thread.sleep(10);
Point point = Point.measurement("cpu")
.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
.addField("num",1)
.tag("pkg",i+"")
.tag("statusCode","statusCode")
.build();
batch(point);
}
}

public void batch(Point point){
influxDB.write(point);
}

定义一个InfluxDB的bean

@Bean
public InfluxDB influxDB(){
InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086");
influxDB.setDatabase("billingrecord")
.setRetentionPolicy("rp_90d")
.enableBatch(2000,10000, TimeUnit.MILLISECONDS);

return influxDB;
}


这里重点说下InfluxDB bean的定义,enableBatch这里第一个是point的个数,第二个是时间,单位毫秒,第三个时间单位一般设置成TimeUnit.MILLISECONDS就好,先不管。

point的个数和时间是联合使用的,如果满2000条或者10000毫秒,满足任何一个条件就会发送一次写的请求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息