docker环境连接tdengine服务

news/2024/4/29 16:51:35/文章来源:https://blog.csdn.net/MonkeySun123321/article/details/127796241

1.开发app项目

<!--引入TDEngine-->
<dependency><groupId>com.taosdata.jdbc</groupId><artifactId>taos-jdbcdriver</artifactId><version>3.0.0</version>
</dependency>
<!-- 引入jdbc -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
spring:datasource:url: jdbc:TAOS://:/ciotdriver-class-name: com.taosdata.jdbc.TSDBDriverusername: rootpassword: taosdata
@RestController
public class AppController {@Autowiredprivate JdbcTemplate jdbcTemplate;@GetMapping("create")public String create() {jdbcTemplate.execute("use ciot");jdbcTemplate.execute("create table if not exists weather_1(" +"ts timestamp ,temporary float ,humidity int)");List<String> tables = jdbcTemplate.query("show tables", (rs, rowNum) ->rs.getString(1));return tables.toString();}@GetMapping("hello")public String test() {return "hello world";}
}

运行项目,请求接口 http:127.0.0.1:8080/create 获取响应结果

2.根据TDengine Linux Client构建基础镜像

2.1.准备安装包

​ 官网下载TDengine-client-3.0.1.4-Linux-x64-Lite.tar.gz,并放置在./target目录中

2.2.编写Dockerfile

### 基础镜像
FROM openjdk:8
### 作者
MAINTAINER zhaominglei <17610907265@sina.cn>
### 系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
WORKDIR /
### 将TDengine-client添加进入镜像
ADD target/TDengine-client-3.0.1.4-Linux-x64-Lite.tar.gz /
### 解压缩并安装client
WORKDIR /TDengine-client-3.0.1.4/
RUN ./install_client.sh
### 安装时间工具ntp
#RUN echo ' \
#    deb http://mirrors.aliyun.com/debian/ buster main non-free contrib \
#    deb http://mirrors.aliyun.com/debian-security buster/updates main \
#    deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib \
#    deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib \
#    deb-src http://mirrors.aliyun.com/debian-security buster/updates main \
#    deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib \
#    deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib \
#    deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib \
#    ' > /etc/apt/sources.list
#RUN apt-get clean && apt-get update --fix-missing
#RUN apt-get install -y ntp ntpdate

2.3.构建tdengine client基础镜像

docker build -t tdengine-client:0.0.1 -f Dockerfile .

2.4.查看构建的基础镜像

在这里插入图片描述

3.根据基础镜像构建工程镜像

3.1 准备工程jar

​ 执行mvn clean package 获得app-0.0.1-SNAPSHOT.jar,并放置在./target目录中。

3.2 编写Dockerfile

### 基础镜像
FROM tdengine-client:0.0.1
### 同步系统时间
RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#RUN ntpdate cn.pool.ntp.org
### 修改基础镜像中taos.cfg
RUN echo "firstEp  hasaki:6030" >> /usr/local/taos/cfg/taos.cfg
### 修改hosts
RUN echo "192.168.177.137 hasaki" >> /etc/hosts
### 应用构建成功以后jar文件被复制到镜像内,名字也改为app.jar
ADD target/app-0.0.1-SNAPSHOT.jar /app.jar
### 启动容器时的进程
ENTRYPOINT ["java", "-jar", "/app.jar"]
### 暴露的端口
EXPOSE 8080

3.3 构建工程镜像

docker build -t app:0.0.1 -f Dockerfile .

3.4 查看构建的工程镜像

在这里插入图片描述

3.5 根据镜像运行容器

docker run -d -p 8083:8080  app:0.0.1

请求接口查看结果:http://192.168.177.131:8083/create

4. 问题记录

4.1 tdengine创建普通用户并授权

4.1.1 执行命令并查看结果:

CREATE USER ciot PASS '123321' sysinfo 1;
show users;

在这里插入图片描述

4.1.2 用户授权

GRANT ALL ON ciot.* TO ciot;

4.1.3 结论

经测试,授权过某一数据库权限的用户仍然具有其他数据库的操作权限,授权失败。
已经反馈给TDengine技术支持人员。

4.2 新版tdengine解决了什么问题

4.2.1 修复bug

  • taosd和taosAdapter中存在一些内存泄漏
  • 删除后的数据仍然可以查询到
  • 无模式写入不会积累在写入的统计数据中
  • 与NCHAR匹配时,结果错误
  • 当事务失败时,show transactions命令的操作输出是错误的
  • float列上max()的错误结果
  • 计划器和查询模块的一些bug
  • taosd在查询子表数量时崩溃,无法重启
  • 由interp()导致的taosd崩溃
  • twa+间隔导致Taosd崩溃
  • 无效行索引导致Taosd崩溃
  • 使用已有数据重新启动Taosd失败
  • taosd在修改表TTL为1后崩溃,并在重启时继续崩溃
  • last()导致Taosd崩溃
  • 使用group by查询导致taosd崩溃
  • Vnode陷入无限循环
  • Insert在创建SMA后挂起
  • 频繁的taos_connect()/taos_close()导致客户端死锁
  • 查询子表个数时CPU占用率过高
  • 高压力查询导致客户端挂起
  • Limit不适用于嵌套查询
  • TTL作为查询条件不适用于information_schema
  • length()函数的计算错误
  • SUM()函数的计算错误
  • 在高压力写入过程中强制停止Taosd后无法启动
  • Taosd崩溃后无法重新启动
  • 创建2亿个表时崩溃,无法重新启动
  • 删除数据库后出现"表不存在"错误
  • “Show create table”命令不能显示注释

4.2.2 增强

  • avg()函数的性能优化
  • 优化taosd启动速度
  • 在超过100万个表的情况下,对索引模块进行性能优化
  • 2.x KeepColumnName功能在3.0中得到支持
  • “taosd -s” 可以转储mnode的详细信息
  • “show transactions” 命令可以输出正在进行的操作
  • 禁用非时间戳列上的连接操作
  • TDB模块日志优化,降低mnode CPU使用率

4.3 集群环境如何保证高可用

4.3.1 show dnodes

首先集群节点设置要正确,通过show dnodes命令查看,如下图:

在这里插入图片描述

如果节点缺少,需要通过 create dnode "hostname:port"创建。

4.3.2 show mnodes

如果需要保证服务高可用,需要在注册节点taos cli中手动执行以下命令:

create mnode on dnode 2;

其中,dnode 2是指对应tdengine节点的id值。

执行命令后,如下图所示。

此时当leader宕机,follower会自动升级为leader,提供服务。如下图所示:

4.4.3 vnode设置多副本保证高可用

CREATE DATABASE demo replica 3;

如果此时有四个dnode,关掉两个dnode服务(这两个服务至多有一个leader,否则mnode不可用),vnode group 仍然可以正常使用。如下图:

此时,关闭hasaki-3,数据库操作无法执行,如下图所示:

4.4 时间不同步问题解决

4.4.1 非docker环境

 Client and server's time is not synchronized

执行如下命令:

yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org

4.4.2 docker环境

tdengine client基础镜像系统为debain,执行ntpdate cn.pool.ntp.org Can't adjust the time of day: Operation not permitted;

原因分析:猜测在一些虚拟vps上,可能存在一些限制,导致此处报错。

经测试,使用RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

可以解决docker环境项目接口访问数据库,Client and server’s time is not synchronized问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_223838.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue(四)——使用脚手架(1)

安装和启动&#xff1a; 目录 分析脚手架结构 render函数 修改默认配置 ref属性 props配置项 mixin混入 插件 scoped样式 分析脚手架结构 脚手架文件结构 ├── node_modules ├── public│ ├── favicon.ico: 页签图标│ └── index.html: 主页面├── …

【Linux修炼手册:基本指令(上)】

目录 1 ls 指令 2 pwd命令 3 cd 指令 4 touch指令 5 mkdir指令&#xff08;重要&#xff09; 6 rmdir指令 && rm 指令&#xff08;重要&#xff09; 7 cp指令&#xff08;重要&#xff09; 8 mv指令&#xff08;重要&#xff09; 9 cat 总结&#xff1a; 1 ls…

C语言如何做到四舍五入保留小数

C语言中的格式化打印 : 例如&#xff1a; printf("%.2f",21.195); 输出是 21.20 四舍五入保留了定义宏变量 #define 即符号常量 也能够四舍五入保留 而变量和常变量 并不四舍五入&#xff1a; float a21.195 ;const float b21.195;printf("%.2f \n %.2f&quo…

Java本地搭建宝塔部署实战springboot工艺管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套java开发的工艺管理系统源码&#xff0c;该系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术架构 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.…

【linux】stat文件属性中三个时间的区别(Access time,Modify time,Change time)

在了解这三个时间之前&#xff0c;我们了解什么是stat。 stat 文件名/目录 表示查看这个文件或者目录的属性&#xff0c;当然属性中包括我们的三个时间属性。 例如&#xff1a; OK&#xff0c;了解完stat之后 ,我们开始进入主题&#xff1a;Access time,Modify time,Change t…

几款很好看的爱心表白代码(动态)

分享几款好看的爱心表白代码❤️爱心代码❤️&#xff08;C语言&#xff09;❤️流动爱心❤️&#xff08;htmlcssjs&#xff09;❤️线条爱心❤️&#xff08;htmlcssjs&#xff09;❤️biu表白爱心❤️&#xff08;htmlcssjs&#xff09;❤️matlab爱心函数❤️&#xff08;需…

LSTM--火灾温度预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章地址&#xff1a; 365天深度学习训练营-第R2周&#xff1a;LSTM-火灾温度预测&#x1f356; 作者&#xff1a;K同学啊一句话介绍LSTM&#xff0c;它是RNN的进阶版&#xff0c;如果…

静态路由———初学

文章目录实验需求:关键命令&#xff1a;静态路由默认路由实验配置接下来是配置pc的IP地址静态路由的配置保存实验需求: PC1 在 LAN1 中&#xff0c;PC2 在 LAN2 中&#xff0c;使用静态路由实现 pc1 和 pc2 之间的互相通信 本实验使用Cisco Packet Tracer 模拟器搭建 所有的路…

公考求的是稳定,搞IT求的是高薪,鱼和熊掌能否兼得?

程序员和公务员&#xff0c;大概是最让大家耳熟能详的两种职业。 这也是中国现代年轻人最具有代表性的两种职业。 程序员是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员&#xff0c;但两者的界限并不非常清楚&#xff0c;特别是在中国。软…

Verilog功能模块——Uart收发

摘要本文分享了一种通用的Uart收发模块&#xff0c;可实现Uart协议所支持的任意波特率&#xff0c;任意位宽数据&#xff08;5~8&#xff09;&#xff0c;任意校验位&#xff08;无校验、奇校验、偶校验、1校验、0校验&#xff09;&#xff0c;任意停止位&#xff08;1、1.5、2…

前端反爬思考,好友从百度搜到了我的文章,链接却是别人的

今天感叹可以改完八阿哥早点下班&#xff0c;在吃饭的时候&#xff0c;就想着自己也写了一段时间了&#xff0c;看看百度这个强大的引擎能不能搜到我的博客文章。 1、发现文章被爬走了 吃饭的时候用手机搜的&#xff0c;感觉还挺开心&#xff0c;我还给朋友炫耀&#xff0c;你看…

Import Error: from torchtext.data import to_map_style_dataset解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

电子统计台账:快速设置产品的排除与保留

目录 1 基础操作 2 设置垂直过滤模板 2.1 排除法 2.2 保留法 3 完成其他设置 4 小提示&#xff1a;项目导入导出 实践中&#xff0c;企业数据文件中可能有很多产品&#xff0c;中间混杂诸如“累计”、“合计”、“报表人”、“企业负责人”等信息。我们需要用简单的操作完…

洛谷千题详解 | P1018 [NOIP2000 提高组] 乘积最大【C++、Python、Java、pascal语言】

博主主页&#xff1a;Yu仙笙 专栏地址&#xff1a;洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析&#xff1a; C源码&#xff1a; Python源码&#xff1a; Pascal源码&#xff1a; Java源码&#xff1a; -------------------------------------------------…

苯丙氨酸甲酯双三氟甲基磺酰亚胺[PheC1][Tf2N]氨基酸酯离子液体

苯丙氨酸甲酯双三氟甲基磺酰亚胺[PheC1][Tf2N]氨基酸酯离子液体 纯度&#xff1a;95% 外观与形状:液体/固体, 储存:存放于惰性气体之中 应避免湿气 (吸湿) 包装规格(Packing):50g、100g、500g 保存方法&#xff1a;密闭&#xff0c;阴凉&#xff0c;通风干燥处 氨基酸酯…

返回Series或DataFrame中指定列中指定数量的最小值nsmallest()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 返回Series或DataFrame中 指定列中指定数量的最小值 nsmallest()函数 [太阳]选择题 下列说法错误的是? import pandas as pd mySeries pd.Series([31, 21, 11]) print("【显示】mySer…

Numpy手撸softmax regression

算法介绍 Softmax 回归&#xff08;或多项逻辑回归&#xff09;是将逻辑回归推广到我们想要处理多个类的情况。 在逻辑回归中&#xff0c;我们假设标签是二元的&#xff1a;y(i)∈{0,1}y^{(i)} \in \{0,1\}y(i)∈{0,1},我们使用这样的分类器来区分两种手写数字。 Softmax 回归…

C#项目实战|人脸识别考勤

此文主要通过WinForm来制作的一个人脸识别考勤打卡程序&#xff0c;有兴趣的小伙伴可以接入到打卡机上。 一、实现流程1.1、创建项目1.2、设计页面1.3、创建应用1.4、获取Token及参数解析1.5、与人脸数据比对并展示一、实现流程 1.1、创建项目 打开Visual Studio&#xff0c;右…

值得入手的键盘——Keychron K8 Pro

目录 一、前言 二、介绍 三、上手体验 四、总结 一、前言 在如今&#xff0c;外设产品市场相当火爆的时代&#xff0c;拥有诸多知名的品 牌&#xff0c;而一个新品牌要在竞争非常激烈的情况下站稳脚跟&#xff0c;实属不易。诞生于2017年的 Keychron 以其品质作为高端战略…

【mcuclub】舵机-SG90

一、实物图&#xff08;SG90&#xff09; 二、原理图 编号名称功能1GND电源地&#xff08;棕色线&#xff09;2VCC电源正&#xff08;红色线&#xff09;3I/O信号线&#xff08;黄色线&#xff09; 三、简介 舵机&#xff08;英文叫Servo&#xff09;&#xff0c;是伺服电机的…