SXSSFWorkbook-MinIo-大数据-流式导出

news2025/6/27 4:34:59

文章目录

  • 前言
  • 业务现状
  • 架构思路
  • 技术细节
    • 生成摘要ID
    • SXSSFWorkbook
    • MinIo
    • mybatis 流查询
    • PipedInputStream 保存到minio
  • 总结


前言

由于业务涉及到数据比较大,用户对导出功能使用频繁,每次导出数据两10万以上。
为了减少数据库压力,及应用服务器性能压力。
在此记录一下大数据导出解决方案。


业务现状

数据周期: 一天内数据不变,即:数据一天首次更新后,要到第二天才会变动。

架构思路

摘要ID: 如果ID相同,说明是相同的导出任务,可以重用,没必要开启新的导出任务。
在这里插入图片描述

技术细节

生成摘要ID

message: URI + 关键参数字符串 + 当天时间
在这里插入图片描述

SXSSFWorkbook

针对大数据导出,大家都说好。此次省略好多字

MinIo

附件存贮服务。
各有喜好,我就用了这个。
相关桶主备功能可以参阅我的另一篇文章:Minio桶复制(Bucket Replication)

mybatis 流查询

主要功能:数据以流的方式有结果,一条一条的处理。
以前是先查询所有数据,再封装到 SXSSFWorkbook, 现在改成每来一条就添加一条到SXSSFWorkbook,所以SXSSFWorkbook需要做好封装。
关键代码:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

PipedInputStream 保存到minio

优化前

// 问题:
//  1. XSSFWorkbook  不适合大数据导出
//  2. bos.toByteArray()  会造成内存溢出

		XSSFWorkbook xwb = new XSSFWorkbook();
		...........
		......
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        wb.write(bos);
        byte[] bytes = bos.toByteArray();
        ........
        // 使用 bytes 上传到 minio

优化后:
使用 PipedInputStream 直接上传到 minio
这里注意:
1.

// 一定要有
// 新手包括我自己,平时写代码没有关闭连接的习惯,很多连接不关闭短时间是没有问题的
// 但是!在这里必须有,不然PipedInputStream 会一直堵塞,minio 上传无法完成。

out.close();

executor: 线程池
PipedInputStream , PipedOutputStream 两者不能在同一线程里, 大家都这么说。

SXSSFWorkbook wb = new SXSSFWorkbook();
.............

在这里插入图片描述

总结

需要根据自己的业务情况考虑。
改造 SXSSFWorkbook 需要做好封装。
对 PipedInputStream ,PipedOutputStream 需要有一定了解,起初没有正确关闭流,导致bug调试很久。

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

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

相关文章

TSINGSEE青犀智慧城市数字基座解决方案,助力城市数字化转型

一、行业背景 我国“十四五”规划纲要中提出,分级分类推进新型智慧城市建设,将物联网感知设施、通信系统等纳入公共基础设施统一规划建设,推进市政公用设施、建筑等物联网应用和智能化改造。完善城市信息模型平台和运行管理服务平台&#xf…

基于 ACK Fluid 的混合云优化数据访问(四):将第三方存储目录挂载到 Kubernetes,提升效率和标准化

作者:车漾 前文回顾: 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景,相关文章请参考: -基于 ACK Fluid 的混合云优化数据访问(一):场景与架构 -基于 ACK Fluid 的混合云优…

基于STM32_DS18B20单总线传感器驱动

基于STM32_DS18B20单总线传感器驱动 文章目录 基于STM32_DS18B20单总线传感器驱动前言一、BS18B20?二、原理1.复位与检验2.基本命令3.唯一ROM识别码4.温度转换 三、驱动代码四、注意事项 前言 本文以一款典型的单总线传感器及其驱动——DS18B20为例,简单…

Day 5 C++

#include <iostream> //多继承 using namespace std; //封装沙发 类 class Sofa { private:string sitting; public:Sofa(){cout<< "父类sofa无参构造函数" << endl;}Sofa(string s):sitting(s){cout << "父类sofa有参构造函数" &…

不做决策的“RPA机器人”,不是合格的“数字化劳动力”

01 RPA机器人向“数字劳动力”的转变 随着 RPA 技术被广泛应用各行业的不同场景中&#xff0c;再结合以深度学习为代表的 AI 人工智能技术的新一轮发展&#xff0c;RPA 机器人目前已经从仅能处理“单一、重复和标准化的流程”向智能流程自动化的方向发展&#xff0c;从而具备处…

简单的数学运算如何改变算法

简单的数学运算如何影响事物 当你坐在无人驾驶汽车上行驶时&#xff0c;突然发现前面有一个问题。一个亚马逊快递司机将他们的货车开到了一辆双停的UPS卡车旁边&#xff0c;然后才意识到无法通过。现在他们卡住了&#xff0c;你也卡住了。 街道太窄&#xff0c;无法实现U型转弯…

什么!复杂环境下的编队控制问题还能这样解决?

恭喜南京航空航天大学-王志伟同学&#xff0c;在参与阿木实验室校园赞助-Prometheu技术文章创作活动中成功入选&#xff0c;将获得阿木实验室现金奖励500元&#xff01;现将相关文章内容分享给大家&#xff0c;鼓励更多的同学加入到我们校园赞助活动中来&#xff01; 近年来&a…

自学(黑客)技术——网络安全篇

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

MySQL报错 table “xxx” doesn‘t exit

问题描述 以前项目的数据库部署在云端Windows Server系统上&#xff0c;最近有需求要把数据库移到CentOS7的服务器上&#xff0c;数据转移到时候一切正常&#xff0c;并且使用Navicat for MySQL访问数据库的时候也没有异常&#xff0c;但是项目实际运行起来的时候接口一直在报…

第十三更---大家都在那里查找资料??

今天聊点题外话。大家都在那里查找资料呢&#xff0c;如今的资源网站太多了&#xff0c;眼花缭乱。今天我把一些常见的平台罗列一下 大家还有什么宝藏网站的话多多评论区分享吧 目录 一.CSDN 二.掘金 三.菜鸟教程 四.MDN 五.牛客 六.博客园 七.b站 八.微信读书 一.CSD…

VMWare 安装CentOS7镜像

安装CentOS 7 整个安装过程分两大步&#xff0c;第一步装机器&#xff0c;第二步装系统. 第一步: 装机器 检查物理机虚拟化支持是否开启&#xff0c;需要进入到BIOS中设置&#xff0c;因各种电脑型号进入BIOS 方式不同&#xff0c;同学们自行查找对应品牌电脑如何进入BIOS 建…

IIS 解析漏洞复现

文章目录 IIS 解析漏洞复现1. 漏洞描述2. 漏洞复现3. 漏洞原因4. 安全加固5. 安全防护 IIS 解析漏洞复现 1. 漏洞描述 说明内容漏洞编号漏洞名称IIS 解析漏洞漏洞评级高危影响范围IIS 6.0及以前版本IIS 7.0IIS 7.5漏洞描述IIS 解析漏洞是指在 IIS 服务器上存在的安全漏洞&…

Webmin远程命令执行漏洞复现报告

漏洞编号 CVE-2019-15107 漏洞描述 Webmin是一个基于Web的系统配置工具&#xff0c;用于类Unix系统。密码重置页面中存在此漏洞&#xff0c;允许未经身份验证的用户通过简单的 POST 请求执行任意命令。 影响版本 Webmin<1.920 漏洞评级 严重 利用方法&#xff08;利…

小谈设计模式(26)—中介者模式

小谈设计模式&#xff08;26&#xff09;—中介者模式 专栏介绍专栏地址专栏介绍 中介者模式分析角色分析抽象中介者&#xff08;Mediator&#xff09;具体中介者&#xff08;ConcreteMediator&#xff09;抽象同事类&#xff08;Colleague&#xff09;具体同事类&#xff08;C…

# Spring Cloud的新潮流:服务网格与无缝通信

文章目录 微服务通信的挑战引入服务网格Spring Cloud和服务网格的融合Envoy与Spring Cloud的集成服务网格的可观察性 服务网格的安全性无缝的微服务通信结语 &#x1f389;欢迎来到架构设计专栏~# Spring Cloud的新潮流&#xff1a;服务网格与无缝通信 ☆* o(≧▽≦)o *☆嗨~我…

Docker在边缘计算中的崭露头角:探索容器技术如何驱动边缘计算的新浪潮

文章目录 第一部分&#xff1a;边缘计算和Docker容器边缘计算的定义Docker容器的崭露头角1. 可移植性2. 资源隔离3. 自动化部署和伸缩 第二部分&#xff1a;应用案例1. 边缘分析2. 工业自动化3. 远程办公 第三部分&#xff1a;挑战和解决方案1. 网络延迟2. 安全性3. 管理和部署…

大数据之力:从数据湖到数据智能的升级之路

文章目录 什么是数据湖&#xff1f;什么是数据智能&#xff1f;数据湖与数据智能的结合实现数据湖和数据智能的关键技术挑战和未来展望结论 &#x1f389;欢迎来到AIGC人工智能专栏~大数据之力&#xff1a;从数据湖到数据智能的升级之路 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#…

常用burpsuite渗透插件

burpsuite_plugin 个人常用burpsuite渗透插件&#xff0c;根据常用系列插件为&#xff1a; 1.TsojanScan 2.RouteVulScan 3.BurpJSLinkFinderv2 大大提高渗透测试存在某些难以发现的接口未授权&#xff0c;SQL注入等&#xff0c;用了之后腰也不疼了&#xff0c;脑子又长了…

2023年八款优质替代Microsoft Project的选择(免费和付费)

过去&#xff0c;许多公司在没有预算或预算紧张的情况下都依赖MicrosoftProject来进行项目资源规划。然而许多用户期望从他们的商业软件中获得的许多最先进的项目管理功能但Microsoft工具并没有提供。小公司如何平衡预算现实与软件需求&#xff1f; 项目管理软件领域已经飞速发…

信号功率谱密度理解及其与频谱和能量谱的区别

信号功率谱密度理解及其与频谱和能量谱的区别 一、功率谱密度的特点 信号的功率谱密度函数是指这样的频率函数&#xff1a; &#xff08;1&#xff09;在整个频率范围内对它进行积分后&#xff0c;就能得到信号的总功率&#xff1b; &#xff08;2&#xff09;它描述了信号功…