一、TDengine 介绍
TDengine 官网
TDengine的介绍
TDengine是一款国产、开源、云原生的时序数据库(Time Series Database),专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个极简的时序数据处理平台。它能让大量设备、数据采集器每天产生的高达TB甚至PB级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。
TDengine 3.x的介绍
TDengine 3.x带来了几大核心特性,包括云原生架构、流式计算,还增强了数据订阅功能;更重要的是,3.0系列版本开始提供了全平台支持,服务器/客户端均已支持 Linux、Windows 和 MacOS。TDengine 3.0是一款真正的云原生时序数据库(Time Series Database,TSDB)。它有几大亮点:
(1)可以支持 10 亿个设备、100 个节点
(2)支持存储与计算分离,引入了计算节点(QNode),并重构了整个计算引擎
(3)完善并优化了对消息队列、流式计算和缓存的支持,引入事件驱动的流式计算
(4)解决了困扰时序数据库的高基数问题
二、安装
安装Tdengine服务端
启动镜像
docker run -d --privileged=true \
--restart=always --name=tdengine \
-v /app/taos/dnode/data:/var/lib/taos \
-v /app/taos/dnode/log:/var/log/taos \
-v /etc/localtime:/etc/localtime -v /usr/share/zoneinfo:/usr/share/zoneinfo \
-p 6030:6030 -p 6041:6041 -p 6043-6049:6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine:3.0.7.1
可视化工具
默认账号密码:root taosdata
使用Dbeaver连接
三、SpringBoot服务中使用
代码整理
引入TDengine驱动,注意版本与TDengine server 版本匹配度
<!-- TDEngine驱动 -->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>3.3.0</version>
</dependency>
代码中直接使用JDBC建立连接就行,使用JdbcTemplate,对数据库进行操作。如果还使用其它数据库的时候,注意多数据源问题的解决,此处不做讲解。
服务部署
此处应注意,服务使用docker部署的时候,能正常启动,但是在使用TDengine的时候会报错:
no taos in java.library.path
问题一:获取不到驱动
首先我们要找到宿主机驱动文件位置:/usr/local/taos/driver/,服务在容器内运行时在java.library.path 下没有发现驱动,所以我们要将宿主机的驱动给放到 java.library.path 下面。这里我直接将驱动文件拿出来放到项目里了,也就是上图的 libtaos.so.3.3.2.0 文件,这个是 3.3.2.0版本的驱动。将驱动名修改为libtaos.so,放到项目下src 同级目录,此处还有其它做法。
这里在服务构建镜像时,在dockerfile 中将libtaos.so copy 到 java.library.path 也就是usr/lib 下面,这里根据自己的目录而定,里面还copy了其它的一些工具包
这里还需要对时区进行设置,一样也放在dockerfile中
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo Asia/Shanghai > /etc/timezone
问题二:基底镜像问题
这里困扰了很久,由于docker file 基底镜像用的是 openjdk:8-jre-alpine,这里的镜像少了太多的东西,导致问题从出不穷。
后面用了docker.m.daocloud.io/openjdk:8 镜像解决了问题。这里还可以装docker.m.daocloud.io/ubuntu:20.04,但是需要自己把jdk装进去。
问题三:taos版本问题
这里用的最新版的TDengine 也就是3.3.2.0版本,不需要copy下面这些工具包,但是使用3.0.7.1的版本时需要,工具包自己网上找。
COPY ./libc.musl-x86_64.so.1 /usr/lib/libc.musl-x86_64.so.1
COPY ./ld-linux-x86-64.so.2 /usr/lib/ld-linux-x86-64.so.2
COPY ./libjemalloc.so.2 /usr/lib/libjemalloc.so.2