当前位置: 首页 > wzjs >正文

四川建设人才网官网证书查询厦门关键词优化企业

四川建设人才网官网证书查询,厦门关键词优化企业,如何做垃圾网站赚钱,品牌建设的工作1️⃣ 项目介绍 本项目使用 Spring Boot InfluxDB 2.x 来存储和查询时间序列数据,适用于 物联网(IoT)、实时监控、日志分析 等场景。 2️⃣ InfluxDB 介绍 InfluxDB 是一个高性能的时间序列数据库(TSDB)&#xff0…

1️⃣ 项目介绍

本项目使用 Spring Boot + InfluxDB 2.x 来存储和查询时间序列数据,适用于 物联网(IoT)、实时监控、日志分析 等场景。

2️⃣ InfluxDB 介绍

InfluxDB 是一个高性能的时间序列数据库(TSDB),适用于存储温度、传感器数据、日志、监控指标等。

🔹 特点

  • 采用 Flux 查询语言
  • 高吞吐量,支持 批量写入
  • Tag(索引)+ Field(数据) 结构,提高查询效率
  • 精确时间戳(支持纳秒级)

3️⃣ Spring Boot 配置 InfluxDB

application.yml 中配置 InfluxDB 连接:

# InfluxDB 独立配置
influxdb:url: http://192.168.1.1xx:28086/  # InfluxDB 服务器地址token: _7FZlXGJJcd8Ayox-F-hVBDdXb_a5SI3530x1DdFKZfQ65uOhnpQciJWHpd7ULhpAOcgj5oV2JsR-Xf0qTtAxg==org: xxx     # 组织名称bucket: xxx  # 存储桶名称# InfluxDB 客户端日志级别# ERROR: 仅记录错误日志# WARN: 记录警告和错误日志# INFO: 记录普通信息、警告和错误日志# DEBUG: 记录调试级别的详细日志# BODY: 记录完整的 HTTP 请求和响应主体# TRACE: 记录极其详细的跟踪日志# ALL: 记录所有日志级别(视客户端而定)logLevel: BODY

4️⃣ InfluxDB 连接配置

InfluxDBConfig.java 中配置 InfluxDB 客户端:

import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class InfluxDBConfig {@Value("${influxdb.url}")private String url;@Value("${influxdb.token}")private String token;@Value("${influxdb.org}")private String org;@Value("${influxdb.bucket}")private String bucket;@Beanpublic InfluxDBClient influxDBClient() {return InfluxDBClientFactory.create(url, token.toCharArray(), org, bucket);}
}

🔹 说明

  • InfluxDBClientFactory.create(url, token, org, bucket) 创建 InfluxDB 客户端
  • @Value 读取 application.yml 配置

5️⃣ Service 层:数据写入 & 查询

✅ 5.1 单条数据写入

public void writeSingleData(TemperatureDTO temperatureDTO) {WriteApiBlocking writeApi = influxDBClient.getWriteApiBlocking();Point point = Point.measurement("temperature").addTag("location", temperatureDTO.getLocation()) // 添加标签(索引).addField("value", temperatureDTO.getValue()) // 添加字段(数据).time(Instant.now(), WritePrecision.NS); // 记录当前时间戳writeApi.writePoint(point);
}

✅ 5.2 批量写入(异步)

public void writeBatchData(List<TemperatureDTO> temperatureDTOs) {WriteApi writeApi = influxDBClient.makeWriteApi(); // 获取异步 APIList<Point> points = temperatureDTOs.stream().map(dto -> Point.measurement("temperature").addTag("location", dto.getLocation()).addField("value", dto.getValue()).time(Instant.now(), WritePrecision.NS)).collect(Collectors.toList());CompletableFuture<Void> future = CompletableFuture.runAsync(() -> writeApi.writePoints(points));future.whenComplete((result, error) -> {if (error != null) {System.err.println("🔥 写入失败:" + error.getMessage());} else {writeApi.close();  // 关闭 API 避免资源泄露log.info("✅ 批量数据写入成功(异步)");}});
}

🔹 说明

  • 异步写入 不会阻塞主线程,提高吞吐量
  • 异常回调 捕获写入失败的信息
  • 使用 writeApi.close() 避免资源泄露

✅ 5.3 查询数据

public List<TemperatureVO> queryTemperatureData() {String query = "from(bucket: \"test\") |> range(start: -1h)";QueryApi queryApi = influxDBClient.getQueryApi();return queryApi.query(query).stream().flatMap(fluxTable -> fluxTable.getRecords().stream()) // 遍历 FluxTable.map(record -> {TemperatureVO vo = new TemperatureVO();vo.setLocation((String) record.getValueByKey("location")); // 获取标签信息Object valueObj = record.getValueByKey("_value");vo.setValue(valueObj != null ? ((Number) valueObj).doubleValue() : 0.0);vo.setTimestamp(record.getTime().toString());return vo;}).collect(Collectors.toList());
}

🔹 说明

  • Flux 查询 过去 1h 内的数据
  • 遍历 FluxTable 提取 标签 + 字段 数据

6️⃣ Controller 层:API 设计

@RestController
@RequestMapping("/api/influxdb")
public class InfluxDBController {@Autowiredprivate TestService influxDBService;@PostMapping("/write")public String writeData(@RequestBody TemperatureDTO temperatureDTO) {influxDBService.writeSingleData(temperatureDTO);return "✅ 单条数据写入成功!";}@PostMapping("/write-batch")public String writeBatchData() {List<TemperatureDTO> data = generateTestData(10000);influxDBService.writeBatchData(data);return "✅ 10,000 条数据成功写入!";}@GetMapping("/query")public List<TemperatureVO> queryTemperatureData() {return influxDBService.queryTemperatureData();}private List<TemperatureDTO> generateTestData(int count) {List<TemperatureDTO> dataList = new ArrayList<>();Random random = new Random();for (int i = 0; i < count; i++) {TemperatureDTO dto = new TemperatureDTO();dto.setLocation("office-" + (random.nextInt(1000) + 1));dto.setValue(15 + (random.nextDouble() * 10));dataList.add(dto);}return dataList;}
}

🔹 说明

  • /write单条写入
  • /write-batch生成 10,000 条数据并写入
  • /query查询过去 1 小时数据

7️⃣ 运行 & 测试

✅ 7.1 启动项目

mvn spring-boot:run

✅ 7.2 使用 Postman 进行测试

1️⃣ 写入单条数据

POST http://localhost:8080/api/influxdb/write

{"location": "office-1","value": 22.5
}
2️⃣ 批量写入

POST http://localhost:8080/api/influxdb/write-batch

3️⃣ 查询数据

GET http://localhost:8080/api/influxdb/query

http://www.dtcms.com/wzjs/523289.html

相关文章:

  • 网站搭建设计课程报告响应式网站模板的特点
  • 西安SEO网站建设北京seo方法
  • 吉安网站建设0796abc谷歌官网下载app
  • 南宁网站建设建站系统学营销app哪个更好
  • 泰兴市 建设安全监察网站seo关键词大搜
  • 南京专业做网站公司站外seo推广
  • 网站文章内容排版要求网络服务运营商
  • 网站欢迎页面flash关键词英文
  • 武汉专业手机网站建设如何自己做一个网址
  • 定制衣柜哪种板材最好长沙官网网站推广优化
  • 网站制作厦门公司淘宝培训
  • 那些是flash做的网站百度首页清爽版
  • 免费源码资源源码站入口杭州关键词优化外包
  • 用javascript做的网站b站是哪个网站
  • 织梦如何做网站留言功能河北网站建设推广
  • 福建两学一做网站重庆seo网络优化师
  • 网站开发情况兰州网站seo
  • 独立页面成网站通过如何创建自己的小程序
  • h5开网站开发教程it培训机构哪个好一点
  • 沈阳中小企业网站制作北京百度推广代运营
  • 画江湖网站开发文档关键词的优化方案
  • 建设软件资源网站seo站长网怎么下载
  • 响应式网站设计原理sem工作内容
  • 淮南做网站的公司销售网站有哪些
  • 上海市住房和城乡建设厅官方网站网络优化的工作内容
  • 别人帮我做的网站没用要交费用吗黄金网站软件app大全下载
  • 做手机网站一般要多少钱企业管理培训课程视频
  • 兰州网站开发在哪里网页设计页面
  • 网站开发心得体会南宁百度seo价格
  • 公司部门划分及职责余姚网站seo运营