Files
server/SOLUTION_REPORT.md
2025-11-22 14:22:36 +08:00

1.9 KiB
Raw Blame History

🎯 800MB Jar包优化解决方案

当前状态分析

已完成优化:

  • 移除重复依赖 (jxl, metadata-extractor, commons-imaging)
  • 预期减少约2-5MB

主要问题:

  • JavaCV + FFmpeg平台库占用400-500MB
  • 系统jar包占用约20MB
  • 代码中直接依赖JavaCV类

🏆 推荐解决方案

方案一:微服务拆分 (最佳实践)

# 主应用 (目标大小: 80-120MB)
point-strategy-main/
├── 档案管理核心功能
├── 文件上传下载
├── 数据库操作
└── 基础OCR功能

# 视频处理服务 (独立部署)
video-processing-service/
├── 视频转码功能
├── JavaCV + FFmpeg
└── 与主应用通过API通信

方案二:外部依赖部署 (快速方案)

# 1. 将JavaCV相关jar移至外部lib目录
cp ffmpeg-platform*.jar /app/lib/
cp javacv*.jar /app/lib/

# 2. 修改启动脚本
java -cp "point-strategy.jar:/app/lib/*" com.point.strategy.PointStrategyApplication

# 3. 主jar包预期大小: 120-150MB

方案三Docker分层优化

# 使用分层Dockerfile
FROM openjdk:8-jre-alpine
COPY point-strategy.jar app.jar
COPY video-libs/ /app/lib/
CMD ["java", "-Djava.library.path=/app/lib", "-jar", "app.jar"]

🚀 立即可执行的临时方案

如果需要快速解决问题,建议使用方案二

  1. 恢复JavaCV依赖 (编译需要)
  2. 外部化部署 (启动时分离)
  3. 预计主jar包: 150-200MB (减少75%)

📈 优化效果预期

方案 主jar包大小 部署复杂度 推荐度
微服务拆分 80-120MB
外部依赖 150-200MB
保持现状 598MB

🎯 建议实施步骤

  1. 短期: 实施外部依赖方案快速减小jar包
  2. 中期: 逐步拆分视频处理模块
  3. 长期: 完全微服务化重构

需要我实施哪个方案?