功能说明
2025年1月4日大约 9 分钟SASSpring Authorization ServerDante Cloud微服务领域驱动DDDSpring BootSpring CloudSpring SecuritySpring Cloud AlibabaSpring Cloud TencentOAuth2.1NacosSkywalkingSentinelSeata
对比 | Compare
一、不只是简单的 Spring Boot Starter 构建
- 构建统一的错误,可以返回更人性化、更易理解的错误信息,同时兼顾更详细错误信息的返回,方便开发人员理解和定位问题。
- 采用更易理解和使用的格式对 Minio Java SDK 参数进行重新定义。规避 Minio 默认 XML 方式参数多、不易理解使用、与前端交互不方便等问题。
- 隐藏 Minio Java SDK 不易理解和使用的细节,提供详实的注释说明,开发人员在使用时无需再通过翻阅 Minio 在线文档和源代码来了解各个 API 使用细节。
- 提供统一标准的 REST API,以及 OpenAPI Swagger3 文档描述和准确的 Spring Validation 校验,可直接集成至系统中使用。
- Minio Client 对象池、自定义极简 Minio Server 访问反向代理,提升
- 逐步丰富不同厂商 OSS 操作,作为不同 OSS 实现。
- 抽象统一 REST API,实现统一接口操作不同厂商 OSS。
二、标准化业务逻辑和解决方案集合
- 不只是上传、下载等常用方法的封装,涵盖 Minio Java SDK 支持的所有方法和操作。
- 选择业内最优的解决方案,实现和集成大文件分片上传、秒传、直传、断点续传等主要业务需求功能。
- 结合自身应用经验和需求,将 Minio API 进一步组合成符合实际应用的业务逻辑和功能处理。
- 采用一个基于 Vue3、Typescript5、Vite4、Pinia 2 的完整的前端项目作为集成示例,包括详细的 Typescript 类型定义以及 vue-simple-uploader 等主流组件集成和使用方法。
- 提供基于 Spring Authorization Server 的单体版、微服务版案例,从 SDK、Spring Boot Starter 到完整项目任你选择。
三、具体差异说明
- [1] 基础 API 方法以及方法参数
Minio SDK | Dante OSS |
---|---|
仅包含基础操作 API | 提供大量重载方法 |
必须用构造器创建参数对象 | 重载方法覆盖所有常见参数,按需传参即可 |
API 全部混在同一个类中 | 根据差异、用途、场景拆分为不同的 Service,例如:getObject 和 downloadObject |
源于 XML 对象参数结构复杂 | 自定义实体和转换器简化参数结构 |
基础 API 会抛出大量 Exception,具体问题需要自己摸索对应 | 对所有错误进行标准化处理,提供更准确和交互友好的描述信息,可方便地与系统错误体系融合 |
- [2] 前后端交互
Minio SDK | Dante OSS |
---|---|
复杂结构参数不利于 JSON 互转 | 采用最简化参数方便传输并可准确转换成对应 Minio 复杂对象参数 |
参数层次结构复杂 | 自定义请求参数实体保持继承结构的同时简化传递参数 |
参数多用途不明晰必须查阅源代码 | 使用 OpenAPI 注解详细说明各参数用途可使用 Swagger 查阅 |
参数校验规则细节多没有文档说明 | 对照 Minio 源代码,结合自定义实体,增加匹配的 Spring Validation 校验 |
不提供 REST API | 提供标准的 REST API 可直接使用 |
- [3] 业务支持
内容 | Minio SDK | Dante OSS |
---|---|---|
常规业务 | 独立方法需要自己按需组合 | 封装常规业务逻辑,可直接调用 REST API 使用 |
设置管理 | 对于存储桶、对象的管理只能通过 Minio 服务器管理界面 | 对照 Minio 管理界面方式,将管理功能封装为 Service、REST API 以及 Vue 管理界面 |
文件直传 | 提供直传机制,直接暴露 Minio 服务器地址 | 增加超简化反向代理,在满足直传需求的前提下,很好的隐藏 Minio 服务器以提升安全性 |
文件直传 | 直传接口无法与现有系统安全体系融合(无法鉴权) | 提供基于 Spring Authorization Server 的、完整的单体版和微服务版案例 |
接口防护 | 不提供 REST API 及 接口防护 | 根据 REST 接口类型,默认设置幂等、防刷等接口调用防刷机制 |
对象池化 | Builder 模式创建基础 Client | 构建 Minio Client 和 Minio Admin 对象池模式,支持重用 Minio 基础对象来提高应用程序性能和效率 |
大文件分片 | 内部机制无法直接使用 | 封装主流大文件分片方案,提供前后端使用案例 |
- [4] 前端开发
Dante OSS |
---|
只要 Minio API 支持,对应的管理功能均会在标准的 Vue3 工程中实现 |
提供与后端一致 Typescript 声明文件,可以直接用于基于 Typescript 的前端开发 |
完整的、基于 Vue3、Vite4、Typescript5 的前端项目案例,可清晰的了解 Minio 前后端交互和使用,甚至直接使用 |
功能 | function
- [1] 基础功能
功能 | 说明 |
---|---|
Bucket 列表 | Bucket 列表查询,包括 Service、REST API 和前端展示 |
Bucket 名称是否存在 | Bucket 名是否存在,包括 Service、REST API 和前端异步校验处理 |
Bucket 创建 | 创建 Bucket,包括 Service、REST API 和前端 Validation 校验处理 |
Bucket 删除 | 删除 Bucket,包括 Service、REST API 和前端展示处理 |
Bucket 加密设置获取 | 获取 Bucket Encryption 设置,包括 Service、REST API |
Bucket 修改加密设置 | 修改 Bucket Encryption 设置,包括 Service、REST API |
Bucket 删除加密设置 | 删除 Bucket Encryption 设置,包括 Service、REST API |
Bucket 访问策略设置获取 | 获取 Bucket Policy 设置,包括 Service、REST API |
Bucket 修改访问策略设置 | 修改 Bucket Policy 设置,包括 Service、REST API |
Bucket 删除访问策略设置 | 删除 Bucket Policy 设置,包括 Service、REST API |
Bucket 标签获取 | 获取 Bucket Tags,包括 Service、REST API |
Bucket 修改标签 | 修改 Bucket Tags,包括 Service、REST API |
Bucket 删除标签 | 删除 Bucket Tags,包括 Service、REST API |
Bucket 对象锁定设置获取 | 获取 Bucket ObjectLockConfiguration 设置,包括 Service、REST API |
Bucket 修改对象锁定设置 | 修改 Bucket ObjectLockConfiguration 设置,包括 Service、REST API |
Bucket 删除对象锁定设置 | 删除 Bucket ObjectLockConfiguration 设置,包括 Service、REST API |
Object 列表 | Object 列表查询,包括 Service、REST API 和前端展示 |
Object 删除 | 删除 Object,包括 Service、REST API 和前端展示处理 |
Object 批量删除 | 批量删除 Object,包括 Service、REST API 和前端展示处理 |
Object 元信息获取 | 获取 Object Stat,包括 Service、 |
Object 下载(服务端) | Object 下载(服务端下载,非流模式),包括 Service、 |
Object 标签获取 | 获取 Object Tags,包括 Service、REST API |
Object 修改标签 | 修改 Object Tags,包括 Service、REST API |
Object 删除标签 | 删除 Object Tags,包括 Service、REST API |
Object 获取保留设置 | 获取 Object Retention,包括 Service、REST API |
Object 修改保留设置 | 修改 Object Retention,包括 Service、REST API |
Object 开启持有设置 | 获取 Object LegalHold,包括 Service、REST API |
Object 关闭持有设置 | 修改 Object LegalHold,包括 Service、REST API |
Admin User 列表 | User 列表查询,包括 Service、REST API |
Admin User 信息 | 获取 User 信息,包括 Service、REST API |
Admin User 创建 | 创建 User,包括 Service、REST API |
Admin User 删除 | 删除 User,包括 Service、REST API |
Admin Group 列表 | Group 列表查询,包括 Service、REST API |
Admin Group 信息 | 获取 Group 信息,包括 Service、REST API |
Admin Group 创建 | 创建 Group,包括 Service、REST API |
Admin Group 删除 | 删除 Group,包括 Service、REST API |
Admin Policy 列表 | Policy 列表查询,包括 Service、REST API |
Admin Policy 创建 | 创建 Policy,包括 Service、REST API |
Admin Policy 删除 | 删除 Policy,包括 Service、REST API |
Admin Bucket 配额设置 | 存储桶配额设置,包括 Service |
Admin Bucket 配额获取 | 存储桶配额获取,包括 Service |
Admin Bucket 配额清除 | 存储桶配额清除,包括 Service |
其它功能 | 正逐步完善,主要涉及前后端交互、以及可用性验证和前端相关功能的开发,敬请期待,欢迎 PR |
- [2] 扩展功能
功能 | 说明 |
---|---|
创建分片上传请求 | 创建分片上传请求,返回 Minio UploadId |
创建文件预上传地址 | 根据 UploadId 和 指定的分片数量,返回数量像匹配的 Minio 与上传地址 |
获取所有分片文件 | 获取指定 uploadId 下所有的分片文件 |
创建大文件分片上传 | 统一的创建大文件分片上传业务逻辑封装,减少前后端反复交互, 包括 Service、REST API |
合并已经上传完成的分片 | 根据 UploadId 合并已经上传完成的分片,完成大文件分片上传 包括 Service、REST API |
统一常量接口 | 将涉及的 Enums、常量以统一接口的方式返回给前端,方便展示使用, 包括 Service、REST API 和前端展示 |
Minio Client 对象池 | 实现 Minio Client 对象池,减少 Minio Client 的反复创建和销毁,提升访问 Minio Server 性能 |
Minio Async Client 对象池 | 实现 Minio Async Client 对象池,减少 Minio Async Client 的反复创建和销毁,提升访问 Minio Server 性能 |
Minio Admin 对象池 | 实现 Minio Admin 对象池,减少 Minio Admin 的反复创建和销毁,提升访问 Minio Server 性能 |
Bucket 设置 | 统一 Bucket 设置: Bucket 标签设置、访问策略、加密方式、对象锁定、版本控制、保留设置等, 包括 Service、REST API 和前端展示 |
Object 设置 | 统一 Object 设置: Bucket 标签设置, 包括 Service、REST API 和前端展示 |
Object 下载(流模式) | Minio 对象下载,采用流模式支持 vue 前端 post 方式下载, 包括 Service、REST API 和前端展示 |
超轻量级反向代理 | 实现轻量级反向代理解决 PresignedObjectUrl 方式直接向前端暴露 Minio Server 地址问题 |
- [3] 主流方案
功能 | 说明 |
---|---|
OpenAPI 支持 | 在支持 Open API 环境下,显示 Swagger 文档,建议使用 Springdoc |
与 Spring Authorization Server 体系集成 | 提供完整的与 Spring Authorization Server 集成,实现认证、授权、鉴权、动态权限等完整案例,包括单体版和微服务版 |
大文件分片上传 | 采用 PresignedObjectUrl 方案的大文件分片上传。扩展 Minio Client,封装相应的 Service、REST API |
vue-simple-uploader | 前端基于 vue-simple-uploader 组件,配合自定义 REST API 实现大文件分片上传 |