Dante OSS首頁、文檔和下載- 簡化Minio 操作- 程式开发

Dante OSS 是一款簡化Minio 操作的開源框架。通過對原有Minio Java SDK 的深度封裝,簡化Minio API 使用複雜度,提升Minio 使用的便捷性,降低Minio 應用開發門檻。

MinIO 是一款高性能、分佈式的對象存儲系統。 Minio 這款開源的分佈式對象存儲服務在國外已經相當受歡迎,並且國內也有多中小型互聯網公司使用它來作為對象存儲服務。雖然Minio 相關的資料和示例在網絡上已經非常豐富,但是為什麼還要推出Dante OSS 這樣的項目?

  • 初次接觸Minio,特別是想要通過Java 集成Minio 開發對象存儲應用是,還是需要投入一定的時間和精力去了解其原理閱讀相關文檔。
  • Minio SDK 中的函數方法,涉及的參數較多,抽象層度比較高,每次使用都需要反複查閱源代碼才能摸清具體使用方式。
  • 想要與已有的應用進行整合,多少都要投入時間精力,進行一定程度的封裝和改造。
  • 網上相關資料多,要么比較零散不成體系,要么比較單一僅針對常規上傳下載應用,Minio 自身很多特性都不涉及。

優點| Advantages

  • 零額外學習成本: 開發者只要會Spring 和REST 基本開發,即可無縫集成和使用Dante OSS
  • 降低開發者門檻: 屏蔽Minio 標準Java SDK 使用複雜度,使用Spring 環境標準方式對原有API 進行簡化封裝。 Service API 和REST API 開箱即用
  • 包含的功能豐富: 改造了Minio Java SDK 的幾乎全部功能,且對大文件分片上傳、秒傳、直傳、斷點續傳等功能,均採用業內最優解決方案進行實現和融合
  • 規範優雅的代碼: 所有函數參數,並未破壞原有Minio 代碼構造器結構,而是在原有方式的基礎上抽像簡化,編程體驗和代碼可讀性大幅提升
  • 完善的註釋文檔: 對請求參數、方法、REST API、Validation 提供詳實的註釋、說明和OpenAPI 標註,用途用法一目了然,無需再翻閱Minio 文檔和源代碼,幫助您節省更多時間
  • 完整的前端示例:前端採用一個完整的項目而非Demo 的形式,全面的展示了前後端交互涉及、接口調用、參數使用、TS 類型定義等各方面內容,可直接用於實際項目或簡單改造後構建自己的產品

對比| Compare

1. 不只是簡單的Spring Boot Starter 構建

  1. 構建統一的錯誤,可以返回更人性化、更易理解的錯誤信息,同時兼顧更詳細錯誤信息的返回,方便開發人員理解和定位問題。
  2. 採用更易理解和使用的格式對Minio Java SDK 參數進行重新定義。規避Minio 默認XML 方式參數多、不易理解使用、與前端交互不方便等問題。
  3. 隱藏Minio Java SDK 不易理解和使用的細節,提供詳實的註釋說明,開發人員在使用時無需再通過翻閱Minio 在線文檔和源代碼來了解各個API 使用細節。
  4. 提供統一標準的REST API,以及OpenAPI Swagger3 文檔描述和準確的Spring Validation 校驗,可直接集成至系統中使用。
  5. Minio Client 對像池、自定義極簡Minio Server 訪問反向代理,提升

2. 標準化業務邏輯和解決方案集合

  1. 不只是上傳、下載等常用方法的封裝,涵蓋Minio Java SDK 支持的所有方法和操作。
  2. 選擇業內最優的解決方案,實現和集成大文件分片上傳、秒傳、直傳、斷點續傳等主要業務需求功能。
  3. 結合自身應用經驗和需求,將Minio API 進一步組合成符合實際應用的業務邏輯和功能處理。
  4. 採用一個基於Vue3、Typescript5、Vite4、Pinia 2 的完整的前端項目作為集成示例,包括詳細的Typescript 類型定義以及vue-simple-uploader 等主流組件集成和使用方法。
  5. 提供基於Spring Authorization Server 的單體版、微服務版案例,從SDK、Spring Boot Starter 到完整項目任你選擇。

結構| Structure

dante-oss
├── oss-bom -- 工程Maven顶级依赖,统一控制版本和依赖
├── oss-minio -- Minio 模组
├    ├── minio-core -- Minio 通用代码包
├    ├── minio-sdk-api -- Minio 基础API封装模块
├    ├── minio-sdk-logic -- 基于Minio扩展应用模块
├    ├── minio-sdk-rest -- 基于Minio扩展的REST接口模块
└──  └── minio-spring-boot-starter -- Minio Starter

功能| function

功能說明
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、
其它功能正逐步完善,主要涉及前後端交互、以及可用性驗證和前端相關功能的開發,敬請期待,歡迎PR
功能說明
創建分片上傳請求創建分片上傳請求,返回Minio UploadId
創建文件預上傳地址根據UploadId 和指定的分片數量,返回數量像匹配的Minio 與上傳地址
獲取所有分片文件獲取指定uploadId 下所有的分片文件
創建大文件分片上傳統一的創建大文件分片上傳業務邏輯封裝,減少前後端反復交互, 包括Service、REST API
合併已經上傳完成的分片根據UploadId 合併已經上傳完成的分片,完成大文件分片上傳包括Service、REST API
統一常量接口將涉及的Enums、常量以統一接口的方式返回給前端,方便展示使用, 包括Service、REST API 和前端展示
Minio Client 對像池實現Minio Client 對像池,減少Minio Client 的反复創建和銷毀,提升訪問Minio Server 机能
Bucket 設置統一Bucket 設置: Bucket 標籤設置、訪問策略、加密方式、對象鎖定等, 包括Service、REST API 和前端展示
Object 下載(流模式)Minio 對像下載,採用流模式支持vue 前端post 方式下載, 包括Service、REST API 和前端展示
超輕量級反向代理實現輕量級反向代理解決PresignedObjectUrl 方式直接向前端暴露Minio Server 地址問題
功能說明
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 實現大文件分片上傳

使用| How to use

  1. maven 中引入
<dependency>
    <groupId>cn.herodotus.oss</groupId>
    <artifactId>minio-spring-boot-starter</artifactId>
    <version>最新版本</version>
</dependency>
  1. 配置yml 參數
herodotus:
  oss:
    minio:
      endpoint: http://127.0.0.1:9000
      access-key: xxxxxx
      secret-key: xxxxxx
  1. 統一錯誤處理
// 参考代码
public static Result<String> resolveException(Exception ex, String path) {
    return GlobalExceptionHandler.resolveException(ex, path);
}

// 或者

@ExceptionHandler({HerodotusException.class, PlatformException.class})
public static Result<String> exception(Exception ex, HttpServletRequest request, HttpServletResponse response) {
    ······
}

貢獻| Committer

  1. 在Gitee fork 項目到自己的repo
  2. 把fork 過去的項目也就是你的項目clone 到你的本地
  3. 修改代碼(記得一定要修改develop 分支)
  4. commit 程式碼,push 到自己的庫(develop 分支)
  5. 登錄Gitee 在你首頁可以看到一個pull request 按鈕,點擊它,填寫一些說明信息,然後提交即可。
  6. 等待維護者合併

反饋| Feedback

  • 歡迎提交ISSUS ,請寫清楚問題的具體原因,重現步驟和環境

#Dante #OSS首頁文檔和下載 #簡化Minio #操作 #程式开发

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *