14 Star 109 Fork 30

OpenQuartz / easy-file

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.17 KB
一键复制 编辑 原始数据 按行查看 历史
svnlab 提交于 2023-05-03 23:13 . fix aop bug
Make BigData Export Easier!!!

EasyFile

Make BigData Export Easier!!!

欢迎Star!!!

主页
Github

介绍

什么是EasyFile

EasyFile-是为了提供更加便捷的文件服务,一整套Web大文件导出解决方案。可以轻松导出千万以上数据

功能特性

支持(同步、异步)导出、文件压缩、流式导出、分页导出、导出缓存复用、多组分页导出、多组流式导出、多种异步触发机制 等特性。

优化缓解导出文件时对服务的内存和CPU影响。针对文件服务可做更多的管理。

提供给开发者更加通用、快捷、统一的实现的API方案;

解决问题

1、瞬时加载数据过大导致内存飙高不够平滑机器宕机风险很大

2、生成较大文件容易出现HTTP 超时,造成导出失败

3、相同条件的导出结果无法做到复用,需要继续生成导出文件资源浪费

4、导出任务集中出现没有可监控机制

5、开发者不仅需要关心数据查询逻辑同时需要关心文件生成逻辑

6、导出耗时过长时,无法查看到执行进度

框架对比

与 Alibaba 的EasyExcel 相比,两者侧重点不同。

Alibaba EasyExcel 是一个Excel文件生成导出、导入 解析工具。

EasyFile 是一个大文件导出的解决方案。用于解决大文件导出时遇到的,文件复用,文件导出超时,内存溢出,瞬时CPU 内存飙高等等问题的一整套解决方案。 同时EasyFile 不仅可以用于Excel 文件的导出,也可以用于csv,pdf,word 等文件导出的管理(暂时需要用户自己集成基础导出下载类BaseDownloadExecutor 实现文件生成逻辑)。

而且,EasyFile和Alibaba EasyExcel 并不冲突,依然可以结合EasyExcel 使用,文件生成逻辑使用Alibaba EasyExcel 做自行拓展使用。

1、使用全量查出100w数据+EasyExcel导出(com.openquartz.easyfile.example.downloader.StudentDownloadDemoExecutor) 内存图: 全量导出+EasyExcel

2、使用分页导出(com.openquartz.easyfile.example.downloader.StudentPageDownloadDemoExecutor) 内存图 分页导出

生成的文件大小比对: 文件大小对比图

软件架构

EasyFile 提供两种模式

Local模式(推荐): 需要提供本地的api 存储Mapper. 将数据存储到本地数据库中管理。

Remote模式:需要部署easyfile-server 服务,并设置客户端调用远程EasyFile 的域名。

代码结构

  • easyfile-common: 公共模块服务

  • easyfile-core : 核心服务

  • easyfile-metrics : metrics支持

    • easyfile-metrics-api : metrics-api 协议
    • easyfile-metrics-promethes : metrics-promethes 实现
  • easyfile-storage: 存储服务

    • easyfile-storage-api: 存储服务API
    • easyfile-storage-remote: 远程调用存储
    • easyfile-storage-local: 本地数据源存储
  • easyfile-spring-boot-starter: easyfile starter 包 工程module集合

    • easyfile-spring-boot-starter-parent: easyfile starter parent 工程
    • easyfile-spring-boot-starter-local: easyfile local 模式 starter工程包
    • easyfile-spring-boot-starter-remote: easyfile remote 模式 starter工程包
  • easyfile-server: easyfile 远程存储服务端

  • easyfile-ui: easyfile-admin ui-管理服务 (可选)

  • easyfile-example: 样例工程

    • easyfile-example-local: 本地储存样样例工程
    • easyfile-example-remote: 远程存储样例工程

时序图

下载时序图

快速开始

快速开始

推广

If you also think this project has helped you, welcome to sign up for the promotion!

Click to register as EasyFile user!

ღ( ´・ᴗ・ )ღ Many thanks to the following registered users. ღ( ´・ᴗ・ )ღ

Java
1
https://gitee.com/openquartz/easy-file.git
git@gitee.com:openquartz/easy-file.git
openquartz
easy-file
easy-file
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891