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

2023-05-16

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、配置类等等。后面还是涉及需要回归测试,代价还是很大,个人还是不倾向这种直接扩展方案。
       至此,考虑避免影响业务底座、业务全回归测试成本等等因素,直接对接方案还是放弃。
       最终这是一次失败的升级,实在是交付底座太老,牵扯的东西太多,代价太大,最终放弃,还是采用了单独提供服务模块的方式。
       好了,就写到这里,希望可以帮到大家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

业务平台扩展支持TDengine时序数据库方案 的相关文章

  • SVN异常之svn:E230001 Server SSL certificate verification failed

    起因 某一天上班 xff0c 使用idea更新代码 xff0c 发现出现如下问题 xff1a Error svn E230001 Unable to connect to a repository at URL 39 https xxx x
  • 在Linux下,禁止某一个显示屏的输出

    今天接到了一个任务 xff0c 实现显示屏的关和开 理了下思路 xff1a 1 需求 xff1a 实现终端的开关屏 xff0c 要求仅仅是终端的屏幕关掉了 xff0c 但是系统仍旧在跑 xff0c 可以用遥控器唤醒 2 方向 xff1a 2
  • 十分钟搞懂字符编码

    编码方式描述ANSI编码常见于window xff0c 与windows操作系统所面向的国家地区有关在简体中文Windows操作系统中 xff0c ANSI 编码代表 GBK 编码在繁体中文Windows操作系统中 xff0c ANSI 编
  • python数字运算

    加法 num1 span class token operator 61 span span class token builtin input span span class token punctuation span span cla
  • k8s集群运维之master节点无法调度问题

    k8s集群创建完成后 xff0c 在部署应用的时候发现master节点无法部署pod 解决步骤如下 查看节点名称 master01 k8s git span class token punctuation span master span
  • Debian 9安装Clion 2018

    现在去官网直接下载 https www jetbrains com clion 解压缩 tar zxvf CLion 2018 1 5 tar gz cd clion 2018 1 5 bin clion sh CLion是收费 的 xff

随机推荐

  • 从用户email信息分析是否为qq邮箱并截取qq号的sql语句

    思路 xff1a 1 email是qq邮箱 2 qq邮箱也可以自己注册的 xff0c 39 64 39 前面有可能是随意填写的字符串 xff0c 过滤 39 64 39 前面不是数字的 3 截取符合邮箱 39 64 39 前面部分即为qq号
  • 解决Ubuntu虚拟机NAT不能上网的几种方法

    vmware安装ubuntu虚拟机后 xff0c 网络经常抽风 也不知道具体是什么原因导致的 有时候开机就不能上网 xff0c 有时候 xff0c 是突然不能上网 这个时候 xff0c 尝试重启虚拟机后者电脑 xff0c 看看能否解决 或者
  • 显示https不安全的原因及解决办法

    很多人在部署了https证书之后 xff0c 有的时候仍然会出现https 不安全 的提示 xff0c 这就比较纳闷了 明明说部署了https证书会受到浏览器的信任的 xff0c 怎么还会出现这种情况 xff1f 安信SSL帮大家分析一下原
  • 小程序input输入限制小数位数

    小程序input组件本身没有自带这个校验属性 xff0c 但有一个maxlength属性 xff0c 可以通过是否输入了小数点来动态计算设置maxlength的方法达到限制输入的目的 保留一位小数 lt view class 61 34 l
  • js数组对象去重

    removeID span class token operator 61 span span class token punctuation span arr span class token punctuation span span
  • 解决echarts刷新不重绘

    切换筛选条件重新查询时候Echart不重新绘制 需要绘制之前初始化Echart echarts span class token punctuation span span class token function init span sp
  • 判断是否有值,0也是有值的情况

    span class token operator span span class token function isNaN span span class token punctuation span span class token f
  • 基于高德地图SDK进行搜索

    高德地图SDK使用地址http lbs amap com 地图设置 define GDMAPKEY 64 34 key 34 import 34 ViewController h 34 import lt MapKit MapKit h g
  • Microsoft Visual C++ Build Tools.exe安装包损坏

    Python3安装支持库的过程中经常会遇到 Microsoft Visual C 14 0 is required 此时就需要安装Visual C build tools生成工具 在运行build tool安装时 提示安装包损坏 翻墙也无效
  • debian图形界面安装

    安装GNOME中文桌面环境 安装基本的X系统 apt get install x window system core 安装GNOME桌面环境 apt get install gnome 到现在为止 xff0c 我们已成功安装完成gnome
  • Qt 调试时 程序异常结束

    在调试时 xff0c 关闭窗口 xff0c 应用程序输出窗口提示 Qt 调试时 程序异常结束 21 20 48 程序异常结束 21 20 48 The process was ended forcefully 21 20 48 G proj
  • c#webservice的简单示例

    是webservice 就概念上来说 xff0c 可能比较复杂 xff0c 不过我们可以有个宏观的了解 xff1a webservice就是个对外的接口 xff0c 里面有 函数可供外部客户调用 xff08 注意 xff1a 里面同样有客户
  • 实现常规厂家&品牌&型号业务对接物联网平台(snack3加json赋能)

    前言 之前介绍过通过snack3快速对接物模型 xff0c 不知道大家还有没有影响 记得还留了一个作业给大家想想 xff0c 就是这么兼容多型号 多版本 xff0c 这次就来跟大家分享下这么集成多型号 一 物模型文件调整 上次是利用snac
  • 组合OSS服务实现打包业务文件zip下载

    前言 实现文件打包成zip下载 xff0c 支持zip包含目录 文件 废话不多说 xff0c 直接上码 一 设计思路 后端组织文件 xff0c 打包成zip上传到OSS存储返回文件名称给前端前端根据返回的文件名称 xff08 url xff
  • Spring Boot + Disruptor = 王炸!!

    01 背景 工作中遇到项目使用Disruptor做消息队列 对你没看错 不是Kafka 也不是rabbitmq Disruptor有个最大的优点就是快 还有一点它是开源的哦 下面做个简单的记录 02 Disruptor介绍 Disrupto
  • Dbeaver连接ES问题一站解决

    前言 最近几天一直做ES的TPS测试 xff0c 每次看数据ES的数据都在嫌麻烦 xff08 在postman指定索引通过url请求查看数据 xff09 最后决定还是整整Dbeaver连接ES 一 当前境况 1 ES版本比较老 xff0c
  • Dbeaver连接TDengine时序数据库

    前言 还是结合上一阶段的工作 xff0c 为TPS满足合同里的要求 xff0c 预研数据库切换为TDengine 所以查看数据的工具我得能连上去看 xff0c 习惯了Dbeaver xff0c 所以先把Dbeaver整的能连接使用 一 Db
  • idea+ApifoxUploader+Apifox真是内外双修,香

    前言 最近部门为整合后端组 前端组 测试组 需求组 产品组等组之间的工作流程 xff0c 旨在提高协调与高效 xff0c 其中之一就是希望开发组 xff08 后端 前端 xff09 开发的接口能及时更新 xff0c 测试组能做接口测试 xf
  • SpringBoot3+最新MybatisPlus+Mysql与TDengine双数据源

    前言 昨天写的idea 43 Apifox uploader插件 43 apifox新年第一天上班就上榜了 xff0c 真是不错 今天来补一篇 xff0c 本来应该是在前一篇之前发的 实际上就是最新的springBoot集成最新的mybat
  • 业务平台扩展支持TDengine时序数据库方案

    1 场景与架构 1 1业务架构 这里涉及项目隐私 xff0c 架构图不方便公开 大致情况就是 xff1a 应用层的园区畅行 生态宜居 安全守护是我方要交付的系统 平台层的物联网感知中台是我方平台 1 2数据架构 从数据架构看 xff0c 园