业务平台扩展支持TDengine时序数据库方案

news2024/11/18 4:46:37

1 场景与架构

1.1业务架构

       这里涉及项目隐私,架构图不方便公开。
       大致情况就是:
       应用层的园区畅行、生态宜居、安全守护是我方要交付的系统。
       平台层的物联网感知中台是我方平台。

1.2数据架构

在这里插入图片描述

       从数据架构看,园区畅行、生态宜居、安全守护为我方业务平台,除3个平台内部可能有数据交互的情况,还可能涉及与局方的IOC运营平台、数据中台、视频中台进行交互。
       本次预研引入TDengine数据源,单独搭建多数据源支持已经验证可行。现阶段计划二步走方案:

  1. 先尝试业务平台集成TDengine数据源支持
  2. 如果业务平台可以升级集成,并且步影响原业务,变动代价小,就走直接集成方案
  3. 如果2不成功或变动代价大,就走单独搭建,对我暴露相关服务。
    对于以上会上确定的二步走方案,结合业务架构、数据架构,我个人比较倾向单独搭建,单独搭建的服务在业务平台与局方平台之间做数据交换,起到数据交换中心的作用,并且还承担我方数仓(数据仓库)角色,与局方平台做单一入口对接,数据交换的功能。架构变更如下图:
    在这里插入图片描述
           之前架构没有参与讨论与设计,详细细节也了解的不够深入,可能理解有偏差。所以对于以上这个建议架构做保留意见,当然如果这个集成TDengin时序数据库单独成立服务模块,后期是可以扩展这个模块的能力。

2业务平台扩展TDengine支持

2.1业务平台基本情况

       这里只罗列集成相关的情况:
1、 mybatisPlus相关依赖jar包版本3.1.2(版本太老,不支持TDengine)
2、 mybatis-spring-boot-starter与mybatis-plus-boot-starter都需要升级
3、 业务Controller有继承mybatisplus-extension的ApiController(3.4.2已移除RestApi相关模块)
4、 MybatisPlus在3.4.2以上版本分页插件才支持TDengine
5、 SpringBoot有点低
6、 原mapper可能需要指定数据源
7、 多数据源配置需要调整架构

2.2业务平台集成Tdengine

2.2.1升级MyBatisPlus版本

       相关3.1.2版本升级到单独验证可行的版本(3.5.3.1),出现的情况如下:
1、 所有entity的注解@TableId找不到包
原包路径com.baomidou.mybatisplus.annotations.TableId;
先包路径com.baomidou.mybatisplus.annotation.TableId;
高版本已经变更包路径,这个注解应该没有风险,只是所有的Entity都得改。
2、 所有使用LambdaUpdateChainWrapper找不到包
原包路径
com.baomidou.mybatisplus.extension.service.additional.update.impl.LambdaUpdateChainWrapper;
新包路径
com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
高版本已经变更包路径,这个风险没有测试,变更包路径没有保存,不确定是否语义又变化,目前看使用的语义没有标识过时、废除等。
3、 所有entity的注解@ TableField找不到包
原路径com.baomidou.mybatisplus.annotations.TableField;
新路径com.baomidou.mybatisplus.annotation.TableField;
高版本已经变更包路径,这个注解应该没有风险,只是所有的Entity都得改。
4、 所有entity的重写pkVal()方法报错
原mybatisPlus的pkVal()是protected修饰
现在需要改为public修饰
这个应该也没有风险。
5、 MybatisPlus的基类Model包名变了
原路径com.baomidou.mybatisplus.activerecord.Model
新路径
com.baomidou.mybatisplus.extension.activerecord.Model
6、 MybatisPlus的count()返回值变了
原先mybatisPlus的count()方法返回的是Integer
现在的count()返回的是Long(3.4.3版本之后)
7、 MybatisPlus的selectCount()返回值变了
原先返回的是Integer
现在返回的是long(3.4.3版本之后)

2.2.2衍生配置类需要调整

       升级MybatisPlus后,相关配置类需要调整。
1、 MybatisPlus分页插件PaginationInterceptor配置类变更
原路径:com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
3.4.2后已移除,变更为新的分页插件,配置方法也有差异。
2、 逻辑删除LogicSqlInjector拦截插件变更
高版本的已经不需要配置插件。
3、 MybatisPlus性能分析插件PerformanceInterceptor变更
原路径
com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor
在3.2.0之后被移除了,官方推荐使用第三方分析插件
4、 快速生成代码方式发生变化
这里不做调通处理,因为不是主线目的。
5、 MybatisPlus的api目录不存在
这个RestApi模块在3.4.2以后就移除了。因为业务平台使用了,所有业务Controller都继承了ApiController。
这里处理方式:从3.4.2版本里反编译,并在项目下新建同样的目录,拷贝这个模块的相关代码。

2.2.3升级调整后异常处理

1、java.lang.NoSuchFieldError: ASSIGN_ID异常
原因是mybatis-spring-boot-starter与mybatis-plus-boot-starter版本不匹配。
2、mybatis-spring-boot-starter升级以后,对JDK要求17
不升级mybatis-spring-boot-starter,注解@MapperScan报错要求JDK17
3、SpringBoot的版本也需要升级
因为mybatis-spring-boot-starter升级,springboot的版本也需要升级
现在是2.2.6.RELEASE,升级要连跨好几个大版本,升级也会导致很多配置项失效,风险极高。

2.2.4代码改动量

在这里插入图片描述

       目前排除JDK版本要求,还没有计算TDengine接入的改动量如下:
       可见直接接入变更点还是非常多,有service、entity、配置类等等。后面还是涉及需要回归测试,代价还是很大,个人还是不倾向这种直接扩展方案。
       至此,考虑避免影响业务底座、业务全回归测试成本等等因素,直接对接方案还是放弃。
       最终这是一次失败的升级,实在是交付底座太老,牵扯的东西太多,代价太大,最终放弃,还是采用了单独提供服务模块的方式。
       好了,就写到这里,希望可以帮到大家。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第四章 git分支操作

4.1什么是分支 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时 候,不会影响主线分支的运行。对于初…

优化器-RBO 的规则转化

一、RBO 背景介绍RBO(Rule-Based Optimization,基于规则的优化器)有着一套严格的使用规则,按照 RBO 去写 SQL 语句,无论数据表中的内容怎样,也不会影响到你的“执行计划”。换言之 RBO 对数据不“敏感”&am…

码元,码元速率,波特率,比特率(个人理解总结)

参考:https://baike.baidu.com/item/%E7%A0%81%E5%85%83%E4%BC%A0%E8%BE%93%E9%80%9F%E7%8E%87/6305673 https://baike.baidu.com/item/%E7%A0%81%E5%85%83%E9%80%9F%E7%8E%87/10945076 https://baike.baidu.com/item/%E6%9B%BC%E5%BD%BB%E6%96%AF%E7%89%B9%E7%BC%9…

低代码:如何成为企业业务价值提升的一大利器?

首先,来看低代码能为企业带来什么? 低代码开发能够增加软件所创造的价值,帮助企业机构衡量企业级低代码平台的价值并计算它将会产生的影响。 低代码在企业的现实运用中能为企业带来巨大的经济效益。众所周知,软件可以推动业务价值…

Cesium中的飞线效果-Shader

飞线的顶点着色器坐标系换算较为复杂。代码中的vertexShaderSource部分为cesium源码中附带的顶点着色器。后期增加了一些传参方法。 用到的GLSL的API: attribute vec2 st; 两个分量为 st.s: 飞线的长度(0-1) st.t: 飞线的宽度(0~1) czm_frameNumber 每帧都会自增,用…

metersphere将默认关闭加载的UI服务启动

目录 一、安装 二、配置 selenium-grid 三、下载驱动程序 三、运行驱动程序 四、将本地运行Selenium-server配置到MeterSphere平台 一、安装 /opt/metersphere/.env,有个 ui_enabled属性,改成true, 然后 msctl reload 二、配置 selenium-grid 这里…

pytest自动化测试执行环境切换的两种解决方案

一、痛点分析 在实际企业的项目中,自动化测试的代码往往需要在不同的环境中进行切换,比如多套测试环境、预上线环境、UAT环境、线上环境等等,并且在DevOps理念中,往往自动化都会与Jenkins进行CI/CD,不论是定时执行策略…

硬盘已删除的数据怎么恢复?磁盘数据恢复,试试这3大方法!

电脑里面的硬盘起着存储安装程序或者保存着重要数据的功能,里面有我们很多数据,比如图片、文件、视频等。 有时遇到一些情况,我们把硬盘里面的重要数据删除了,或者是硬盘被损坏了,我们该怎么办?磁盘数据恢…

基于声学模型共享的零资源韩语识别系统

声学模型共享方法是极低资源小语种语音识别一种解决方案,能够实现不需要任何语音数据的语音识别。本文介绍清华大学语音与音频技术实验室的零资源韩语语音系统,其在不使用任何韩语语音数据的情况下,在Zeroth韩语数据集上的测试CER达到了27.33…

Redis主从架构 | 黑马Redis高级篇

目录 一、搭建主从架构 1、为什么要搭建 2、准备实例和配置 3、启动 4、开启主从关系 二、 数据同步原理 1、全量同步 2、命令传播 3、增量同步 三、常见面试题 一、搭建主从架构 1、为什么要搭建 如果服务器发生了宕机,由于数据恢复是需要点时间&#…

51.Isaac教程--使用强化学习的DollyDocking

使用强化学习的DollyDocking ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录使用强化学习的DollyDocking快速开始推理未来场景工厂多代理场景训练利用训练的模型运行推理Codelets模拟Isaac SDK 中的健身房状态机流程强化学习政策JSON 管…

Jenkins+GitLab自动化部署到Docker容器

JenkinsGitLab自动化部署到Docker容器1、编写Dockerfile2、为测试服务器配置Docker镜像加速器3、Jenkins相关配置3.1 配置测试服务器3.2 Pre Steps配置3.3 Post Steps配置3.4 执行构建本文是对JenkinsGitMaven自动化部署配置这篇文章的补充,有关基本的环境搭建从这篇…

Python的 6 大类数据类型,先收藏再说......

计算机程序,就是对数据进行操作。 无论你学习那种语言开发,都需要学习具体的数据类型, 每种开发语言都有自己不同数据类型。 下面是针对python语言的全部数据类型详细汇总: Python中可以自定义数据类型,可以具有无限种数据类型…

爱普生Epson WF110彩色无线便携式打印机错误E-12维护箱已到使用寿命

基本参数: 产品定位 墨仓式打印机 最高分辨率(dpi) 5760X1440dpi 网络功能 支持无线网络打印

【MySQL】成为MySQL高手必须要知道的MySQL索引

MySQL基础mysql 的查询流程索引是什么呢?MySQL索引优缺点MySQL索引分类上一篇了解到了MySQL安装步骤,接下来就开始学习MySQL索引知识点 mysql 的查询流程 查询流程大致是: mysql 客户端通过协议与 mysql 服务器建连接,发送查询…

Lesson 4.6 逻辑回归的手动实现

文章目录一、逻辑回归损失函数的梯度计算表达式二、创建分类数据集生成器1. 手动创建分类数据2. 创建分类数据生成器三、逻辑回归的手动实现四、逻辑回归的分类性能瓶颈与算法评价讨论完梯度下降的相关内容之后,接下来我们尝试使用梯度下降算法求解逻辑回归损失函数…

Microsoft Office( Word、Excel、PowerPoint)的安装

1 下载Office Tool Plus 官网地址:点击下载 2 点击Office Tool Plus.exe 3 接受软件许可条款和Microsoft服务协议 4 点击安装Office 5 选择Office 专业增强版 2019 6 确认安装Office 专业增强版 2019 7 关闭安全中心警报 8 等待安装完成 9 点击关闭 10 点击返回…

VMware创建Ubuntu系统

Ubuntu镜像可以去各个镜像网站下载 官网:https://ubuntu.com/ 中文官网:https://cn.ubuntu.com/ 镜像下载 使用Ubuntu在开发的时候下载LTS版本,也可以下载其他版本以及历史版本 这里面使用的镜像是ubuntu-16.04.7-desktop-amd64.iso版本&a…

1月书单 2月新书预告 | 百万册畅销书全新续作来啦

幸福而忙碌的 1 月一溜烟就跑走了,我们已经来到 2 月的第 1 天。最近,公司楼下售卖咖啡的地方,总是排着长长的队……想必不少小伙伴还在找状态。 图灵君先带大家回忆一下 1 月我们上新了哪些书。 01 《这才是服务设计》 作者:[德…

章节9 软件安装

9-Linux软件安装 01 软件为什么需要安装 Windows软件安装流程 安装检查释放文件复制可执行文件DLL动态链接库/安装服务注册表开始菜单和快捷方式 Windows安装文件 Windows可执行文件 Linux可执行程序 /bin /sbin /usr/bin /usr/sbin 02 脚本和程序的区别 脚本和程序的…