SpringBoot整合TICK(Telegraf+InfluxDB+Chronograf


一、InfluxDB简要介绍

InfluxDB是一款Go语言实现的开源时序性数据库,它不需要外部依赖。其设计目的主要用于系统的水平式以及分布式扩展,它对于数据的实时分析,历史数据展示等都提供了良好的支持。插句题外话,学习一项新技术的最好办法就是阅读它的官方文档,大部分的技术官方文档都是英文的,读起来稍微有点费劲,但是只要坚持下去,配上谷歌翻译,并没有想象中那么难。因为官方文档应该是作者对于该技术最原汁原味的理解和叙述,其他翻译的有可能会丢失部分原作者的技术理解。废话不多说,InfluxDB提供的主要特性如下:

1.内置HTTP API,所以我们不需要另外写服务端的代码来启动和运行它;

2.它可以为每条数据打上标签,实现更加方便快捷的数据查询;

3.提供类SQL的查询语句,可以实现几乎无成本的SQL学习迁移,方便开发者快速掌握;

4.数据库安装和管理更加简便,快速的数据保存以及读取;

5.它的目的是实时的数据查询响应,当数据进入数据库时将被索引,同时数据的查询结果要在100ms内进行返回。

二、InfluxDB相关概念

|database|field key|field set| |:–😐 :–😐:–: | |field value|measurement|point| |retention policy|series|tag key| |tag set|tag value| timestamp| 下面将对这些概念进行说明。

| time | cpu | usage_idle | host |

| — | :-: | --: | --: |

| 1526035302000000000 | cpu-total | 43.952299828963156 | OS1 |

| 1526035302000000000 | cpu0 | 0 | OS1 |

| 1526035302000000000 | cpu1 | 89.58333333455441 | OS1 |

| 1526035302000000000 | cpu-total | 46.952299823520136 | OS2 |

| 1526035302000000000 | cpu0 | 0 | OS2 |

| 1526035302000000000 | cpu1 | 91.58333339451375 | OS2 |

influxDB是时序性数据库,所以每一条数据都带有时间戳。

服务器cpu数据存在influxDB中的cpu表中,其中cpucpu名称,host为机器名称,time是数据库中每条数据都会自带的时间戳,是fluxDB区别于其他数据库的重要特征之一。usage_idlecpu被称为fields,它是由对应的field key以及field value组成。由于influxDB是时序性数据库,所以每个field value都有对应的时间戳与其进行对应。由上表可知,每组field keyfield value的集合组成了field set

field是influxDB中不可获取的数据组成部分,每一条存放在数据库中的数据都包含field。但是field本身是没有索引的,如果以field为条件进行数据查询的时候,数据库会遍历库中所有的field直到匹配到对应的field,这样的查询是很耗费资源的。所以尽量在索引上去执行数据操作。

以上数据库表中host就相当于tag,因为它是带有索引属性的,通过它作为条件可以进行数据的筛选,意味着通过它来进行查询操作效率更高。

InfluxDB中measurement作为tag,fields和time列的容器,measurement的名字是存储在相关fields数据的描述。 measurement的名字是字符串,相对于传统关系型数据库,influxDB中的measurement就相当于mysql中的table

在样本数据中,measurement census中的所有内容都属于autogenretention policy。 InfluxDB自动创建该存储策略, 它具有无限的持续时间和复制因子设置为1。

现在我们已经熟悉了measurementtag setretention policy,那么现在是讨论series的时候了。 在InfluxDB中,series是共同retention policymeasurementtag set的集合。

| series编号 | retention policy | measurement | tag set |

| — | :-: | --: | --: |

| series 1 | autogen | cpu | host=OS1 |

最后,point就是具有相同timestamp的相同seriesfield集合。

三、InfluxDB数据查询

1.linux环境相关操作

(1) 在linux环境安装好influxDB之后,进入root权限下输入influx,linux显示如下:

这里写图片描述

(2) 输入use telegraf_1,表示使用telegraf_1这个数据库。

这里写图片描述

(3) 输入show measurements,展示该库中存在的表有哪些。后面就可以像普通sql查询一样,使用select语句进行查询的了,但是注意在查询语句后面加上limit做限制,不然会查询出来时间段内所有的数据。

这里写图片描述

SpringBoot工程中需要使用对应的Java Client library来进行相关的数据库操作。在pom文件中引入以下依赖,由于本文需要使用sql的参数化查询功能,所以使用的client版本为2.10。

org.influxdb

influxdb-java

2.10

以下代码为influxDb构建方法,代码中附有部分注释方便读者理解。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
  2. 项目经历:只写明星项目,描述遵循 STAR 法则;
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

[外链图片转存中…(img-DY7i0qvI-1711993983100)]

[外链图片转存中…(img-0ssUpyWD-1711993983100)]

[外链图片转存中…(img-cm66nELl-1711993983101)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值